Бранимир Караџић 6 anni fa
parent
commit
55fceb696d

+ 5 - 2
3rdparty/glslang/SPIRV/GlslangToSpv.cpp

@@ -3503,9 +3503,12 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy
                 memberRemapper[glslangMembers][i] = -1;
         } else {
             if (type.getBasicType() == glslang::EbtBlock) {
-                memberRemapper[glslangMembers][i] = i - memberDelta;
-                if (filterMember(glslangMember))
+                if (filterMember(glslangMember)) {
+                    memberDelta++;
+                    memberRemapper[glslangMembers][i] = -1;
                     continue;
+                }
+                memberRemapper[glslangMembers][i] = i - memberDelta;
             }
             // modify just this child's view of the qualifier
             glslang::TQualifier memberQualifier = glslangMember.getQualifier();

+ 5 - 4
3rdparty/glslang/SPIRV/spirv.hpp

@@ -1753,6 +1753,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
     case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
     case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
+    case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
     case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
     case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
     case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
@@ -1767,6 +1768,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
     case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
     case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
+    case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
+    case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
+    case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
@@ -1911,10 +1916,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
     case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
     case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
-    case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
-    case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
-    case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
-    case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
     }
 }
 #endif /* SPV_ENABLE_UTILITY_CODE */

+ 10 - 10
3rdparty/glslang/Test/baseResults/310.tesc.out

@@ -72,8 +72,8 @@ ERROR: node is still EOpNull!
 0:25        move second child to first child ( temp highp 4-component vector of float)
 0:25          'p' ( temp highp 4-component vector of float)
 0:25          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:25            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:25              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:25            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:25              Constant:
 0:25                1 (const int)
 0:25            Constant:
@@ -82,8 +82,8 @@ ERROR: node is still EOpNull!
 0:26        move second child to first child ( temp highp float)
 0:26          'ps' ( temp highp float)
 0:26          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:26            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:26              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:26            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:26              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:26              Constant:
 0:26                1 (const int)
 0:26            Constant:
@@ -211,8 +211,8 @@ ERROR: node is still EOpNull!
 0:114        move second child to first child ( temp highp float)
 0:114          'ps' ( temp highp float)
 0:114          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:114            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:114              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:114            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:114              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:114              Constant:
 0:114                1 (const int)
 0:114            Constant:
@@ -442,8 +442,8 @@ ERROR: node is still EOpNull!
 0:25        move second child to first child ( temp highp 4-component vector of float)
 0:25          'p' ( temp highp 4-component vector of float)
 0:25          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:25            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:25              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:25            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:25              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:25              Constant:
 0:25                1 (const int)
 0:25            Constant:
@@ -452,8 +452,8 @@ ERROR: node is still EOpNull!
 0:26        move second child to first child ( temp highp float)
 0:26          'ps' ( temp highp float)
 0:26          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:26            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:26              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:26            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:26              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:26              Constant:
 0:26                1 (const int)
 0:26            Constant:

+ 8 - 8
3rdparty/glslang/Test/baseResults/310.tese.out

@@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
 0:36        move second child to first child ( temp highp 4-component vector of float)
 0:36          'p' ( temp highp 4-component vector of float)
 0:36          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:36            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:36              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:36            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:36              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:36              Constant:
 0:36                1 (const int)
 0:36            Constant:
@@ -86,8 +86,8 @@ ERROR: node is still EOpNull!
 0:37        move second child to first child ( temp highp float)
 0:37          'ps' ( temp highp float)
 0:37          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:37            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:37              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:37            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:37              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:37              Constant:
 0:37                1 (const int)
 0:37            Constant:
@@ -209,8 +209,8 @@ ERROR: node is still EOpNull!
 0:36        move second child to first child ( temp highp 4-component vector of float)
 0:36          'p' ( temp highp 4-component vector of float)
 0:36          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:36            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:36              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:36            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:36              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:36              Constant:
 0:36                1 (const int)
 0:36            Constant:
