SPV: Add NonUniform decoration for constructors.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 3 Sep 2020 01:09:39 +0000 (03:09 +0200)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Thu, 10 Sep 2020 21:02:54 +0000 (23:02 +0200)
This is missing in particular for OpSampledImage, which can be
a direct argument for texture operations.

SPIRV/GlslangToSpv.cpp

index dd19e77dfef60004fb351fbc2a380409fd1458fe..9670c72d43da560accb914b4722efb97322a0cc1 100644 (file)
@@ -2613,6 +2613,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
         else
             constructed = builder.createConstructor(precision, arguments, resultType());
 
+        if (node->getType().getQualifier().isNonUniform()) {
+            builder.addDecoration(constructed, spv::DecorationNonUniformEXT);
+        }
+
         builder.clearAccessChain();
         builder.setAccessChainRValue(constructed);