summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-08-14 10:09:36 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-08-14 12:50:57 +0200
commitd89fc63d7216654f8a72db0c65344620a6e88080 (patch)
tree362eb963bf7cef51e48da7bfbe59225d88d92d5e
parent152a63665627488e1a5aa6ab82fe25e176cf53f1 (diff)
rhi: createShaderProgram only generate shaders for the backend in use
This could otherwise result in shader generation failing for a backend we are not using, in turn preventing anything from being drawn. Change-Id: I3daf137c4f4ed3c7ee50b16602a9c684a7a224e6 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/plugins/renderers/rhi/graphicshelpers/submissioncontext.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/plugins/renderers/rhi/graphicshelpers/submissioncontext.cpp b/src/plugins/renderers/rhi/graphicshelpers/submissioncontext.cpp
index 83b053f6b..02b523b7c 100644
--- a/src/plugins/renderers/rhi/graphicshelpers/submissioncontext.cpp
+++ b/src/plugins/renderers/rhi/graphicshelpers/submissioncontext.cpp
@@ -1675,23 +1675,23 @@ SubmissionContext::ShaderCreationInfo SubmissionContext::createShaderProgram(RHI
QVector<QShaderBaker::GeneratedShader> generatedShaders;
#if QT_FEATURE_vulkan
- generatedShaders.push_back({ QShader::SpirvShader, 100 });
+ if (m_rhi->backend() == QRhi::Vulkan)
+ generatedShaders.push_back({ QShader::SpirvShader, 100 });
#endif
#ifndef QT_NO_OPENGL
- // GLES2 RHI backend does not seem to support compute
- //if (shaderCode.at(QShaderProgram::Compute).isEmpty())
- {
- generatedShaders.push_back({ QShader::GlslShader, glslVersionForFormat(format()) });
- }
+ if (m_rhi->backend() == QRhi::OpenGLES2)
+ generatedShaders.push_back({ QShader::GlslShader, glslVersionForFormat(format()) });
#endif
#ifdef Q_OS_WIN
- generatedShaders.push_back({ QShader::HlslShader, QShaderVersion(50) });
+ if (m_rhi->backend() == QRhi::D3D11)
+ generatedShaders.push_back({ QShader::HlslShader, QShaderVersion(50) });
#endif
#ifdef Q_OS_MACOS
- generatedShaders.push_back({ QShader::MslShader, QShaderVersion(12) });
+ if (m_rhi->backend() == QRhi::Metal)
+ generatedShaders.push_back({ QShader::MslShader, QShaderVersion(12) });
#endif
QVector<QShader::Variant> generatedShaderVariants(generatedShaders.size());