@@ -219,8 +219,8 @@ ERROR: node is still EOpNull!
 0:37        move second child to first child ( temp highp float)
 0:37          'ps' ( temp highp float)
 0:37          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:37            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:37              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:37            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:37              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:37              Constant:
 0:37                1 (const int)
 0:37            Constant:

+ 10 - 10
3rdparty/glslang/Test/baseResults/320.tesc.out

@@ -66,8 +66,8 @@ ERROR: node is still EOpNull!
 0:23        move second child to first child ( temp highp 4-component vector of float)
 0:23          'p' ( temp highp 4-component vector of float)
 0:23          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:23            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:23              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:23              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:23              Constant:
 0:23                1 (const int)
 0:23            Constant:
@@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
 0:24        move second child to first child ( temp highp float)
 0:24          'ps' ( temp highp float)
 0:24          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:24            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:24              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:24              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:24              Constant:
 0:24                1 (const int)
 0:24            Constant:
@@ -196,8 +196,8 @@ ERROR: node is still EOpNull!
 0:104        move second child to first child ( temp highp float)
 0:104          'ps' ( temp highp float)
 0:104          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:104            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:104              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:104            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:104              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:104              Constant:
 0:104                1 (const int)
 0:104            Constant:
@@ -424,8 +424,8 @@ ERROR: node is still EOpNull!
 0:23        move second child to first child ( temp highp 4-component vector of float)
 0:23          'p' ( temp highp 4-component vector of float)
 0:23          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:23            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:23              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:23            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:23              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:23              Constant:
 0:23                1 (const int)
 0:23            Constant:
@@ -434,8 +434,8 @@ ERROR: node is still EOpNull!
 0:24        move second child to first child ( temp highp float)
 0:24          'ps' ( temp highp float)
 0:24          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:24            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:24              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:24            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:24              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:24              Constant:
 0:24                1 (const int)
 0:24            Constant:

+ 8 - 8
3rdparty/glslang/Test/baseResults/320.tese.out

@@ -66,8 +66,8 @@ ERROR: node is still EOpNull!
 0:32        move second child to first child ( temp highp 4-component vector of float)
 0:32          'p' ( temp highp 4-component vector of float)
 0:32          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:32            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:32              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:32              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:32              Constant:
 0:32                1 (const int)
 0:32            Constant:
@@ -76,8 +76,8 @@ ERROR: node is still EOpNull!
 0:33        move second child to first child ( temp highp float)
 0:33          'ps' ( temp highp float)
 0:33          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:33            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:33              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:33              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in unsized 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:33              Constant:
 0:33                1 (const int)
 0:33            Constant:
@@ -184,8 +184,8 @@ ERROR: node is still EOpNull!
 0:32        move second child to first child ( temp highp 4-component vector of float)
 0:32          'p' ( temp highp 4-component vector of float)
 0:32          gl_Position: direct index for structure ( in highp 4-component vector of float Position)
-0:32            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:32              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:32            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:32              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:32              Constant:
 0:32                1 (const int)
 0:32            Constant:
@@ -194,8 +194,8 @@ ERROR: node is still EOpNull!
 0:33        move second child to first child ( temp highp float)
 0:33          'ps' ( temp highp float)
 0:33          gl_PointSize: direct index for structure ( in highp float PointSize)
