Mesa (master): egl: set preserved behavior for surface only if config supports it

Tapani Pälli tpalli at kemper.freedesktop.org
Thu Oct 27 05:48:42 UTC 2016


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

Author: Tapani Pälli <tapani.palli at intel.com>
Date:   Wed Oct 26 13:54:51 2016 +0300

egl: set preserved behavior for surface only if config supports it

Otherwise we can end up with mismatching behavior between config and
surface when client queries surface attributes. As example, configs
for DRI3 do not support preserved behavior but here we were setting
preserved behavior for pixmap and pbuffer.

Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98326
Cc: "12.0 13.0" <mesa-stable at lists.freedesktop.org>
Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
Reviewed-by: Chad Versace <chadversary at chromium.org>
Tested-by: Mark Janes <mark.a.janes at intel.com>

---

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

diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index eb0bdfe..8e56919 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -262,9 +262,13 @@ _eglInitSurface(_EGLSurface *surf, _EGLDisplay *dpy, EGLint type,
 {
    const char *func;
    EGLint renderBuffer = EGL_BACK_BUFFER;
-   EGLint swapBehavior = EGL_BUFFER_PRESERVED;
+   EGLint swapBehavior = EGL_BUFFER_DESTROYED;
    EGLint err;
 
+   /* Swap behavior can be preserved only if config supports this. */
+   if (conf->SurfaceType & EGL_SWAP_BEHAVIOR_PRESERVED_BIT)
+      swapBehavior = EGL_BUFFER_PRESERVED;
+
    switch (type) {
    case EGL_WINDOW_BIT:
       func = "eglCreateWindowSurface";




More information about the mesa-commit mailing list