Fix bugs in missing Builtin decoration for some NV builtins for tessellation
control shaders.
Fix bug in member remapping.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 4019436..24c7232 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -3503,9 +3503,12 @@
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();
diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out
index ef78bf3..25ce6ee 100644
--- a/Test/baseResults/310.tesc.out
+++ b/Test/baseResults/310.tesc.out
@@ -72,8 +72,8 @@
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 @@
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 @@
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 @@
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 @@
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:
diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out
index 9c7c679..2f23d9b 100644
--- a/Test/baseResults/310.tese.out
+++ b/Test/baseResults/310.tese.out
@@ -76,8 +76,8 @@
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 @@
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 @@
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 @@
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:
diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out
index 4bb6fc2..6bb52b3 100644
--- a/Test/baseResults/320.tesc.out
+++ b/Test/baseResults/320.tesc.out
@@ -66,8 +66,8 @@
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 @@
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 @@
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 @@
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 @@
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:
diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out
index 93165ae..014eeb0 100644
--- a/Test/baseResults/320.tese.out
+++ b/Test/baseResults/320.tese.out
@@ -66,8 +66,8 @@
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 @@
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 @@
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 @@
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:
diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
index 16bea3d..c06a890 100644
--- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
+++ b/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 @@
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 @@
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 @@
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 @@
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
diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out
index 03b20f9..43afff9 100644
--- a/Test/baseResults/spv.stereoViewRendering.tesc.out
+++ b/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 @@
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 @@
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 @@
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 @@
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 @@
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
diff --git a/Test/spv.multiviewPerViewAttributes.tesc b/Test/spv.multiviewPerViewAttributes.tesc
index a0dd64d..117a1ad 100644
--- a/Test/spv.multiviewPerViewAttributes.tesc
+++ b/Test/spv.multiviewPerViewAttributes.tesc
@@ -10,5 +10,5 @@
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];
}
diff --git a/Test/spv.stereoViewRendering.tesc b/Test/spv.stereoViewRendering.tesc
index e8cfe00..ec1076f 100644
--- a/Test/spv.stereoViewRendering.tesc
+++ b/Test/spv.stereoViewRendering.tesc
@@ -15,5 +15,5 @@
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;
}
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 602bf85..a229e30 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -8095,7 +8095,7 @@
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 @@
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);