Merge pull request #2787 from greg-lunarg/i2779
Allow 8/16-bit integer as array index
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index 80e9916..06a1a5a 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -28,8 +28,6 @@
MemberDecorate 26(block) 0 Offset 0
MemberDecorate 26(block) 1 Offset 16
Decorate 26(block) BufferBlock
- Decorate 28 DescriptorSet 0
- Decorate 28 Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index f8f3fd6..b708537 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -31,8 +31,6 @@
MemberDecorate 37(block) 0 Offset 0
MemberDecorate 37(block) 1 Offset 16
Decorate 37(block) BufferBlock
- Decorate 39 DescriptorSet 0
- Decorate 39 Binding 2
Decorate 50(accNV1) DescriptorSet 0
Decorate 50(accNV1) Binding 1
Decorate 53(payload) Location 0
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index f6b79c5..48509b0 100644
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -30,8 +30,6 @@
MemberDecorate 37(block) 0 Offset 0
MemberDecorate 37(block) 1 Offset 16
Decorate 37(block) Block
- Decorate 39 DescriptorSet 0
- Decorate 39 Binding 1
Decorate 52(payload) Location 0
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index 63a04b3..8ddfca9 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -37,8 +37,6 @@
MemberDecorate 34(block) 1 Offset 16
MemberDecorate 34(block) 2 Offset 28
Decorate 34(block) BufferBlock
- Decorate 36 DescriptorSet 0
- Decorate 36 Binding 2
Decorate 60(accNV1) DescriptorSet 0
Decorate 60(accNV1) Binding 1
Decorate 75 DecorationNonUniformEXT
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
index 60b5e93..95d9213 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
@@ -49,8 +49,6 @@
MemberDecorate 36(block) 9 Offset 120
MemberDecorate 36(block) 10 Offset 128
Decorate 36(block) Block
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 0
Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
index cc175f7..f5e32c1 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
@@ -49,8 +49,6 @@
MemberDecorate 36(block) 9 Offset 136
MemberDecorate 36(block) 10 Offset 144
Decorate 36(block) Block
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 0
Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
index afcfa9c..d952adf 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
@@ -49,8 +49,6 @@
MemberDecorate 36(block) 9 Offset 120
MemberDecorate 36(block) 10 Offset 128
Decorate 36(block) Block
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 0
Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
index eac481a..c6d6530 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
@@ -50,8 +50,6 @@
MemberDecorate 36(block) 9 Offset 96
MemberDecorate 36(block) 10 Offset 104
Decorate 36(block) Block
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 0
Decorate 60(payload) Location 1
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index da516f3..bfaf64b 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -34,8 +34,6 @@
MemberDecorate 38(block) 0 Offset 0
MemberDecorate 38(block) 1 Offset 16
Decorate 38(block) Block
- Decorate 40 DescriptorSet 0
- Decorate 40 Binding 3
Decorate 53(payload) Location 1
Decorate 54(accEXT1) DescriptorSet 0
Decorate 54(accEXT1) Binding 1
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index 00262ac..048b02b 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -30,8 +30,6 @@
MemberDecorate 37(block) 0 Offset 0
MemberDecorate 37(block) 1 Offset 16
Decorate 37(block) Block
- Decorate 39 DescriptorSet 0
- Decorate 39 Binding 1
Decorate 52(payload) Location 1
2: TypeVoid
3: TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index 473937d..ee39e35 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -43,8 +43,6 @@
MemberDecorate 36(block) 3 Offset 32
MemberDecorate 36(block) 4 Offset 40
Decorate 36(block) Block
- Decorate 38 DescriptorSet 0
- Decorate 38 Binding 2
Decorate 61(payload) Location 1
Decorate 65(accEXT1) DescriptorSet 0
Decorate 65(accEXT1) Binding 1
diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out
index 74235a5..e95ada4 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,8 +1,7 @@
spv.viewportArray2.tesc
-Validation failed
// Module Version 10000
// Generated by (magic number): 8000a
-// Id's are bound by 25
+// Id's are bound by 23
Capability Tessellation
Capability ShaderViewportIndexLayerNV
@@ -11,23 +10,21 @@
Extension "SPV_NV_viewport_array2"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
- EntryPoint TessellationControl 4 "main" 14 16 22 24
+ EntryPoint TessellationControl 4 "main" 14 16 22
ExecutionMode 4 OutputVertices 4
- Source GLSL 450
+ Source GLSL 430
SourceExtension "GL_NV_viewport_array2"
Name 4 "main"
Name 10 "gl_PerVertex"
MemberName 10(gl_PerVertex) 0 "gl_ViewportMask"
Name 14 "gl_out"
Name 16 "gl_InvocationID"
- Name 22 "gl_ViewportIndex"
- Name 24 "gl_Layer"
+ Name 22 "gl_Layer"
MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV
Decorate 10(gl_PerVertex) Block
Decorate 16(gl_InvocationID) BuiltIn InvocationId
- Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex
- Decorate 24(gl_Layer) BuiltIn Layer
- Decorate 24(gl_Layer) ViewportRelativeNV
+ Decorate 22(gl_Layer) BuiltIn Layer
+ Decorate 22(gl_Layer) ViewportRelativeNV
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -44,14 +41,11 @@
18: 6(int) Constant 0
19: 6(int) Constant 1
20: TypePointer Output 6(int)
-22(gl_ViewportIndex): 20(ptr) Variable Output
- 23: 6(int) Constant 2
- 24(gl_Layer): 20(ptr) Variable Output
+ 22(gl_Layer): 20(ptr) Variable Output
4(main): 2 Function None 3
5: Label
17: 6(int) Load 16(gl_InvocationID)
21: 20(ptr) AccessChain 14(gl_out) 17 18 18
Store 21 19
- Store 22(gl_ViewportIndex) 23
Return
FunctionEnd
diff --git a/Test/spv.viewportArray2.tesc b/Test/spv.viewportArray2.tesc
index 7fc208a..24a1d8c 100644
--- a/Test/spv.viewportArray2.tesc
+++ b/Test/spv.viewportArray2.tesc
@@ -1,4 +1,4 @@
-#version 450
+#version 430
#extension GL_NV_viewport_array2 :require
layout(vertices = 4) out;
@@ -12,5 +12,4 @@
void main()
{
gl_out[gl_InvocationID].gl_ViewportMask[0] = 1;
- gl_ViewportIndex = 2;
}
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 9f92529..b633331 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -5172,9 +5172,13 @@
);
}
- if (version >= 450)
+ if (version >= 430)
stageBuiltins[EShLangVertex].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
+ );
+
+ if (version >= 450)
+ stageBuiltins[EShLangVertex].append(
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
@@ -5310,9 +5314,13 @@
"in int gl_InvocationID;"
);
- if (version >= 450)
+ if (version >= 430)
stageBuiltins[EShLangGeometry].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
+ );
+
+ if (version >= 450)
+ stageBuiltins[EShLangGeometry].append(
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
@@ -5388,7 +5396,13 @@
if (version >= 450)
stageBuiltins[EShLangTessControl].append(
"float gl_CullDistance[];"
+ );
+ if (version >= 430)
+ stageBuiltins[EShLangTessControl].append(
"int gl_ViewportMask[];" // GL_NV_viewport_array2
+ );
+ if (version >= 450)
+ stageBuiltins[EShLangTessControl].append(
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
@@ -5491,9 +5505,13 @@
"out int gl_Layer;"
"\n");
- if (version >= 450)
+ if (version >= 430)
stageBuiltins[EShLangTessEvaluation].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
+ );
+
+ if (version >= 450)
+ stageBuiltins[EShLangTessEvaluation].append(
"out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index a1db5c1..19eabdf 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -79,7 +79,7 @@
target = &inputList;
else if (base->getQualifier().storage == EvqVaryingOut)
target = &outputList;
- else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant())
+ else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant() && !base->getQualifier().isShaderRecord())
target = &uniformList;
// If a global is being visited, then we should also traverse it incase it's evaluation
// ends up visiting inputs we want to tag as live