summaryrefslogtreecommitdiff
blob: cf4d859fe4ef5fa6d683bc301b35caa50e725337 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
commit 713c6b25dce2fc60184ddc7b618b0b1195ab9870
Author: Martin Gräßlin <mgraesslin@kde.org>
Date:   Fri May 8 08:53:34 2015 +0200

    [kwinglutils] Init glVersion on gles
    
    The glVersion was not set at all for gles causing any code doing a
    hasGLVersion check to fail which means that the compositor doesn't
    start at all, because it has a hasGLVersion(2, 0) check.
    
    The complete ifdef is no longer needed. The used additional glGetStringi
    is also available in gles 3.0, thus epoxy can handle it quite well
    without a need for ifdef.
    
    Unfortunately the version string can be "strange" on GLES. On desktop
    it looks like: "3.0 some driver foo", on GLES it could also be:
    "OpenGL ES 3.0 some driver bar". Thus to make the logic work we are
    first removing any leading "OpenGL ES " and hope that then the version
    is encoded just like on GL.

diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp
index 8830c44..fd2e217 100644
--- a/libkwineffects/kwinglutils.cpp
+++ b/libkwineffects/kwinglutils.cpp
@@ -106,11 +106,12 @@ void initGL(OpenGLPlatformInterface platformInterface)
 {
     // Get OpenGL version
     QString glversionstring = QString::fromUtf8((const char*)glGetString(GL_VERSION));
+    if (glversionstring.startsWith(QLatin1String("OpenGL ES "))) {
+        glversionstring = glversionstring.mid(10);
+    }
     QStringList glversioninfo = glversionstring.left(glversionstring.indexOf(QStringLiteral(" "))).split(QStringLiteral("."));
     while (glversioninfo.count() < 3)
         glversioninfo << QStringLiteral("0");
-
-#ifndef KWIN_HAVE_OPENGLES
     glVersion = MAKE_GL_VERSION(glversioninfo[0].toInt(), glversioninfo[1].toInt(), glversioninfo[2].toInt());
 
     // Get list of supported OpenGL extensions
@@ -123,7 +124,6 @@ void initGL(OpenGLPlatformInterface platformInterface)
             glExtensions << name;
         }
     } else
-#endif
         glExtensions = QByteArray((const char*)glGetString(GL_EXTENSIONS)).split(' ');
 
     // handle OpenGL extensions functions