On Thursday, 2017-06-08 13:10:58 +0300, Tapani Pälli wrote: > Specification states that in case of error, value should not be > written, patch changes buffer age queries to return -1 in case of > error so that we can skip changing the value. > > In addition, small change to droid_query_buffer_age to return 0 > in case buffer does not have a back buffer available. > > Fixes: > dEQP-EGL.functional.negative_partial_update.not_postable_surface > > Signed-off-by: Tapani Pälli <[email protected]> > --- > src/egl/drivers/dri2/platform_android.c | 4 ++-- > src/egl/drivers/dri2/platform_drm.c | 2 +- > src/egl/main/eglsurface.c | 6 +++++- > 3 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/src/egl/drivers/dri2/platform_android.c > b/src/egl/drivers/dri2/platform_android.c > index 48ecb9f..4c97935 100644 > --- a/src/egl/drivers/dri2/platform_android.c > +++ b/src/egl/drivers/dri2/platform_android.c > @@ -614,10 +614,10 @@ droid_query_buffer_age(_EGLDriver *drv, > > if (update_buffers(dri2_surf) < 0) { > _eglError(EGL_BAD_ALLOC, "droid_query_buffer_age"); > - return 0; > + return -1; > } > > - return dri2_surf->back->age; > + return dri2_surf->back ? dri2_surf->back->age : 0;
Nit: this could be a separate commit. Regardless, as one or two commits it all gets: Reviewed-by: Eric Engestrom <[email protected]> Cc: [email protected] > } > > static EGLBoolean > diff --git a/src/egl/drivers/dri2/platform_drm.c > b/src/egl/drivers/dri2/platform_drm.c > index 2f04589..36c89fc 100644 > --- a/src/egl/drivers/dri2/platform_drm.c > +++ b/src/egl/drivers/dri2/platform_drm.c > @@ -464,7 +464,7 @@ dri2_drm_query_buffer_age(_EGLDriver *drv, > > if (get_back_bo(dri2_surf) < 0) { > _eglError(EGL_BAD_ALLOC, "dri2_query_buffer_age"); > - return 0; > + return -1; > } > > return dri2_surf->back->age; > diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c > index e935c83..5b3e83e 100644 > --- a/src/egl/main/eglsurface.c > +++ b/src/egl/main/eglsurface.c > @@ -409,7 +409,11 @@ _eglQuerySurface(_EGLDriver *drv, _EGLDisplay *dpy, > _EGLSurface *surface, > _eglError(EGL_BAD_ATTRIBUTE, "eglQuerySurface"); > return EGL_FALSE; > } > - *value = drv->API.QueryBufferAge(drv, dpy, surface); > + EGLint result = drv->API.QueryBufferAge(drv, dpy, surface); > + /* error happened */ > + if (result < 0) > + return EGL_FALSE; > + *value = result; > break; > default: > _eglError(EGL_BAD_ATTRIBUTE, "eglQuerySurface"); > -- > 2.9.4 > _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
