https://bugs.kde.org/show_bug.cgi?id=356992

--- Comment #19 from Thomas Lübking <thomas.luebk...@gmail.com> ---
No, we only want to skip that bit if we've buffer_age support anyway.
I've not looked into it, but guess the extension check requires a context, what
means we cannot depend this bit on the absence of buffer_age - or we cannot
avoid surface recreation - either because it failed due to that bit or because
we skipped the bit initially and afterwards figure we need it because we lack
buffer_age support. This sucks.

Can you debug the result of initEGL?

diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp
index 480e533..abacdaa 100644
--- a/eglonxbackend.cpp
+++ b/eglonxbackend.cpp
@@ -89,6 +89,8 @@ EglOnXBackend::~EglOnXBackend()

 void EglOnXBackend::init()
 {
+    initEgl();       // required to toggle
+    initBufferAge(); // EGL_SWAP_BEHAVIOR_PRESERVED_BIT
     if (!initRenderingContext()) {
         setFailed(QStringLiteral("Could not initialize rendering context"));
         return;
@@ -267,7 +269,7 @@ EGLSurface EglOnXBackend::createSurface(xcb_window_t
window)
 bool EglOnXBackend::initBufferConfigs()
 {
     const EGLint config_attribs[] = {
-        EGL_SURFACE_TYPE,        
EGL_WINDOW_BIT|EGL_SWAP_BEHAVIOR_PRESERVED_BIT,
+        EGL_SURFACE_TYPE,         EGL_WINDOW_BIT|(supportsBufferAge() ? 0 :
EGL_SWAP_BEHAVIOR_PRESERVED_BIT),
         EGL_RED_SIZE,             1,
         EGL_GREEN_SIZE,           1,
         EGL_BLUE_SIZE,            1,
diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp
index 438b785..b44b821 100644
--- a/libkwineffects/kwinglutils.cpp
+++ b/libkwineffects/kwinglutils.cpp
@@ -101,6 +101,7 @@ void initEGL()
     eglVersion = MAKE_GL_VERSION(major, minor, 0);
     const QByteArray string = eglQueryString(dpy, EGL_EXTENSIONS);
     eglExtensions = string.split(' ');
+    qDebug() << eglExtensions;
     eglResolveFunctions();
 }

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to