-0:33            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
-0:33              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float gl_PositionPerViewNV})
+0:33            direct index ( temp block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
+0:33              'gl_in' ( in 32-element array of block{ in highp 4-component vector of float Position gl_Position,  in highp float PointSize gl_PointSize,  in highp 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV,  in 1-element array of highp 4-component vector of float PositionPerViewNV gl_PositionPerViewNV})
 0:33              Constant:
 0:33                1 (const int)
 0:33            Constant:

+ 10 - 6
3rdparty/glslang/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out

@@ -1,8 +1,7 @@
 spv.multiviewPerViewAttributes.tesc
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 80007
-// Id's are bound by 37
+// Id's are bound by 41
 
                               Capability Tessellation
                               Capability PerViewAttributesNV
@@ -24,7 +23,7 @@ Validation failed
                               MemberName 27(gl_PerVertex) 1  "gl_PointSize"
                               MemberName 27(gl_PerVertex) 2  "gl_ClipDistance"
                               MemberName 27(gl_PerVertex) 3  "gl_CullDistance"
-                              MemberName 27(gl_PerVertex) 5  "gl_PositionPerViewNV"
+                              MemberName 27(gl_PerVertex) 4  "gl_PositionPerViewNV"
                               Name 31  "gl_in"
                               MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV
                               MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV
@@ -34,6 +33,7 @@ Validation failed
                               MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
                               MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
                               MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
+                              MemberDecorate 27(gl_PerVertex) 4 BuiltIn PositionPerViewNV
                               Decorate 27(gl_PerVertex) Block
                2:             TypeVoid
                3:             TypeFunction 2
@@ -61,7 +61,8 @@ Validation failed
               30:             TypePointer Input 29
        31(gl_in):     30(ptr) Variable Input
               32:             TypePointer Input 7(fvec4)
-              35:             TypePointer Output 7(fvec4)
+              35:     11(int) Constant 4
+              39:             TypePointer Output 7(fvec4)
          4(main):           2 Function None 3
                5:             Label
               20:     11(int) Load 19(gl_InvocationID)
@@ -70,7 +71,10 @@ Validation failed
               25:     11(int) Load 19(gl_InvocationID)
               33:     32(ptr) AccessChain 31(gl_in) 21 22
               34:    7(fvec4) Load 33
-              36:     35(ptr) AccessChain 17(gl_out) 25 22 22
-                              Store 36 34
+              36:     32(ptr) AccessChain 31(gl_in) 21 35 22
+              37:    7(fvec4) Load 36
+              38:    7(fvec4) FAdd 34 37
+              40:     39(ptr) AccessChain 17(gl_out) 25 22 22
+                              Store 40 38
                               Return
                               FunctionEnd

+ 15 - 11
3rdparty/glslang/Test/baseResults/spv.stereoViewRendering.tesc.out

@@ -1,8 +1,7 @@
 spv.stereoViewRendering.tesc
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 80007
-// Id's are bound by 38
+// Id's are bound by 42
 
                               Capability Geometry
                               Capability Tessellation
@@ -14,7 +13,7 @@ Validation failed
                               Extension  "SPV_NV_viewport_array2"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint TessellationControl 4  "main" 16 18 31 37
+                              EntryPoint TessellationControl 4  "main" 16 18 31 41
                               ExecutionMode 4 OutputVertices 4
                               Source GLSL 450
                               SourceExtension  "GL_NV_stereo_view_rendering"
@@ -32,7 +31,7 @@ Validation failed
                               MemberName 27(gl_PerVertex) 3  "gl_CullDistance"
                               MemberName 27(gl_PerVertex) 4  "gl_SecondaryPositionNV"
                               Name 31  "gl_in"
-                              Name 37  "gl_Layer"
+                              Name 41  "gl_Layer"
                               MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV
                               MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV
                               Decorate 12(gl_PerVertex) Block
@@ -41,10 +40,11 @@ Validation failed
                               MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize
                               MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance
                               MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance
+                              MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV
                               Decorate 27(gl_PerVertex) Block
-                              Decorate 37(gl_Layer) BuiltIn Layer
-                              Decorate 37(gl_Layer) ViewportRelativeNV
-                              Decorate 37(gl_Layer) SecondaryViewportRelativeNV 1
+                              Decorate 41(gl_Layer) BuiltIn Layer
+                              Decorate 41(gl_Layer) ViewportRelativeNV
+                              Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -71,8 +71,9 @@ Validation failed
               30:             TypePointer Input 29
        31(gl_in):     30(ptr) Variable Input
               32:             TypePointer Input 7(fvec4)
-              35:             TypePointer Output 7(fvec4)
-    37(gl_Layer):     22(ptr) Variable Output
+              35:      8(int) Constant 4
+              39:             TypePointer Output 7(fvec4)
+    41(gl_Layer):     22(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
               19:      8(int) Load 18(gl_InvocationID)
@@ -81,7 +82,10 @@ Validation failed
               24:      8(int) Load 18(gl_InvocationID)
               33:     32(ptr) AccessChain 31(gl_in) 20 21
               34:    7(fvec4) Load 33
-              36:     35(ptr) AccessChain 16(gl_out) 24 21
-                              Store 36 34
+              36:     32(ptr) AccessChain 31(gl_in) 20 35
+              37:    7(fvec4) Load 36
+              38:    7(fvec4) FAdd 34 37
+              40:     39(ptr) AccessChain 16(gl_out) 24 21
+                              Store 40 38
                               Return
                               FunctionEnd

+ 1 - 1
3rdparty/glslang/Test/spv.multiviewPerViewAttributes.tesc

@@ -10,5 +10,5 @@ out gl_PerVertex {
 void main()
 {
     gl_out[gl_InvocationID].gl_ViewportMaskPerViewNV[0]    = 1;
-    gl_out[gl_InvocationID].gl_PositionPerViewNV[0]        =  gl_in[1].gl_Position;
+    gl_out[gl_InvocationID].gl_PositionPerViewNV[0] = gl_in[1].gl_Position + gl_in[1].gl_PositionPerViewNV[0];
 }

+ 1 - 1
3rdparty/glslang/Test/spv.stereoViewRendering.tesc

@@ -15,5 +15,5 @@ layout (viewport_relative, secondary_view_offset = 1) out highp int gl_Layer;
 void main()
 {
     gl_out[gl_InvocationID].gl_SecondaryViewportMaskNV[0]            = 1;
-    gl_out[gl_InvocationID].gl_SecondaryPositionNV                   = gl_in[1].gl_Position;
+    gl_out[gl_InvocationID].gl_SecondaryPositionNV = gl_in[1].gl_Position + gl_in[1].gl_SecondaryPositionNV;
 }

+ 1 - 1
3rdparty/glslang/glslang/Include/revision.h

@@ -1,3 +1,3 @@
 // This header is generated by the make-revision script.
 
-#define GLSLANG_PATCH_LEVEL 3294
+#define GLSLANG_PATCH_LEVEL 3321

+ 9 - 1
3rdparty/glslang/glslang/MachineIndependent/Initialize.cpp

@@ -8095,7 +8095,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
         BuiltInVariable("gl_PositionPerViewNV",         EbvPositionPerViewNV,       symbolTable);
         BuiltInVariable("gl_ViewportMaskPerViewNV",     EbvViewportMaskPerViewNV,   symbolTable);
 
-        if (language != EShLangVertex) {
+        if (language == EShLangVertex || language == EShLangGeometry) {
             symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
             symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV",   1, &E_GL_NVX_multiview_per_view_attributes);
 
@@ -9770,6 +9770,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
         BuiltInVariable("gl_in", "gl_TexCoord",            EbvTexCoord,            symbolTable);
         BuiltInVariable("gl_in", "gl_FogFragCoord",        EbvFogFragCoord,        symbolTable);
 
+#ifdef NV_EXTENSIONS
+        symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
+        symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV",   1, &E_GL_NVX_multiview_per_view_attributes);
+
+        BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
+        BuiltInVariable("gl_in", "gl_PositionPerViewNV",   EbvPositionPerViewNV,   symbolTable);
+#endif
+
         // extension requirements
         if (profile == EEsProfile) {
             symbolTable.setVariableExtensions("gl_in", "gl_PointSize", Num_AEP_tessellation_point_size, AEP_tessellation_point_size);

+ 2 - 2
3rdparty/glslang/known_good.json

@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "1fedf72e500b7cf72098a3f800c8ef4b9d9dc84f"
+      "commit" : "aa9e8f538041db3055ea443080e0ccc315fa114f"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "123dc278f204f8e833e1a88d31c46d0edf81d4b2"
+      "commit" : "45c2cc37276d69e5b257507d97fd90d2a5684ccc"
     }
   ]
 }