HLSL: remove pervertex output blocks

This removes pervertex output blocks, in favor of using only
loose variables.  The pervertex blocks are not required and were
only partly implemented, and were adding some complication.

This change goes with wrap-entry-point.
This commit is contained in:
steve-lunarg 2017-02-03 13:37:54 -07:00 committed by John Kessenich
parent fbb58a4e0b
commit 2c5ab9c8fc
11 changed files with 20 additions and 182 deletions

View File

@ -105,7 +105,6 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -217,17 +216,16 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 129 // Id's are bound by 126
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 103 128 EntryPoint Vertex 4 "main" 103
Name 4 "main" Name 4 "main"
Name 8 "VS_OUTPUT" Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos" MemberName 8(VS_OUTPUT) 0 "Pos"
@ -255,9 +253,6 @@ Shader version: 450
Name 119 "g_tTex3df4" Name 119 "g_tTex3df4"
Name 122 "g_tTex3di4" Name 122 "g_tTex3di4"
Name 125 "g_tTex3du4" Name 125 "g_tTex3du4"
Name 126 "PerVertex_out"
MemberName 126(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 128 "PerVertex_out"
Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) DescriptorSet 0
Decorate 20(g_sSamp) DescriptorSet 0 Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0 Decorate 20(g_sSamp) Binding 0
@ -277,8 +272,6 @@ Shader version: 450
Decorate 119(g_tTex3df4) DescriptorSet 0 Decorate 119(g_tTex3df4) DescriptorSet 0
Decorate 122(g_tTex3di4) DescriptorSet 0 Decorate 122(g_tTex3di4) DescriptorSet 0
Decorate 125(g_tTex3du4) DescriptorSet 0 Decorate 125(g_tTex3du4) DescriptorSet 0
MemberDecorate 126(PerVertex_out) 0 BuiltIn Position
Decorate 126(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -362,9 +355,6 @@ Shader version: 450
123: TypeImage 45(int) 3D sampled format:Unknown 123: TypeImage 45(int) 3D sampled format:Unknown
124: TypePointer UniformConstant 123 124: TypePointer UniformConstant 123
125(g_tTex3du4): 124(ptr) Variable UniformConstant 125(g_tTex3du4): 124(ptr) Variable UniformConstant
126(PerVertex_out): TypeStruct 7(fvec4)
127: TypePointer Output 126(PerVertex_out)
128(PerVertex_out): 127(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
104:8(VS_OUTPUT) FunctionCall 10(@main() 104:8(VS_OUTPUT) FunctionCall 10(@main()

View File

@ -51,7 +51,6 @@ Shader version: 450
0:? Linker Objects 0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -109,18 +108,17 @@ Shader version: 450
0:? Linker Objects 0:? Linker Objects
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler) 0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D) 0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 51 // Id's are bound by 48
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
Capability ImageQuery Capability ImageQuery
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 42 50 EntryPoint Vertex 4 "main" 42
Name 4 "main" Name 4 "main"
Name 8 "VS_OUTPUT" Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos" MemberName 8(VS_OUTPUT) 0 "Pos"
@ -133,16 +131,11 @@ Shader version: 450
Name 32 "vsout" Name 32 "vsout"
Name 42 "@entryPointOutput_Pos" Name 42 "@entryPointOutput_Pos"
Name 47 "g_sSamp" Name 47 "g_sSamp"
Name 48 "PerVertex_out"
MemberName 48(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 50 "PerVertex_out"
Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 17(g_tTex1df4) DescriptorSet 0
Decorate 17(g_tTex1df4) Binding 0 Decorate 17(g_tTex1df4) Binding 0
Decorate 42(@entryPointOutput_Pos) BuiltIn Position Decorate 42(@entryPointOutput_Pos) BuiltIn Position
Decorate 47(g_sSamp) DescriptorSet 0 Decorate 47(g_sSamp) DescriptorSet 0
Decorate 47(g_sSamp) Binding 0 Decorate 47(g_sSamp) Binding 0
MemberDecorate 48(PerVertex_out) 0 BuiltIn Position
Decorate 48(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -166,9 +159,6 @@ Shader version: 450
45: TypeSampler 45: TypeSampler
46: TypePointer UniformConstant 45 46: TypePointer UniformConstant 45
47(g_sSamp): 46(ptr) Variable UniformConstant 47(g_sSamp): 46(ptr) Variable UniformConstant
48(PerVertex_out): TypeStruct 7(fvec4)
49: TypePointer Output 48(PerVertex_out)
50(PerVertex_out): 49(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
43:8(VS_OUTPUT) FunctionCall 10(@main() 43:8(VS_OUTPUT) FunctionCall 10(@main()

View File

@ -221,7 +221,6 @@ Shader version: 450
0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -449,18 +448,17 @@ Shader version: 450
0:? 'g_tTexcdi4a' (uniform itextureCubeArray) 0:? 'g_tTexcdi4a' (uniform itextureCubeArray)
0:? 'g_tTexcdu4a' (uniform utextureCubeArray) 0:? 'g_tTexcdu4a' (uniform utextureCubeArray)
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4}) 0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 174 // Id's are bound by 171
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
Capability SampledCubeArray Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 129 173 EntryPoint Vertex 4 "main" 129
Name 4 "main" Name 4 "main"
Name 8 "VS_OUTPUT" Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos" MemberName 8(VS_OUTPUT) 0 "Pos"
@ -499,9 +497,6 @@ Shader version: 450
Name 164 "g_tTexcdf4a" Name 164 "g_tTexcdf4a"
Name 167 "g_tTexcdi4a" Name 167 "g_tTexcdi4a"
Name 170 "g_tTexcdu4a" Name 170 "g_tTexcdu4a"
Name 171 "PerVertex_out"
MemberName 171(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 173 "PerVertex_out"
Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 14(g_tTex1df4) DescriptorSet 0
Decorate 14(g_tTex1df4) Binding 0 Decorate 14(g_tTex1df4) Binding 0
MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 0 Offset 0
@ -537,8 +532,6 @@ Shader version: 450
Decorate 164(g_tTexcdf4a) DescriptorSet 0 Decorate 164(g_tTexcdf4a) DescriptorSet 0
Decorate 167(g_tTexcdi4a) DescriptorSet 0 Decorate 167(g_tTexcdi4a) DescriptorSet 0
Decorate 170(g_tTexcdu4a) DescriptorSet 0 Decorate 170(g_tTexcdu4a) DescriptorSet 0
MemberDecorate 171(PerVertex_out) 0 BuiltIn Position
Decorate 171(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -637,9 +630,6 @@ Shader version: 450
168: TypeImage 24(int) Cube array sampled format:Unknown 168: TypeImage 24(int) Cube array sampled format:Unknown
169: TypePointer UniformConstant 168 169: TypePointer UniformConstant 168
170(g_tTexcdu4a): 169(ptr) Variable UniformConstant 170(g_tTexcdu4a): 169(ptr) Variable UniformConstant
171(PerVertex_out): TypeStruct 7(fvec4)
172: TypePointer Output 171(PerVertex_out)
173(PerVertex_out): 172(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
130:8(VS_OUTPUT) FunctionCall 10(@main() 130:8(VS_OUTPUT) FunctionCall 10(@main()

View File

@ -242,7 +242,6 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -491,17 +490,16 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 169 // Id's are bound by 166
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 162 168 EntryPoint Vertex 4 "main" 162
Name 4 "main" Name 4 "main"
Name 8 "VS_OUTPUT" Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos" MemberName 8(VS_OUTPUT) 0 "Pos"
@ -534,9 +532,6 @@ Shader version: 450
Name 153 "vsout" Name 153 "vsout"
Name 162 "@entryPointOutput_Pos" Name 162 "@entryPointOutput_Pos"
Name 165 "g_tTex1df4a" Name 165 "g_tTex1df4a"
Name 166 "PerVertex_out"
MemberName 166(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 168 "PerVertex_out"
Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0 Decorate 20(g_sSamp) DescriptorSet 0
@ -555,8 +550,6 @@ Shader version: 450
Decorate 162(@entryPointOutput_Pos) BuiltIn Position Decorate 162(@entryPointOutput_Pos) BuiltIn Position
Decorate 165(g_tTex1df4a) DescriptorSet 0 Decorate 165(g_tTex1df4a) DescriptorSet 0
Decorate 165(g_tTex1df4a) Binding 1 Decorate 165(g_tTex1df4a) Binding 1
MemberDecorate 166(PerVertex_out) 0 BuiltIn Position
Decorate 166(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -650,9 +643,6 @@ Shader version: 450
161: TypePointer Output 7(fvec4) 161: TypePointer Output 7(fvec4)
162(@entryPointOutput_Pos): 161(ptr) Variable Output 162(@entryPointOutput_Pos): 161(ptr) Variable Output
165(g_tTex1df4a): 15(ptr) Variable UniformConstant 165(g_tTex1df4a): 15(ptr) Variable UniformConstant
166(PerVertex_out): TypeStruct 7(fvec4)
167: TypePointer Output 166(PerVertex_out)
168(PerVertex_out): 167(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
163:8(VS_OUTPUT) FunctionCall 10(@main() 163:8(VS_OUTPUT) FunctionCall 10(@main()

View File

@ -188,7 +188,6 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -383,17 +382,16 @@ Shader version: 450
0:? 'g_tTexcdf4' (uniform textureCube) 0:? 'g_tTexcdf4' (uniform textureCube)
0:? 'g_tTexcdi4' (uniform itextureCube) 0:? 'g_tTexcdi4' (uniform itextureCube)
0:? 'g_tTexcdu4' (uniform utextureCube) 0:? 'g_tTexcdu4' (uniform utextureCube)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 165 // Id's are bound by 162
Capability Shader Capability Shader
Capability Sampled1D Capability Sampled1D
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 158 164 EntryPoint Vertex 4 "main" 158
Name 4 "main" Name 4 "main"
Name 8 "VS_OUTPUT" Name 8 "VS_OUTPUT"
MemberName 8(VS_OUTPUT) 0 "Pos" MemberName 8(VS_OUTPUT) 0 "Pos"
@ -426,9 +424,6 @@ Shader version: 450
Name 149 "vsout" Name 149 "vsout"
Name 158 "@entryPointOutput_Pos" Name 158 "@entryPointOutput_Pos"
Name 161 "g_tTex1df4a" Name 161 "g_tTex1df4a"
Name 162 "PerVertex_out"
MemberName 162(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 164 "PerVertex_out"
Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0 Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0 Decorate 20(g_sSamp) DescriptorSet 0
@ -447,8 +442,6 @@ Shader version: 450
Decorate 158(@entryPointOutput_Pos) BuiltIn Position Decorate 158(@entryPointOutput_Pos) BuiltIn Position
Decorate 161(g_tTex1df4a) DescriptorSet 0 Decorate 161(g_tTex1df4a) DescriptorSet 0
Decorate 161(g_tTex1df4a) Binding 1 Decorate 161(g_tTex1df4a) Binding 1
MemberDecorate 162(PerVertex_out) 0 BuiltIn Position
Decorate 162(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -538,9 +531,6 @@ Shader version: 450
157: TypePointer Output 7(fvec4) 157: TypePointer Output 7(fvec4)
158(@entryPointOutput_Pos): 157(ptr) Variable Output 158(@entryPointOutput_Pos): 157(ptr) Variable Output
161(g_tTex1df4a): 15(ptr) Variable UniformConstant 161(g_tTex1df4a): 15(ptr) Variable UniformConstant
162(PerVertex_out): TypeStruct 7(fvec4)
163: TypePointer Output 162(PerVertex_out)
164(PerVertex_out): 163(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
159:8(VS_OUTPUT) FunctionCall 10(@main() 159:8(VS_OUTPUT) FunctionCall 10(@main()

View File

@ -98,7 +98,6 @@ Shader version: 450
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int) 0:? 'x1_in' (layout(location=1 ) in int)
0:? 'Pos_loose' (in 4-component vector of float Position) 0:? 'Pos_loose' (in 4-component vector of float Position)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
Linked vertex stage: Linked vertex stage:
@ -203,16 +202,15 @@ Shader version: 450
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int) 0:? 'x1_in' (layout(location=1 ) in int)
0:? 'Pos_loose' (in 4-component vector of float Position) 0:? 'Pos_loose' (in 4-component vector of float Position)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 76 // Id's are bound by 73
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 40 44 47 51 61 67 75 EntryPoint Vertex 4 "main" 40 44 47 51 61 67
Name 4 "main" Name 4 "main"
Name 9 "VS_INPUT" Name 9 "VS_INPUT"
MemberName 9(VS_INPUT) 0 "x0_in" MemberName 9(VS_INPUT) 0 "x0_in"
@ -240,17 +238,12 @@ Shader version: 450
MemberName 59(VS_OUTPUT) 1 "x1_out" MemberName 59(VS_OUTPUT) 1 "x1_out"
Name 61 "@entryPointOutput" Name 61 "@entryPointOutput"
Name 67 "@entryPointOutput_Pos_out" Name 67 "@entryPointOutput_Pos_out"
Name 73 "PerVertex_out"
MemberName 73(PerVertex_out) 0 "@entryPointOutput_Pos_out"
Name 75 "PerVertex_out"
Decorate 40(x0_in) Location 0 Decorate 40(x0_in) Location 0
Decorate 44(Pos_in) BuiltIn Position Decorate 44(Pos_in) BuiltIn Position
Decorate 47(x1_in) Location 1 Decorate 47(x1_in) Location 1
Decorate 51(Pos_loose) BuiltIn Position Decorate 51(Pos_loose) BuiltIn Position
Decorate 61(@entryPointOutput) Location 0 Decorate 61(@entryPointOutput) Location 0
Decorate 67(@entryPointOutput_Pos_out) BuiltIn Position Decorate 67(@entryPointOutput_Pos_out) BuiltIn Position
MemberDecorate 73(PerVertex_out) 0 BuiltIn Position
Decorate 73(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -278,9 +271,6 @@ Shader version: 450
64: TypePointer Output 6(int) 64: TypePointer Output 6(int)
66: TypePointer Output 8(fvec4) 66: TypePointer Output 8(fvec4)
67(@entryPointOutput_Pos_out): 66(ptr) Variable Output 67(@entryPointOutput_Pos_out): 66(ptr) Variable Output
73(PerVertex_out): TypeStruct 8(fvec4)
74: TypePointer Output 73(PerVertex_out)
75(PerVertex_out): 74(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
38(vsin): 10(ptr) Variable Function 38(vsin): 10(ptr) Variable Function

View File

@ -107,7 +107,6 @@ Shader version: 450
0:? 'x0_in' (layout(location=0 ) in int) 0:? 'x0_in' (layout(location=0 ) in int)
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int) 0:? 'x1_in' (layout(location=1 ) in int)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
Linked vertex stage: Linked vertex stage:
@ -221,16 +220,15 @@ Shader version: 450
0:? 'x0_in' (layout(location=0 ) in int) 0:? 'x0_in' (layout(location=0 ) in int)
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'x1_in' (layout(location=1 ) in int) 0:? 'x1_in' (layout(location=1 ) in int)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos_out})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 83 // Id's are bound by 80
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 52 56 59 68 74 82 EntryPoint Vertex 4 "main" 52 56 59 68 74
Name 4 "main" Name 4 "main"
Name 9 "VS_INPUT" Name 9 "VS_INPUT"
MemberName 9(VS_INPUT) 0 "x0_in" MemberName 9(VS_INPUT) 0 "x0_in"
@ -259,16 +257,11 @@ Shader version: 450
MemberName 66(VS_OUTPUT) 1 "x1_out" MemberName 66(VS_OUTPUT) 1 "x1_out"
Name 68 "@entryPointOutput" Name 68 "@entryPointOutput"
Name 74 "@entryPointOutput_Pos_out" Name 74 "@entryPointOutput_Pos_out"
Name 80 "PerVertex_out"
MemberName 80(PerVertex_out) 0 "@entryPointOutput_Pos_out"
Name 82 "PerVertex_out"
Decorate 52(x0_in) Location 0 Decorate 52(x0_in) Location 0
Decorate 56(Pos_in) BuiltIn Position Decorate 56(Pos_in) BuiltIn Position
Decorate 59(x1_in) Location 1 Decorate 59(x1_in) Location 1
Decorate 68(@entryPointOutput) Location 0 Decorate 68(@entryPointOutput) Location 0
Decorate 74(@entryPointOutput_Pos_out) BuiltIn Position Decorate 74(@entryPointOutput_Pos_out) BuiltIn Position
MemberDecorate 80(PerVertex_out) 0 BuiltIn Position
Decorate 80(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 1 6: TypeInt 32 1
@ -296,9 +289,6 @@ Shader version: 450
71: TypePointer Output 6(int) 71: TypePointer Output 6(int)
73: TypePointer Output 8(fvec4) 73: TypePointer Output 8(fvec4)
74(@entryPointOutput_Pos_out): 73(ptr) Variable Output 74(@entryPointOutput_Pos_out): 73(ptr) Variable Output
80(PerVertex_out): TypeStruct 8(fvec4)
81: TypePointer Output 80(PerVertex_out)
82(PerVertex_out): 81(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
50(vsin): 10(ptr) Variable Function 50(vsin): 10(ptr) Variable Function

View File

@ -129,7 +129,6 @@ output primitive = triangle_strip
0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects 0:? Linker Objects
0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc}) 0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc})
0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position tin_pos})
Linked geometry stage: Linked geometry stage:
@ -265,16 +264,15 @@ output primitive = triangle_strip
0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? 'ts' (temp structure{temp structure{temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects 0:? Linker Objects
0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc}) 0:? 'tin' (layout(location=0 ) in 3-element array of structure{temp 2-component vector of float tc})
0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position tin_pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 80 // Id's are bound by 76
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 45 53 79 EntryPoint Geometry 4 "main" 45 53
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
@ -304,13 +302,8 @@ output primitive = triangle_strip
Name 71 "ts" Name 71 "ts"
Name 72 "param" Name 72 "param"
Name 74 "param" Name 74 "param"
Name 76 "PerVertex_in"
MemberName 76(PerVertex_in) 0 "tin_pos"
Name 79 "PerVertex_in"
Decorate 45(tin_pos) BuiltIn Position Decorate 45(tin_pos) BuiltIn Position
Decorate 53(tin) Location 0 Decorate 53(tin) Location 0
MemberDecorate 76(PerVertex_in) 0 BuiltIn Position
Decorate 76(PerVertex_in) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -351,10 +344,6 @@ output primitive = triangle_strip
53(tin): 52(ptr) Variable Input 53(tin): 52(ptr) Variable Input
54: TypePointer Input 8(fvec2) 54: TypePointer Input 8(fvec2)
64: 17(int) Constant 2 64: 17(int) Constant 2
76(PerVertex_in): TypeStruct 7(fvec4)
77: TypeArray 76(PerVertex_in) 11
78: TypePointer Input 77
79(PerVertex_in): 78(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
42(tin): 13(ptr) Variable Function 42(tin): 13(ptr) Variable Function

View File

@ -86,7 +86,6 @@ output primitive = triangle_strip
0:? 'i' (temp 3-element array of structure{temp 4-component vector of float pos}) 0:? 'i' (temp 3-element array of structure{temp 4-component vector of float pos})
0:? 'ts' (temp structure{temp 4-component vector of float pos}) 0:? 'ts' (temp structure{temp 4-component vector of float pos})
0:? Linker Objects 0:? Linker Objects
0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position i_pos})
Linked geometry stage: Linked geometry stage:
@ -179,16 +178,15 @@ output primitive = triangle_strip
0:? 'i' (temp 3-element array of structure{temp 4-component vector of float pos}) 0:? 'i' (temp 3-element array of structure{temp 4-component vector of float pos})
0:? 'ts' (temp structure{temp 4-component vector of float pos}) 0:? 'ts' (temp structure{temp 4-component vector of float pos})
0:? Linker Objects 0:? Linker Objects
0:? 'PerVertex_in' (in 3-element array of block{in 4-component vector of float Position i_pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 67 // Id's are bound by 63
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 46 66 EntryPoint Geometry 4 "main" 46
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
@ -208,12 +206,7 @@ output primitive = triangle_strip
Name 58 "ts" Name 58 "ts"
Name 59 "param" Name 59 "param"
Name 61 "param" Name 61 "param"
Name 63 "PerVertex_in"
MemberName 63(PerVertex_in) 0 "i_pos"
Name 66 "PerVertex_in"
Decorate 46(i_pos) BuiltIn Position Decorate 46(i_pos) BuiltIn Position
MemberDecorate 63(PerVertex_in) 0 BuiltIn Position
Decorate 63(PerVertex_in) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -238,10 +231,6 @@ output primitive = triangle_strip
46(i_pos): 45(ptr) Variable Input 46(i_pos): 45(ptr) Variable Input
47: TypePointer Input 7(fvec4) 47: TypePointer Input 7(fvec4)
54: 20(int) Constant 2 54: 20(int) Constant 2
63(PerVertex_in): TypeStruct 7(fvec4)
64: TypeArray 63(PerVertex_in) 10
65: TypePointer Input 64
66(PerVertex_in): 65(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
43(i): 12(ptr) Variable Function 43(i): 12(ptr) Variable Function

View File

@ -44,7 +44,6 @@ Shader version: 450
0:? Linker Objects 0:? Linker Objects
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'Pos_loose' (in 4-component vector of float Position) 0:? 'Pos_loose' (in 4-component vector of float Position)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
Linked vertex stage: Linked vertex stage:
@ -95,16 +94,15 @@ Shader version: 450
0:? Linker Objects 0:? Linker Objects
0:? 'Pos_in' (in 4-component vector of float Position) 0:? 'Pos_in' (in 4-component vector of float Position)
0:? 'Pos_loose' (in 4-component vector of float Position) 0:? 'Pos_loose' (in 4-component vector of float Position)
0:? 'PerVertex_out' (out block{out 4-component vector of float Position @entryPointOutput_Pos})
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 48 // Id's are bound by 45
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 31 35 38 47 EntryPoint Vertex 4 "main" 31 35 38
Name 4 "main" Name 4 "main"
Name 8 "VS_INPUT" Name 8 "VS_INPUT"
MemberName 8(VS_INPUT) 0 "Pos_in" MemberName 8(VS_INPUT) 0 "Pos_in"
@ -121,14 +119,9 @@ Shader version: 450
Name 38 "@entryPointOutput_Pos" Name 38 "@entryPointOutput_Pos"
Name 39 "param" Name 39 "param"
Name 41 "param" Name 41 "param"
Name 45 "PerVertex_out"
MemberName 45(PerVertex_out) 0 "@entryPointOutput_Pos"
Name 47 "PerVertex_out"
Decorate 31(Pos_in) BuiltIn Position Decorate 31(Pos_in) BuiltIn Position
Decorate 35(Pos_loose) BuiltIn Position Decorate 35(Pos_loose) BuiltIn Position
Decorate 38(@entryPointOutput_Pos) BuiltIn Position Decorate 38(@entryPointOutput_Pos) BuiltIn Position
MemberDecorate 45(PerVertex_out) 0 BuiltIn Position
Decorate 45(PerVertex_out) Block
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -146,9 +139,6 @@ Shader version: 450
35(Pos_loose): 30(ptr) Variable Input 35(Pos_loose): 30(ptr) Variable Input
37: TypePointer Output 7(fvec4) 37: TypePointer Output 7(fvec4)
38(@entryPointOutput_Pos): 37(ptr) Variable Output 38(@entryPointOutput_Pos): 37(ptr) Variable Output
45(PerVertex_out): TypeStruct 7(fvec4)
46: TypePointer Output 45(PerVertex_out)
47(PerVertex_out): 46(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
29(vsin): 9(ptr) Variable Function 29(vsin): 9(ptr) Variable Function

View File

@ -1429,72 +1429,12 @@ void HlslParseContext::addInterstageIoToLinkage()
// We have to (potentially) track two IO blocks, one in, one out. E.g, a GS may have a // We have to (potentially) track two IO blocks, one in, one out. E.g, a GS may have a
// PerVertex block in both directions, possibly with different members. // PerVertex block in both directions, possibly with different members.
static const TStorageQualifier ioType[2] = { EvqVaryingIn, EvqVaryingOut };
static const char* blockName[2] = { "PerVertex_in", "PerVertex_out" };
TTypeList* ioBlockTypes[2] = { nullptr, nullptr };
TArraySizes* ioBlockArray[2] = { nullptr, nullptr };
for (int idx = 0; idx < int(io.size()); ++idx) { for (int idx = 0; idx < int(io.size()); ++idx) {
TVariable* var = interstageBuiltInIo[io[idx]]; TVariable* var = interstageBuiltInIo[io[idx]];
// Add the loose interstage IO to the linkage // Add the loose interstage IO to the linkage
if (var->getType().isLooseAndBuiltIn(language)) if (var->getType().isLooseAndBuiltIn(language))
trackLinkage(*var); trackLinkage(*var);
// Add the PerVertex interstage IO to the IO block
if (var->getType().isPerVertexAndBuiltIn(language)) {
int blockId = 0;
switch (var->getType().getQualifier().storage) {
case EvqVaryingIn: blockId = 0; break;
case EvqVaryingOut: blockId = 1; break;
default: assert(0 && "Invalid storage qualifier");
}
// Lazy creation of type list only if we end up needing it.
if (ioBlockTypes[blockId] == nullptr)
ioBlockTypes[blockId] = new TTypeList();
TTypeLoc member = { new TType(EbtVoid), loc };
member.type->shallowCopy(var->getType());
member.type->setFieldName(var->getName());
// We may have collected these from different parts of different structures. If their
// array dimensions are not the same, we don't know what to do, so issue an error.
if (member.type->isArray()) {
if (ioBlockArray[blockId] == nullptr) {
ioBlockArray[blockId] = &member.type->getArraySizes();
} else {
if (*ioBlockArray[blockId] != member.type->getArraySizes())
error(loc, "PerVertex block array dimension mismatch", "", "");
}
member.type->clearArraySizes();
}
ioBlockTypes[blockId]->push_back(member);
}
}
// If there were PerVertex items, add the block to the linkage. Handle in and out separately.
for (int blockId = 0; blockId <= 1; ++blockId) {
if (ioBlockTypes[blockId] != nullptr) {
const TString* instanceName = NewPoolTString(blockName[blockId]);
TQualifier blockQualifier;
blockQualifier.clear();
blockQualifier.storage = ioType[blockId];
TType blockType(ioBlockTypes[blockId], *instanceName, blockQualifier);
if (ioBlockArray[blockId] != nullptr)
blockType.newArraySizes(*ioBlockArray[blockId]);
TVariable* ioBlock = new TVariable(instanceName, blockType);
if (!symbolTable.insert(*ioBlock))
error(loc, "block instance name redefinition", ioBlock->getName().c_str(), "");
else
trackLinkage(*ioBlock);
}
} }
} }