diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-09-23 16:10:21 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-09-27 12:00:56 +0200 |
commit | 6bb678bad25eafe76dcebcd1ff184be9de9125bb (patch) | |
tree | 93c1597a28d66d01e304a7f609d0ad09bdd4e9ce /src/quick/scenegraph/qsgrhisupport.cpp | |
parent | 3f44e0fc5f1d55498ce7fb93a7841198a7583a08 (diff) |
Add a QSG env var for QRhi::PreferSoftwareRenderer
Also extend the docs. And while we are at it get rid of
some clang warnings.
Task-number: QTBUG-78669
Change-Id: I4ef15d2d066098ba7bbbd34e80d4e61efe7fba23
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'src/quick/scenegraph/qsgrhisupport.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgrhisupport.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/quick/scenegraph/qsgrhisupport.cpp b/src/quick/scenegraph/qsgrhisupport.cpp index 2c5d8fb2ac..12c6742342 100644 --- a/src/quick/scenegraph/qsgrhisupport.cpp +++ b/src/quick/scenegraph/qsgrhisupport.cpp @@ -101,7 +101,8 @@ QSGRhiSupport::QSGRhiSupport() m_enableRhi(false), m_debugLayer(false), m_profile(false), - m_shaderEffectDebug(false) + m_shaderEffectDebug(false), + m_preferSoftwareRenderer(false) { } @@ -140,7 +141,7 @@ void QSGRhiSupport::applySettings() } } else { // check env.vars., fall back to platform-specific defaults when backend is not set - m_enableRhi = qEnvironmentVariableIntValue("QSG_RHI"); + m_enableRhi = uint(qEnvironmentVariableIntValue("QSG_RHI")); const QByteArray rhiBackend = qgetenv("QSG_RHI_BACKEND"); if (rhiBackend == QByteArrayLiteral("gl") || rhiBackend == QByteArrayLiteral("gles2") @@ -171,12 +172,14 @@ void QSGRhiSupport::applySettings() return; // validation layers (Vulkan) or debug layer (D3D) - m_debugLayer = qEnvironmentVariableIntValue("QSG_RHI_DEBUG_LAYER"); + m_debugLayer = uint(qEnvironmentVariableIntValue("QSG_RHI_DEBUG_LAYER")); // EnableProfiling + DebugMarkers - m_profile = qEnvironmentVariableIntValue("QSG_RHI_PROFILE"); + m_profile = uint(qEnvironmentVariableIntValue("QSG_RHI_PROFILE")); - m_shaderEffectDebug = qEnvironmentVariableIntValue("QSG_RHI_SHADEREFFECT_DEBUG"); + m_shaderEffectDebug = uint(qEnvironmentVariableIntValue("QSG_RHI_SHADEREFFECT_DEBUG")); + + m_preferSoftwareRenderer = uint(qEnvironmentVariableIntValue("QSG_RHI_PREFER_SOFTWARE_RENDERER")); m_killDeviceFrameCount = qEnvironmentVariableIntValue("QSG_RHI_SIMULATE_DEVICE_LOSS"); if (m_killDeviceFrameCount > 0 && m_rhiBackend == QRhi::D3D11) @@ -205,6 +208,8 @@ void QSGRhiSupport::applySettings() qCDebug(QSG_LOG_INFO, "Using QRhi with backend %s\n graphics API debug/validation layers: %d\n QRhi profiling and debug markers: %d", backendName, m_debugLayer, m_profile); + if (m_preferSoftwareRenderer) + qCDebug(QSG_LOG_INFO, "Prioritizing software renderers"); } QSGRhiSupport *QSGRhiSupport::staticInst() @@ -463,6 +468,8 @@ QRhi *QSGRhiSupport::createRhi(QWindow *window, QOffscreenSurface *offscreenSurf QRhi::Flags flags = 0; if (isProfilingRequested()) flags |= QRhi::EnableProfiling | QRhi::EnableDebugMarkers; + if (isSoftwareRendererRequested()) + flags |= QRhi::PreferSoftwareRenderer; QRhi::Implementation backend = rhiBackend(); if (backend == QRhi::Null) { |