diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2023-01-25 11:06:59 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-02-14 16:48:19 +0000 |
commit | 7cf7fe93efbfb8a8fd5ff5790c63c3be7dceabe6 (patch) | |
tree | 0fcf816b4023949f93807259cb6253f536e7a495 | |
parent | e3ceb846a290b8cda110b15afcc91f09e76848d4 (diff) | |
download | qtbase-7cf7fe93efbfb8a8fd5ff5790c63c3be7dceabe6.tar.gz |
rhi: gl: Skip the vertex-fragment interface check with more stages
Once tessellation and geometry shader support is added, the check
makes no sense when there are additional stages between the vertex
and fragment stages.
Change-Id: I3d3c0a5b338f5fe191c072a13a8699924f7a6a1b
Reviewed-by: Kristoffer Skau <kristoffer.skau@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
(cherry picked from commit 5476973325288e399f99af004e53184e41892282)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/gui/rhi/qrhigles2.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gui/rhi/qrhigles2.cpp b/src/gui/rhi/qrhigles2.cpp index 89c5d75f29..e97a828c76 100644 --- a/src/gui/rhi/qrhigles2.cpp +++ b/src/gui/rhi/qrhigles2.cpp @@ -5500,9 +5500,12 @@ bool QGles2GraphicsPipeline::create() }; QShaderDescription desc[LastIdx]; QShader::SeparateToCombinedImageSamplerMappingList samplerMappingList[LastIdx]; + bool vertexFragmentOnly = true; for (const QRhiShaderStage &shaderStage : std::as_const(m_shaderStages)) { if (isGraphicsStage(shaderStage)) { const int idx = descIdxForStage(shaderStage); + if (idx != VtxIdx && idx != FragIdx) + vertexFragmentOnly = false; QShader shader = shaderStage.shader(); QShaderVersion shaderVersion; desc[idx] = shader.description(); @@ -5534,7 +5537,8 @@ bool QGles2GraphicsPipeline::create() for (const QShaderDescription::InOutVariable &inVar : desc[VtxIdx].inputVariables()) rhiD->f->glBindAttribLocation(program, GLuint(inVar.location), inVar.name); - rhiD->sanityCheckVertexFragmentInterface(desc[VtxIdx], desc[FragIdx]); + if (vertexFragmentOnly) + rhiD->sanityCheckVertexFragmentInterface(desc[VtxIdx], desc[FragIdx]); if (!rhiD->linkProgram(program)) return false; |