Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> Please land soon so the old API can exist for as short a time as possible. :-)
On Thu, Mar 23, 2017 at 8:14 AM, Daniel Stone <dani...@collabora.com> wrote: > The actual offset returned is uint32_t, however int64_t was used as the > return type from gbm_bo_get_offset to allow negative returns to signal > errors to the caller. > > In case of an error getting the offset, the user will also be unable to > get the handle/FD, and thus have nothing to offset into. This means that > returning 0 as an error value is harmless, allowing us to change the > return type to uint32_t in order to avoid signed/unsigned confusion in > callers. > > Signed-off-by: Daniel Stone <dani...@collabora.com> > Cc: Ben Widawsky <b...@bwidawsk.net> > Cc: Jason Ekstrand <ja...@jlekstrand.net> > --- > src/gbm/backends/dri/gbm_dri.c | 18 +++++++++--------- > src/gbm/main/gbm.c | 2 +- > src/gbm/main/gbm.h | 2 +- > src/gbm/main/gbmint.h | 2 +- > 4 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_ > dri.c > index 84b4dd8853..f8c005c15b 100644 > --- a/src/gbm/backends/dri/gbm_dri.c > +++ b/src/gbm/backends/dri/gbm_dri.c > @@ -710,22 +710,22 @@ gbm_dri_bo_get_stride(struct gbm_bo *_bo, int plane) > return (uint32_t)stride; > } > > -static int64_t > +static uint32_t > gbm_dri_bo_get_offset(struct gbm_bo *_bo, int plane) > { > struct gbm_dri_device *dri = gbm_dri_device(_bo->gbm); > struct gbm_dri_bo *bo = gbm_dri_bo(_bo); > int offset = 0; > > - if (!dri->image || dri->image->base.version < 13 || > !dri->image->fromPlanar) { > - errno = ENOSYS; > - return -1; > - } > + /* These error cases do not actually return an error code, as the user > + * will also fail to obtain the handle/FD from the BO. In that case, > the > + * offset is irrelevant, as they have no buffer to offset into, so > + * returning 0 is harmless. */ > + if (!dri->image || dri->image->base.version < 13 || > !dri->image->fromPlanar) > + return 0; > > - if (plane >= get_number_planes(dri, bo->image)) { > - errno = EINVAL; > - return -2; > - } > + if (plane >= get_number_planes(dri, bo->image)) > + return 0; > > /* Dumb images have no offset */ > if (bo->image == NULL) { > diff --git a/src/gbm/main/gbm.c b/src/gbm/main/gbm.c > index 19dc5db901..79d78b763e 100644 > --- a/src/gbm/main/gbm.c > +++ b/src/gbm/main/gbm.c > @@ -203,7 +203,7 @@ gbm_bo_get_format(struct gbm_bo *bo) > * \param bo The buffer object > * \return The offset > */ > -GBM_EXPORT int64_t > +GBM_EXPORT uint32_t > gbm_bo_get_offset(struct gbm_bo *bo, int plane) > { > return bo->gbm->bo_get_offset(bo, plane); > diff --git a/src/gbm/main/gbm.h b/src/gbm/main/gbm.h > index a774b50951..b52137ed01 100644 > --- a/src/gbm/main/gbm.h > +++ b/src/gbm/main/gbm.h > @@ -315,7 +315,7 @@ gbm_bo_get_stride_for_plane(struct gbm_bo *bo, int > plane); > uint32_t > gbm_bo_get_format(struct gbm_bo *bo); > > -int64_t > +uint32_t > gbm_bo_get_offset(struct gbm_bo *bo, int plane); > > struct gbm_device * > diff --git a/src/gbm/main/gbmint.h b/src/gbm/main/gbmint.h > index 5ad85cc80f..c27a7a560a 100644 > --- a/src/gbm/main/gbmint.h > +++ b/src/gbm/main/gbmint.h > @@ -81,7 +81,7 @@ struct gbm_device { > int (*bo_get_planes)(struct gbm_bo *bo); > union gbm_bo_handle (*bo_get_handle)(struct gbm_bo *bo, int plane); > uint32_t (*bo_get_stride)(struct gbm_bo *bo, int plane); > - int64_t (*bo_get_offset)(struct gbm_bo *bo, int plane); > + uint32_t (*bo_get_offset)(struct gbm_bo *bo, int plane); > uint64_t (*bo_get_modifier)(struct gbm_bo *bo); > void (*bo_destroy)(struct gbm_bo *bo); > > -- > 2.12.1 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev