[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.
This commit is contained in:
Martin Gräßlin 2015-05-08 08:53:34 +02:00
parent 2a8d7664b3
commit 713c6b25dc

View file

@ -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