From c1e61d6cff30f9a1456090adfc461d976091f52f Mon Sep 17 00:00:00 2001 From: Ashwin Lele Date: Mon, 22 Jul 2019 12:36:38 -0700 Subject: [PATCH] Fix bugs in missing Builtin decoration for some NV builtins for tessellation control shaders. Fix bug in member remapping. --- SPIRV/GlslangToSpv.cpp | 7 ++++-- Test/baseResults/310.tesc.out | 20 ++++++++--------- Test/baseResults/310.tese.out | 16 ++++++------- Test/baseResults/320.tesc.out | 20 ++++++++--------- Test/baseResults/320.tese.out | 16 ++++++------- .../spv.multiviewPerViewAttributes.tesc.out | 16 ++++++++----- Test/baseResults/spv.stereoViewRendering.tesc.out | 26 +++++++++++++--------- Test/spv.multiviewPerViewAttributes.tesc | 2 +- Test/spv.stereoViewRendering.tesc | 2 +- glslang/MachineIndependent/Initialize.cpp | 10 ++++++++- 10 files changed, 77 insertions(+), 58 deletions(-) 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 @@ 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(); 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 @@ 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: 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 @@ 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: 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 @@ 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: 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 @@ 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: 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 @@ 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 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 @@ 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 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 @@ 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]; } 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 @@ 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; } 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 @@ 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.7.4