From 706af26acc5deeeab17ac135daa23876a69c78dc Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 22 Jun 2015 11:42:08 +0200 Subject: [PATCH] Do not claim TextureRGFormats on Mesa with GLES Mesa provides GL ES 3.0 so using GL_RED in place of GL_ALPHA should work. This is apparently not the case. Task-number: QTBUG-46605 Change-Id: I4f661487b47e9cc11f5de110196ec37150c99c7f Reviewed-by: Allan Sandfeld Jensen --- src/gui/opengl/qopenglfunctions.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp index 88dd897820..8ddb693e73 100644 --- a/src/gui/opengl/qopenglfunctions.cpp +++ b/src/gui/opengl/qopenglfunctions.cpp @@ -289,8 +289,12 @@ static int qt_gl_resolve_features() if (extensions.match("GL_OES_texture_npot")) features |= QOpenGLFunctions::NPOTTextures | QOpenGLFunctions::NPOTTextureRepeat; - if (ctx->format().majorVersion() >= 3 || extensions.match("GL_EXT_texture_rg")) - features |= QOpenGLFunctions::TextureRGFormats; + if (ctx->format().majorVersion() >= 3 || extensions.match("GL_EXT_texture_rg")) { + // Mesa's GLES implementation (as of 10.6.0) is unable to handle this, even though it provides 3.0. + const char *renderer = reinterpret_cast(ctx->functions()->glGetString(GL_RENDERER)); + if (!(renderer && strstr(renderer, "Mesa"))) + features |= QOpenGLFunctions::TextureRGFormats; + } return features; } else { // OpenGL