From: Tapani Pälli Date: Wed, 26 Oct 2016 10:54:51 +0000 (+0300) Subject: egl: set preserved behavior for surface only if config supports it X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2035930966b05a7c4dd1f6559d66b5a3b41e01a5;p=mesa.git 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 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98326 Cc: "12.0 13.0" Reviewed-by: Eric Engestrom Reviewed-by: Chad Versace Tested-by: Mark Janes --- diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c index eb0bdfeca28..8e56919a429 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";