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

--- Comment #10 from Thomas Lübking <thomas.luebk...@gmail.com> ---
Because of bug #355522
=> Bottom line would be that we need to store the robustness locally, what also
means to wire it up from the backend to the glutils. Ewww.

Something along this?

diff --git a/glxbackend.cpp b/glxbackend.cpp
index c59c647..c632082 100644
--- a/glxbackend.cpp
+++ b/glxbackend.cpp
@@ -286,13 +286,20 @@ bool GlxBackend::initRenderingContext()

             if (!ctx)
                 ctx = glXCreateContextAttribsARB(display(), fbconfig, 0,
direct, attribs_31_core);
+            if (ctx) {
+                blacklistGLExtension(QByteArrayLiteral("GL_ARB_robustness"));
+                blacklistGLExtension(QByteArrayLiteral("GL_EXT_robustness"));
+            }
         }

         if (!ctx && have_robustness)
             ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct,
attribs_legacy_robustness);

-        if (!ctx)
+        if (!ctx) {
+            blacklistGLExtension(QByteArrayLiteral("GL_ARB_robustness"));
+            blacklistGLExtension(QByteArrayLiteral("GL_EXT_robustness"));
             ctx = glXCreateContextAttribsARB(display(), fbconfig, 0, direct,
attribs_legacy);
+        }
     }

     if (!ctx)
diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp
index bd84db7..c4d33f2 100644
--- a/libkwineffects/kwinglutils.cpp
+++ b/libkwineffects/kwinglutils.cpp
@@ -181,6 +181,13 @@ bool hasGLExtension(const QByteArray &extension)
     return glExtensions.contains(extension) ||
glxExtensions.contains(extension) || eglExtensions.contains(extension);
 }

+void blacklistGLExtension(const QByteArray &extension)
+{
+    glExtensions.removeAll(extension);
+    glxExtensions.removeAll(extension);
+    eglExtensions.removeAll(extension);
+}
+
 static QString formatGLError(GLenum err)
 {
     switch(err) {
diff --git a/libkwineffects/kwinglutils.h b/libkwineffects/kwinglutils.h
index 3c1ac28..e9aa313 100644
--- a/libkwineffects/kwinglutils.h
+++ b/libkwineffects/kwinglutils.h
@@ -69,6 +69,7 @@ bool KWINGLUTILS_EXPORT hasGLXVersion(int major, int minor,
int release = 0);
 bool KWINGLUTILS_EXPORT hasEGLVersion(int major, int minor, int release = 0);
 // use for both OpenGL and GLX extensions
 bool KWINGLUTILS_EXPORT hasGLExtension(const QByteArray &extension);
+void KWINGLUTILS_EXPORT blacklistGLExtension(const QByteArray &extension);

 // detect OpenGL error (add to various places in code to pinpoint the place)
 bool KWINGLUTILS_EXPORT checkGLError(const char* txt);


----

We could also turn this into a wider concept of
"KWIN_IGNORE_GL_EXTENSIONS=GL_EXT_Foo,GL_ARB_Bar"
(which is possible on MESA but afaik not on the blob drivers)

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

Reply via email to