GLSL/Vulkan: Warn about arrays of arrays of resources that need bindings.
authorJohn Kessenich <cepheus@frii.com>
Tue, 24 Apr 2018 19:29:12 +0000 (13:29 -0600)
committerJohn Kessenich <cepheus@frii.com>
Tue, 24 Apr 2018 19:29:12 +0000 (13:29 -0600)
Initial way of addressing #1362.

Test/baseResults/spv.AofA.frag.out
glslang/MachineIndependent/ParseHelper.cpp

index 88a313b..aaa9a49 100644 (file)
@@ -1,4 +1,6 @@
 spv.AofA.frag
+WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource 
+
 // Module Version 10000
 // Generated by (magic number): 80006
 // Id's are bound by 104
index 4f81e21..cf808f1 100644 (file)
@@ -4791,6 +4791,14 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
         }
     }
 
+    // some things can't have arrays of arrays
+    if (type.isArrayOfArrays()) {
+        if (spvVersion.vulkan > 0) {
+            if (type.isOpaque() || (type.getQualifier().isUniformOrBuffer() && type.getBasicType() == EbtBlock))
+                warn(loc, "Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource", "[][]", "");
+        }
+    }
+
     // "The offset qualifier can only be used on block members of blocks..."
     if (qualifier.hasOffset()) {
         if (type.getBasicType() == EbtBlock)