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 <tapani.pa...@intel.com> --- 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; } 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 mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev