forked from pool/libqt5-qtbase
154cc92f96
- Update to 5.3.1 * Bugfix release, for more details please see: http://blog.qt.digia.com/blog/2014/06/25/qt-5-3-1-released/ - Drop libqt5-fix-the-modal-dialogs-can-go-behind.patch, merged upstream - Added patches from upstream: 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch -- QTBUG-39648 0002-Properly-check-which-OpenGL-features-are-supported.patch -- QTBUG-39730 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch -- Fix data race on QLoggingCategory 0004-QDBus-fix-data-race-on-isDebugging-bool.patch -- fix data race on isDebugging bool 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428 OBS-URL: https://build.opensuse.org/request/show/238711 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=22
121 lines
5.8 KiB
Diff
121 lines
5.8 KiB
Diff
From 473ed1c1aa67ceb345b20d13c408ed8bd65a9e41 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin@kde.org>
|
|
Date: Wed, 18 Jun 2014 13:03:15 +0200
|
|
Subject: [PATCH 1/1] Properly check which OpenGL features are supported
|
|
|
|
QOpenGLShaderProgram::hasOpenGLShaderPrograms tests whether
|
|
QOpenGLFunctions::Shaders is provided for the given context. As the
|
|
initialization code assumed OpenGL 2 this always was true. But
|
|
unfortunately we still cannot assume that OpenGL 2 is universally
|
|
supported. E.g. indirect rendering (no matter how bad that idea is)
|
|
does not support OpenGL 2 on all hardware and the Shader related
|
|
extensions are not available.
|
|
|
|
This change makes sure that only when OpenGL 2 is available the
|
|
features provided by OpenGL 2 are enabled. If OpenGL 2 is not
|
|
available the extensions are tested. The checks are slightly
|
|
reordered to not do the extension tests at all if OpenGL 2 is
|
|
available.
|
|
|
|
Task-number: QTBUG-39730
|
|
Change-Id: Ic775163e0dcc519925b1287f3c4ca5e8ebf101d5
|
|
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
|
---
|
|
src/gui/opengl/qopenglfunctions.cpp | 78 +++++++++++++++++++------------------
|
|
1 file changed, 40 insertions(+), 38 deletions(-)
|
|
|
|
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
|
|
index a0d1775..bc4a714 100644
|
|
--- a/src/gui/opengl/qopenglfunctions.cpp
|
|
+++ b/src/gui/opengl/qopenglfunctions.cpp
|
|
@@ -283,46 +283,48 @@ static int qt_gl_resolve_features()
|
|
QSurfaceFormat format = QOpenGLContext::currentContext()->format();
|
|
QOpenGLExtensionMatcher extensions;
|
|
|
|
- // Recognize features by extension name.
|
|
- if (extensions.match("GL_ARB_multitexture"))
|
|
- features |= QOpenGLFunctions::Multitexture;
|
|
- if (extensions.match("GL_ARB_shader_objects"))
|
|
- features |= QOpenGLFunctions::Shaders;
|
|
- if (extensions.match("GL_EXT_framebuffer_object") ||
|
|
- extensions.match("GL_ARB_framebuffer_object"))
|
|
- features |= QOpenGLFunctions::Framebuffers;
|
|
- if (extensions.match("GL_EXT_blend_color"))
|
|
- features |= QOpenGLFunctions::BlendColor;
|
|
- if (extensions.match("GL_EXT_blend_equation_separate"))
|
|
- features |= QOpenGLFunctions::BlendEquationSeparate;
|
|
- if (extensions.match("GL_EXT_blend_func_separate"))
|
|
- features |= QOpenGLFunctions::BlendFuncSeparate;
|
|
- if (extensions.match("GL_EXT_blend_subtract"))
|
|
- features |= QOpenGLFunctions::BlendSubtract;
|
|
- if (extensions.match("GL_ARB_texture_compression"))
|
|
- features |= QOpenGLFunctions::CompressedTextures;
|
|
- if (extensions.match("GL_ARB_multisample"))
|
|
- features |= QOpenGLFunctions::Multisample;
|
|
- if (extensions.match("GL_ARB_texture_non_power_of_two"))
|
|
- features |= QOpenGLFunctions::NPOTTextures |
|
|
- QOpenGLFunctions::NPOTTextureRepeat;
|
|
-
|
|
- // assume version 2.0 or higher
|
|
- features |= QOpenGLFunctions::BlendColor |
|
|
- QOpenGLFunctions::BlendEquation |
|
|
- QOpenGLFunctions::Multitexture |
|
|
- QOpenGLFunctions::CompressedTextures |
|
|
- QOpenGLFunctions::Multisample |
|
|
- QOpenGLFunctions::BlendFuncSeparate |
|
|
- QOpenGLFunctions::Buffers |
|
|
- QOpenGLFunctions::Shaders |
|
|
- QOpenGLFunctions::StencilSeparate |
|
|
- QOpenGLFunctions::BlendEquationSeparate |
|
|
- QOpenGLFunctions::NPOTTextures |
|
|
- QOpenGLFunctions::NPOTTextureRepeat;
|
|
-
|
|
if (format.majorVersion() >= 3)
|
|
features |= QOpenGLFunctions::Framebuffers;
|
|
+ else if (extensions.match("GL_EXT_framebuffer_object") ||
|
|
+ extensions.match("GL_ARB_framebuffer_object"))
|
|
+ features |= QOpenGLFunctions::Framebuffers;
|
|
+
|
|
+ if (format.majorVersion() >= 2) {
|
|
+ features |= QOpenGLFunctions::BlendColor |
|
|
+ QOpenGLFunctions::BlendEquation |
|
|
+ QOpenGLFunctions::BlendSubtract |
|
|
+ QOpenGLFunctions::Multitexture |
|
|
+ QOpenGLFunctions::CompressedTextures |
|
|
+ QOpenGLFunctions::Multisample |
|
|
+ QOpenGLFunctions::BlendFuncSeparate |
|
|
+ QOpenGLFunctions::Buffers |
|
|
+ QOpenGLFunctions::Shaders |
|
|
+ QOpenGLFunctions::StencilSeparate |
|
|
+ QOpenGLFunctions::BlendEquationSeparate |
|
|
+ QOpenGLFunctions::NPOTTextures |
|
|
+ QOpenGLFunctions::NPOTTextureRepeat;
|
|
+ } else {
|
|
+ // Recognize features by extension name.
|
|
+ if (extensions.match("GL_ARB_multitexture"))
|
|
+ features |= QOpenGLFunctions::Multitexture;
|
|
+ if (extensions.match("GL_ARB_shader_objects"))
|
|
+ features |= QOpenGLFunctions::Shaders;
|
|
+ if (extensions.match("GL_EXT_blend_color"))
|
|
+ features |= QOpenGLFunctions::BlendColor;
|
|
+ if (extensions.match("GL_EXT_blend_equation_separate"))
|
|
+ features |= QOpenGLFunctions::BlendEquationSeparate;
|
|
+ if (extensions.match("GL_EXT_blend_subtract"))
|
|
+ features |= QOpenGLFunctions::BlendSubtract;
|
|
+ if (extensions.match("GL_EXT_blend_func_separate"))
|
|
+ features |= QOpenGLFunctions::BlendFuncSeparate;
|
|
+ if (extensions.match("GL_ARB_texture_compression"))
|
|
+ features |= QOpenGLFunctions::CompressedTextures;
|
|
+ if (extensions.match("GL_ARB_multisample"))
|
|
+ features |= QOpenGLFunctions::Multisample;
|
|
+ if (extensions.match("GL_ARB_texture_non_power_of_two"))
|
|
+ features |= QOpenGLFunctions::NPOTTextures |
|
|
+ QOpenGLFunctions::NPOTTextureRepeat;
|
|
+ }
|
|
|
|
const QPair<int, int> version = format.version();
|
|
if (version < qMakePair(3, 0)
|
|
--
|
|
1.9.3
|
|
|