Windows Open GL blacklist: Introduce keyword "disable_rotation".
Add a flag to disable rotation to the Renderers enumeration of QWindowsOpenGLTester triggered by the keyword "disable_rotation". Specifying this keyword forces the application to landscape mode for Desktop GL. It is intended for drivers that have issues with rotation. Task-number: QTBUG-49541 Change-Id: I0f0bb7415c59e98648be09b34a59dd201d52b211 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This commit is contained in:
parent
e5ca416e2f
commit
b4c8e15174
@ -338,11 +338,18 @@ QWindowsWindow *QWindowsIntegration::createPlatformWindowHelper(QWindow *window,
|
||||
QWindowsStaticOpenGLContext *QWindowsStaticOpenGLContext::doCreate()
|
||||
{
|
||||
#if defined(QT_OPENGL_DYNAMIC)
|
||||
const QWindowsOpenGLTester::Renderers supportedRenderers = QWindowsOpenGLTester::supportedRenderers();
|
||||
|
||||
QWindowsOpenGLTester::Renderer requestedRenderer = QWindowsOpenGLTester::requestedRenderer();
|
||||
switch (requestedRenderer) {
|
||||
case QWindowsOpenGLTester::DesktopGl:
|
||||
if (QWindowsStaticOpenGLContext *glCtx = QOpenGLStaticContext::create())
|
||||
if (QWindowsStaticOpenGLContext *glCtx = QOpenGLStaticContext::create()) {
|
||||
if ((supportedRenderers & QWindowsOpenGLTester::DisableRotationFlag)
|
||||
&& !QWindowsScreen::setOrientationPreference(Qt::LandscapeOrientation)) {
|
||||
qCWarning(lcQpaGl, "Unable to disable rotation.");
|
||||
}
|
||||
return glCtx;
|
||||
}
|
||||
qCWarning(lcQpaGl, "System OpenGL failed. Falling back to Software OpenGL.");
|
||||
return QOpenGLStaticContext::create(true);
|
||||
// If ANGLE is requested, use it, don't try anything else.
|
||||
@ -363,10 +370,14 @@ QWindowsStaticOpenGLContext *QWindowsStaticOpenGLContext::doCreate()
|
||||
break;
|
||||
}
|
||||
|
||||
const QWindowsOpenGLTester::Renderers supportedRenderers = QWindowsOpenGLTester::supportedRenderers();
|
||||
if (supportedRenderers & QWindowsOpenGLTester::DesktopGl) {
|
||||
if (QWindowsStaticOpenGLContext *glCtx = QOpenGLStaticContext::create())
|
||||
if (QWindowsStaticOpenGLContext *glCtx = QOpenGLStaticContext::create()) {
|
||||
if ((supportedRenderers & QWindowsOpenGLTester::DisableRotationFlag)
|
||||
&& !QWindowsScreen::setOrientationPreference(Qt::LandscapeOrientation)) {
|
||||
qCWarning(lcQpaGl, "Unable to disable rotation.");
|
||||
}
|
||||
return glCtx;
|
||||
}
|
||||
}
|
||||
if (QWindowsOpenGLTester::Renderers glesRenderers = supportedRenderers & QWindowsOpenGLTester::GlesMask) {
|
||||
if (QWindowsEGLStaticContext *eglCtx = QWindowsEGLStaticContext::create(glesRenderers))
|
||||
|
@ -268,7 +268,10 @@ QWindowsOpenGLTester::Renderers QWindowsOpenGLTester::detectSupportedRenderers(c
|
||||
result &= ~QWindowsOpenGLTester::AngleRendererD3d9;
|
||||
}
|
||||
}
|
||||
|
||||
if (features.contains(QStringLiteral("disable_rotation"))) {
|
||||
qCDebug(lcQpaGl) << "Disabling rotation: " << gpu;
|
||||
result |= DisableRotationFlag;
|
||||
}
|
||||
srCache->insert(qgpu, result);
|
||||
return result;
|
||||
#endif // !Q_OS_WINCE && !QT_NO_OPENGL
|
||||
|
@ -76,7 +76,9 @@ public:
|
||||
AngleBackendMask = AngleRendererD3d11 | AngleRendererD3d9 | AngleRendererD3d11Warp,
|
||||
Gles = 0x0010, // ANGLE/unspecified or Generic GLES for Windows CE.
|
||||
GlesMask = Gles | AngleBackendMask,
|
||||
SoftwareRasterizer = 0x0020
|
||||
SoftwareRasterizer = 0x0020,
|
||||
RendererMask = 0x00FF,
|
||||
DisableRotationFlag = 0x0100
|
||||
};
|
||||
Q_DECLARE_FLAGS(Renderers, Renderer)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user