File 0002-Skip-processing-unknown-uniforms.patch of Package libqt5-qtquick3d.35247

From ff3d6efeb62575a5af503ee19db462cc6ff980e2 Mon Sep 17 00:00:00 2001
From: Inho Lee <inho.lee@qt.io>
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 <laszlo.agocs@qt.io>
---
 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

openSUSE Build Service is sponsored by