mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-16 04:00:33 +01:00
egl: fix _eglQuerySurface in EGL_BUFFER_AGE_EXT case
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.palli@intel.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Chad Versace <chadversary@chromium.org> Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
parent
c2464271a0
commit
8fac894f9b
4 changed files with 9 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -810,7 +810,7 @@ dri2_wl_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;
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue