diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-08-14 10:09:36 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-08-14 12:50:57 +0200 |
commit | d89fc63d7216654f8a72db0c65344620a6e88080 (patch) | |
tree | 362eb963bf7cef51e48da7bfbe59225d88d92d5e | |
parent | 152a63665627488e1a5aa6ab82fe25e176cf53f1 (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.cpp | 16 |
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()); |