diff options
author | Liang Qi <liang.qi@qt.io> | 2018-10-23 12:07:05 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-10-23 10:17:48 +0000 |
commit | a3670dd982f83d5eaf4990ec202af4ce61c2f164 (patch) | |
tree | 715d791d88f4ead971accbd672eea21b4884e290 /src/plugins | |
parent | 1288c5b0bbdb51cf4467c84cc9bfd5b03972b5c5 (diff) | |
parent | 81b29a44d248b5037a2f05dd8815e000d9472f0e (diff) |
Merge remote-tracking branch 'origin/5.9.7' into 5.9
Conflicts:
config.tests/openssl/openssl.cpp
src/plugins/platforms/windows/qwindowsintegration.cpp
Change-Id: I93ad86751693f4f64981f1c3723bac2061c05379
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsintegration.cpp | 10 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsopengltester.cpp | 28 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsopengltester.h | 5 |
3 files changed, 19 insertions, 24 deletions
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 30859a5c78..2303d59cba 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -386,7 +386,7 @@ QWindowsStaticOpenGLContext *QWindowsStaticOpenGLContext::doCreate() switch (requestedRenderer) { case QWindowsOpenGLTester::DesktopGl: if (QWindowsStaticOpenGLContext *glCtx = QOpenGLStaticContext::create()) { - if ((QWindowsOpenGLTester::supportedRenderers() & QWindowsOpenGLTester::DisableRotationFlag) + if ((QWindowsOpenGLTester::supportedRenderers(requestedRenderer) & QWindowsOpenGLTester::DisableRotationFlag) && !QWindowsScreen::setOrientationPreference(Qt::LandscapeOrientation)) { qCWarning(lcQpaGl, "Unable to disable rotation."); } @@ -400,19 +400,19 @@ QWindowsStaticOpenGLContext *QWindowsStaticOpenGLContext::doCreate() case QWindowsOpenGLTester::AngleRendererD3d11Warp: return QWindowsEGLStaticContext::create(requestedRenderer); case QWindowsOpenGLTester::Gles: - return QWindowsEGLStaticContext::create(QWindowsOpenGLTester::supportedGlesRenderers()); + return QWindowsEGLStaticContext::create(requestedRenderer); case QWindowsOpenGLTester::SoftwareRasterizer: if (QWindowsStaticOpenGLContext *swCtx = QOpenGLStaticContext::create(true)) return swCtx; qCWarning(lcQpaGl, "Software OpenGL failed. Falling back to system OpenGL."); - if (QWindowsOpenGLTester::supportedRenderers() & QWindowsOpenGLTester::DesktopGl) + if (QWindowsOpenGLTester::supportedRenderers(requestedRenderer) & QWindowsOpenGLTester::DesktopGl) return QOpenGLStaticContext::create(); return Q_NULLPTR; default: break; } - const QWindowsOpenGLTester::Renderers supportedRenderers = QWindowsOpenGLTester::supportedRenderers(); + const QWindowsOpenGLTester::Renderers supportedRenderers = QWindowsOpenGLTester::supportedRenderers(requestedRenderer); if (supportedRenderers.testFlag(QWindowsOpenGLTester::DisableProgramCacheFlag) && !QCoreApplication::testAttribute(Qt::AA_DisableShaderDiskCache)) { QCoreApplication::setAttribute(Qt::AA_DisableShaderDiskCache); @@ -434,7 +434,7 @@ QWindowsStaticOpenGLContext *QWindowsStaticOpenGLContext::doCreate() #elif defined(QT_OPENGL_ES_2) QWindowsOpenGLTester::Renderers glesRenderers = QWindowsOpenGLTester::requestedGlesRenderer(); if (glesRenderers == QWindowsOpenGLTester::InvalidRenderer) - glesRenderers = QWindowsOpenGLTester::supportedGlesRenderers(); + glesRenderers = QWindowsOpenGLTester::supportedRenderers(QWindowsOpenGLTester::AngleRendererD3d11); return QWindowsEGLStaticContext::create(glesRenderers); #elif !defined(QT_NO_OPENGL) return QOpenGLStaticContext::create(); diff --git a/src/plugins/platforms/windows/qwindowsopengltester.cpp b/src/plugins/platforms/windows/qwindowsopengltester.cpp index 564350bf88..6f86ae90b6 100644 --- a/src/plugins/platforms/windows/qwindowsopengltester.cpp +++ b/src/plugins/platforms/windows/qwindowsopengltester.cpp @@ -205,11 +205,12 @@ typedef QHash<QOpenGLConfig::Gpu, QWindowsOpenGLTester::Renderers> SupportedRend Q_GLOBAL_STATIC(SupportedRenderersCache, supportedRenderersCache) #endif -QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::detectSupportedRenderers(const GpuDescription &gpu, bool glesOnly) +QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::detectSupportedRenderers(const GpuDescription &gpu, + Renderer requested) { - Q_UNUSED(gpu) - Q_UNUSED(glesOnly) #if defined(QT_NO_OPENGL) + Q_UNUSED(gpu) + Q_UNUSED(requested) return 0; #else QOpenGLConfig::Gpu qgpu = QOpenGLConfig::Gpu::fromDevice(gpu.vendorId, gpu.deviceId, gpu.driverVersion, gpu.description); @@ -223,8 +224,11 @@ QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::detectSupportedRenderers(c | QWindowsOpenGLTester::AngleRendererD3d11Warp | QWindowsOpenGLTester::SoftwareRasterizer); - if (!glesOnly && testDesktopGL()) - result |= QWindowsOpenGLTester::DesktopGl; + // Don't test for GL if explicitly requested or GLES only is requested + if (requested == DesktopGl + || ((requested & GlesMask) == 0 && testDesktopGL())) { + result |= QWindowsOpenGLTester::DesktopGl; + } const char bugListFileVar[] = "QT_OPENGL_BUGLIST"; QString buglistFileName = QStringLiteral(":/qt-project.org/windows/openglblacklists/default.json"); @@ -268,19 +272,11 @@ QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::detectSupportedRenderers(c #endif // !QT_NO_OPENGL } -QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::supportedGlesRenderers() -{ - const GpuDescription gpu = GpuDescription::detect(); - const QWindowsOpenGLTester::Renderers result = detectSupportedRenderers(gpu, true); - qCDebug(lcQpaGl) << __FUNCTION__ << gpu << "renderer: " << result; - return result; -} - -QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::supportedRenderers() +QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::supportedRenderers(Renderer requested) { const GpuDescription gpu = GpuDescription::detect(); - const QWindowsOpenGLTester::Renderers result = detectSupportedRenderers(gpu, false); - qCDebug(lcQpaGl) << __FUNCTION__ << gpu << "renderer: " << result; + const QWindowsOpenGLTester::Renderers result = detectSupportedRenderers(gpu, requested); + qCDebug(lcQpaGl) << __FUNCTION__ << gpu << requested << "renderer: " << result; return result; } diff --git a/src/plugins/platforms/windows/qwindowsopengltester.h b/src/plugins/platforms/windows/qwindowsopengltester.h index 987ac2b9ef..e0b1976c2a 100644 --- a/src/plugins/platforms/windows/qwindowsopengltester.h +++ b/src/plugins/platforms/windows/qwindowsopengltester.h @@ -90,11 +90,10 @@ public: static Renderer requestedGlesRenderer(); static Renderer requestedRenderer(); - static Renderers supportedGlesRenderers(); - static Renderers supportedRenderers(); + static QWindowsOpenGLTester::Renderers supportedRenderers(Renderer requested); private: - static QWindowsOpenGLTester::Renderers detectSupportedRenderers(const GpuDescription &gpu, bool glesOnly); + static Renderers detectSupportedRenderers(const GpuDescription &gpu, Renderer requested); static bool testDesktopGL(); }; |