egl: Emit error when EGLSurface is lost
authorChad Versace <chadversary@chromium.org>
Fri, 5 May 2017 00:46:33 +0000 (17:46 -0700)
committerChad Versace <chadversary@chromium.org>
Fri, 5 May 2017 00:46:33 +0000 (17:46 -0700)
commit23c86c74cc450a23848b85cfe914376caede1cdf
treed6c13a8d1a82849afcad93409ae9140a14d76297
parent69e6eab6533ff48f72223cd21ef640242c52598b
egl: Emit error when EGLSurface is lost

Add a new bool, _EGLSurface::Lost, and check it in eglMakeCurrent and
eglSwapBuffers. The EGL 1.5 spec says that those functions emit errors
when the native surface is no longer valid.

This patch just updates core EGL. No driver sets _EGLSurface::Lost yet.

I discovered that Mesa failed to detect lost surfaces while debugging an
Android CTS camera test,
android.hardware.camera2.cts.RobustnessTest#testAbandonRepeatingRequestSurface.
This patch doesn't fix the test though, though, because the test expects
EGL_BAD_SURFACE when the surface becomes lost, and this patch actually
complies with the EGL spec. If I interpreted the EGL spec correctly,
EGL_BAD_NATIVE_WINDOW or EGL_BAD_CURRENT_SURFACE is the correct error.

Cc: mesa-stable@lists.freedesktop.org
Cc: Tomasz Figa <tfiga@chromium.org>
Cc: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
src/egl/main/eglapi.c
src/egl/main/eglsurface.c
src/egl/main/eglsurface.h