From ff3d6efeb62575a5af503ee19db462cc6ff980e2 Mon Sep 17 00:00:00 2001 From: Inho Lee Date: Mon, 17 Apr 2023 16:09:57 +0200 Subject: [PATCH] Skip processing unknown uniforms While processing shader uniforms, it can face vendor specific uniforms. Quick3D will skip them because they are not interesting in the pipeline. And for GL_TEXTURE_2D_MULTISAMPLE, pnames which are related with sampler states, are not allowed. So, they will not be set. Fixes: QTBUG-110039 Change-Id: I2f5b6e0103defbcac6890fd1d0c99dffe78c4b36 Reviewed-by: Laszlo Agocs --- src/render/backends/gl/qssgopenglutil_p.h | 1 - src/render/qssgrendershaderprogram.cpp | 7 +++++-- src/render/qssgrendertexturebase.cpp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/render/backends/gl/qssgopenglutil_p.h b/src/render/backends/gl/qssgopenglutil_p.h index 28b01fa62..66e780c14 100644 --- a/src/render/backends/gl/qssgopenglutil_p.h +++ b/src/render/backends/gl/qssgopenglutil_p.h @@ -1796,7 +1796,6 @@ struct GLConversion default: break; } - Q_ASSERT(false); return QSSGRenderShaderDataType::Unknown; } diff --git a/src/render/qssgrendershaderprogram.cpp b/src/render/qssgrendershaderprogram.cpp index f6a25c15c..80b8955e7 100644 --- a/src/render/qssgrendershaderprogram.cpp +++ b/src/render/qssgrendershaderprogram.cpp @@ -649,14 +649,17 @@ void QSSGRenderShaderProgram::getShaderParameters() for (int idx = 0; idx != constantCount; ++idx) { location = m_backend->getConstantInfoByID(m_handle, idx, 512, &elementCount, &type, &binding, nameBuf); + if (location == -1 || type == QSSGRenderShaderDataType::Unknown) + continue; + // sampler arrays have different type if (type == QSSGRenderShaderDataType::Texture2D && elementCount > 1) { type = QSSGRenderShaderDataType::Texture2DHandle; } else if (type == QSSGRenderShaderDataType::TextureCube && elementCount > 1) { type = QSSGRenderShaderDataType::TextureCubeHandle; } - if (location != -1) - m_constants.insert(nameBuf, shaderConstantFactory(nameBuf, location, elementCount, type, binding)); + + m_constants.insert(nameBuf, shaderConstantFactory(nameBuf, location, elementCount, type, binding)); } // next query constant buffers info diff --git a/src/render/qssgrendertexturebase.cpp b/src/render/qssgrendertexturebase.cpp index 5a191a0ca..b526bb393 100644 --- a/src/render/qssgrendertexturebase.cpp +++ b/src/render/qssgrendertexturebase.cpp @@ -196,7 +196,7 @@ void QSSGRenderTextureBase::setTextureCompareFunc(QSSGRenderTextureCompareOp val void QSSGRenderTextureBase::applyTexParams() { - if (m_samplerParamsDirty) { + if (m_samplerParamsDirty && m_texTarget != QSSGRenderTextureTargetType::Texture2D_MS) { m_backend->updateSampler(m_sampler->handle(), m_texTarget, m_sampler->minFilter, -- GitLab