Mesa (master): egl: Add eglQuerySurface surface type check for EGL_LARGEST_PBUFFER attrib

Eric Anholt anholt at kemper.freedesktop.org
Wed Aug 5 03:10:46 UTC 2015


Module: Mesa
Branch: master
Commit: b2c5986ea1c8e66c4e0a05bcacbcf28c27f5b183
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b2c5986ea1c8e66c4e0a05bcacbcf28c27f5b183

Author: Frank Binns <frank.binns at imgtec.com>
Date:   Fri Jul 31 09:11:45 2015 +0100

egl: Add eglQuerySurface surface type check for EGL_LARGEST_PBUFFER attrib

Calling eglQuerySurface on a window or pixmap with the EGL_LARGEST_PBUFFER
attribute resulted in the contents of the 'value' parameter being modified.
This is the wrong behaviour according to the EGL spec, which states:

    "Querying EGL_LARGEST_PBUFFER for a pbuffer surface returns the
     same attribute value specified when the surface was created with
     eglCreatePbufferSurface. For a window or pixmap surface, the
     contents of value are not modified."

Avoid this from happening by checking that the surface type is EGL_PBUFFER_BIT
before modifying the contents of the parameter.

Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Frank Binns <frank.binns at imgtec.com>
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/egl/main/eglsurface.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index 541353f..4fa43f3 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -326,7 +326,8 @@ _eglQuerySurface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface,
       *value = surface->Config->ConfigID;
       break;
    case EGL_LARGEST_PBUFFER:
-      *value = surface->LargestPbuffer;
+      if (surface->Type == EGL_PBUFFER_BIT)
+         *value = surface->LargestPbuffer;
       break;
    case EGL_TEXTURE_FORMAT:
       /* texture attributes: only for pbuffers, no error otherwise */




More information about the mesa-commit mailing list