glslang/Test/baseResults/hlsl.struct.split.array.geom.out
steve-lunarg 46d5428422 WIP: add other builtins to interstage IO
(Still adding tests: do not commit)

This fixes PR #632 so that:

(a) The 4 PerVertex builtins are added to an interface block for all stages except fragment.

(b) Other builtin qualified variables are added as "loose" linkage members.

(c) Arrayness from the PerVertex builtins is moved to the PerVertex block.

(d) Sometimes, two PerVertex blocks are created, one for in, one for out (e.g, for some GS that
    both reads and writes a Position)
2017-01-09 13:58:05 -07:00

300 lines
15 KiB
Plaintext

hlsl.struct.split.array.geom
Shader version: 450
invocations = -1
max_vertices = 4
input primitive = points
output primitive = triangle_strip
0:? Sequence
0:13 Function Definition: main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void)
0:13 Function Parameters:
0:13 'v' (layout(location=0 ) in 1-element array of uint)
0:13 'OutputStream' (out structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Sequence
0:16 Sequence
0:16 move second child to first child (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:16 'Out' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:16 Constant:
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0 (const uint)
0:18 Sequence
0:18 move second child to first child (temp int)
0:18 'x' (temp int)
0:18 Constant:
0:18 0 (const int)
0:18 Loop with condition tested first
0:18 Loop Condition
0:18 Compare Less Than (temp bool)
0:18 'x' (temp int)
0:18 Constant:
0:18 2 (const int)
0:18 Loop Body
0:19 Sequence
0:19 move second child to first child (temp int)
0:19 'y' (temp int)
0:19 Constant:
0:19 0 (const int)
0:19 Loop with condition tested first
0:19 Loop Condition
0:19 Compare Less Than (temp bool)
0:19 'y' (temp int)
0:19 Constant:
0:19 2 (const int)
0:19 Loop Body
0:20 move second child to first child (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 indirect index (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 indirect index (temp 3-element array of structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 'Verts' (temp 2-element array of 3-element array of structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 'x' (temp int)
0:20 'y' (temp int)
0:20 'Out' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:19 Loop Terminal Expression
0:19 Pre-Increment (temp int)
0:19 'y' (temp int)
0:18 Loop Terminal Expression
0:18 Pre-Increment (temp int)
0:18 'x' (temp int)
0:? Linker Objects
0:? 'v' (layout(location=0 ) in 1-element array of uint)
0:? 'OutputStream' (layout(location=0 ) out structure{temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? 'PerVertex_out' (out block{out 4-component vector of float Position OutputStream_Pos})
Linked geometry stage:
Shader version: 450
invocations = 1
max_vertices = 4
input primitive = points
output primitive = triangle_strip
0:? Sequence
0:13 Function Definition: main(u1[1];struct-PSInput-vf4-vf2-vf3-u11; (temp void)
0:13 Function Parameters:
0:13 'v' (layout(location=0 ) in 1-element array of uint)
0:13 'OutputStream' (out structure{temp 4-component vector of float Position Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? Sequence
0:16 Sequence
0:16 move second child to first child (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:16 'Out' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:16 Constant:
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0.000000
0:16 0 (const uint)
0:18 Sequence
0:18 move second child to first child (temp int)
0:18 'x' (temp int)
0:18 Constant:
0:18 0 (const int)
0:18 Loop with condition tested first
0:18 Loop Condition
0:18 Compare Less Than (temp bool)
0:18 'x' (temp int)
0:18 Constant:
0:18 2 (const int)
0:18 Loop Body
0:19 Sequence
0:19 move second child to first child (temp int)
0:19 'y' (temp int)
0:19 Constant:
0:19 0 (const int)
0:19 Loop with condition tested first
0:19 Loop Condition
0:19 Compare Less Than (temp bool)
0:19 'y' (temp int)
0:19 Constant:
0:19 2 (const int)
0:19 Loop Body
0:20 move second child to first child (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 indirect index (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 indirect index (temp 3-element array of structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 'Verts' (temp 2-element array of 3-element array of structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:20 'x' (temp int)
0:20 'y' (temp int)
0:20 'Out' (temp structure{temp 4-component vector of float Pos, temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:19 Loop Terminal Expression
0:19 Pre-Increment (temp int)
0:19 'y' (temp int)
0:18 Loop Terminal Expression
0:18 Pre-Increment (temp int)
0:18 'x' (temp int)
0:? Linker Objects
0:? 'v' (layout(location=0 ) in 1-element array of uint)
0:? 'OutputStream' (layout(location=0 ) out structure{temp 2-component vector of float TexCoord, temp 3-component vector of float TerrainPos, temp uint VertexID})
0:? 'PerVertex_out' (out block{out 4-component vector of float Position OutputStream_Pos})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 90
Capability Geometry
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 83 86 89
ExecutionMode 4 InputPoints
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 4
Name 4 "main"
Name 11 "PSInput"
MemberName 11(PSInput) 0 "Pos"
MemberName 11(PSInput) 1 "TexCoord"
MemberName 11(PSInput) 2 "TerrainPos"
MemberName 11(PSInput) 3 "VertexID"
Name 13 "Out"
Name 14 "PSInput"
MemberName 14(PSInput) 0 "Pos"
MemberName 14(PSInput) 1 "TexCoord"
MemberName 14(PSInput) 2 "TerrainPos"
MemberName 14(PSInput) 3 "VertexID"
Name 39 "x"
Name 48 "y"
Name 56 "PSInput"
MemberName 56(PSInput) 0 "Pos"
MemberName 56(PSInput) 1 "TexCoord"
MemberName 56(PSInput) 2 "TerrainPos"
MemberName 56(PSInput) 3 "VertexID"
Name 62 "Verts"
Name 83 "v"
Name 84 "PSInput"
MemberName 84(PSInput) 0 "TexCoord"
MemberName 84(PSInput) 1 "TerrainPos"
MemberName 84(PSInput) 2 "VertexID"
Name 86 "OutputStream"
Name 87 "PerVertex_out"
MemberName 87(PerVertex_out) 0 "OutputStream_Pos"
Name 89 "PerVertex_out"
MemberDecorate 14(PSInput) 0 BuiltIn Position
Decorate 83(v) Location 0
Decorate 86(OutputStream) Location 0
MemberDecorate 87(PerVertex_out) 0 BuiltIn Position
Decorate 87(PerVertex_out) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeVector 6(float) 2
9: TypeVector 6(float) 3
10: TypeInt 32 0
11(PSInput): TypeStruct 7(fvec4) 8(fvec2) 9(fvec3) 10(int)
12: TypePointer Function 11(PSInput)
14(PSInput): TypeStruct 7(fvec4) 8(fvec2) 9(fvec3) 10(int)
15: 6(float) Constant 0
16: 7(fvec4) ConstantComposite 15 15 15 15
17: 8(fvec2) ConstantComposite 15 15
18: 9(fvec3) ConstantComposite 15 15 15
19: 10(int) Constant 0
20: 14(PSInput) ConstantComposite 16 17 18 19
22: TypeInt 32 1
23: 22(int) Constant 0
24: TypePointer Function 7(fvec4)
27: 22(int) Constant 1
28: TypePointer Function 8(fvec2)
31: 22(int) Constant 2
32: TypePointer Function 9(fvec3)
35: 22(int) Constant 3
36: TypePointer Function 10(int)
38: TypePointer Function 22(int)
46: TypeBool
56(PSInput): TypeStruct 7(fvec4) 8(fvec2) 9(fvec3) 10(int)
57: 10(int) Constant 3
58: TypeArray 56(PSInput) 57
59: 10(int) Constant 2
60: TypeArray 58 59
61: TypePointer Function 60
66: TypePointer Function 56(PSInput)
80: 10(int) Constant 1
81: TypeArray 10(int) 80
82: TypePointer Input 81
83(v): 82(ptr) Variable Input
84(PSInput): TypeStruct 8(fvec2) 9(fvec3) 10(int)
85: TypePointer Output 84(PSInput)
86(OutputStream): 85(ptr) Variable Output
87(PerVertex_out): TypeStruct 7(fvec4)
88: TypePointer Output 87(PerVertex_out)
89(PerVertex_out): 88(ptr) Variable Output
4(main): 2 Function None 3
5: Label
13(Out): 12(ptr) Variable Function
39(x): 38(ptr) Variable Function
48(y): 38(ptr) Variable Function
62(Verts): 61(ptr) Variable Function
21: 7(fvec4) CompositeExtract 20 0
25: 24(ptr) AccessChain 13(Out) 23
Store 25 21
26: 8(fvec2) CompositeExtract 20 1
29: 28(ptr) AccessChain 13(Out) 27
Store 29 26
30: 9(fvec3) CompositeExtract 20 2
33: 32(ptr) AccessChain 13(Out) 31
Store 33 30
34: 10(int) CompositeExtract 20 3
37: 36(ptr) AccessChain 13(Out) 35
Store 37 34
Store 39(x) 23
Branch 40
40: Label
LoopMerge 42 43 None
Branch 44
44: Label
45: 22(int) Load 39(x)
47: 46(bool) SLessThan 45 31
BranchConditional 47 41 42
41: Label
Store 48(y) 23
Branch 49
49: Label
LoopMerge 51 52 None
Branch 53
53: Label
54: 22(int) Load 48(y)
55: 46(bool) SLessThan 54 31
BranchConditional 55 50 51
50: Label
63: 22(int) Load 39(x)
64: 22(int) Load 48(y)
65: 11(PSInput) Load 13(Out)
67: 66(ptr) AccessChain 62(Verts) 63 64
68: 7(fvec4) CompositeExtract 65 0
69: 24(ptr) AccessChain 67 23
Store 69 68
70: 8(fvec2) CompositeExtract 65 1
71: 28(ptr) AccessChain 67 27
Store 71 70
72: 9(fvec3) CompositeExtract 65 2
73: 32(ptr) AccessChain 67 31
Store 73 72
74: 10(int) CompositeExtract 65 3
75: 36(ptr) AccessChain 67 35
Store 75 74
Branch 52
52: Label
76: 22(int) Load 48(y)
77: 22(int) IAdd 76 27
Store 48(y) 77
Branch 49
51: Label
Branch 43
43: Label
78: 22(int) Load 39(x)
79: 22(int) IAdd 78 27
Store 39(x) 79
Branch 40
42: Label
Return
FunctionEnd