HLSL: Flatten more I/O: non-arrayed user-only structures.

The goal is to flatten all I/O, but there are multiple categories and
steps to complete, likely including a final unification of splitting
and flattening.
This commit is contained in:
John Kessenich 2017-08-04 12:04:44 -06:00
parent cca42a8ea6
commit b6be80f44e
12 changed files with 693 additions and 374 deletions

View file

@ -42,14 +42,34 @@ output primitive = line_strip
0:20 Constant: 0:20 Constant:
0:20 0 (const int) 0:20 0 (const int)
0:22 Sequence 0:22 Sequence
0:22 move second child to first child ( temp structure{ temp float myfloat, temp int something}) 0:22 Sequence
0:22 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:22 move second child to first child ( temp float)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:22 myfloat: direct index for structure ( temp float)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp int)
0:? 'something' (layout( location=1) out int)
0:22 something: direct index for structure ( temp int)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:22 Constant:
0:22 1 (const int)
0:22 EmitVertex ( temp void) 0:22 EmitVertex ( temp void)
0:23 Sequence 0:23 Sequence
0:23 move second child to first child ( temp structure{ temp float myfloat, temp int something}) 0:23 Sequence
0:23 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:23 move second child to first child ( temp float)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:23 myfloat: direct index for structure ( temp float)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:23 Constant:
0:23 0 (const int)
0:23 move second child to first child ( temp int)
0:? 'something' (layout( location=1) out int)
0:23 something: direct index for structure ( temp int)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:23 Constant:
0:23 1 (const int)
0:23 EmitVertex ( temp void) 0:23 EmitVertex ( temp void)
0:24 EndPrimitive ( temp void) 0:24 EndPrimitive ( temp void)
0:16 Function Definition: main( ( temp void) 0:16 Function Definition: main( ( temp void)
@ -68,7 +88,8 @@ output primitive = line_strip
0:? Linker Objects 0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'test' (layout( location=1) in 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint)
0:? 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:? 'something' (layout( location=1) out int)
Linked geometry stage: Linked geometry stage:
@ -117,14 +138,34 @@ output primitive = line_strip
0:20 Constant: 0:20 Constant:
0:20 0 (const int) 0:20 0 (const int)
0:22 Sequence 0:22 Sequence
0:22 move second child to first child ( temp structure{ temp float myfloat, temp int something}) 0:22 Sequence
0:22 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:22 move second child to first child ( temp float)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:22 myfloat: direct index for structure ( temp float)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp int)
0:? 'something' (layout( location=1) out int)
0:22 something: direct index for structure ( temp int)
0:22 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:22 Constant:
0:22 1 (const int)
0:22 EmitVertex ( temp void) 0:22 EmitVertex ( temp void)
0:23 Sequence 0:23 Sequence
0:23 move second child to first child ( temp structure{ temp float myfloat, temp int something}) 0:23 Sequence
0:23 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:23 move second child to first child ( temp float)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:23 myfloat: direct index for structure ( temp float)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:23 Constant:
0:23 0 (const int)
0:23 move second child to first child ( temp int)
0:? 'something' (layout( location=1) out int)
0:23 something: direct index for structure ( temp int)
0:23 'Vert' ( temp structure{ temp float myfloat, temp int something})
0:23 Constant:
0:23 1 (const int)
0:23 EmitVertex ( temp void) 0:23 EmitVertex ( temp void)
0:24 EndPrimitive ( temp void) 0:24 EndPrimitive ( temp void)
0:16 Function Definition: main( ( temp void) 0:16 Function Definition: main( ( temp void)
@ -143,16 +184,17 @@ output primitive = line_strip
0:? Linker Objects 0:? Linker Objects
0:? 'VertexID' (layout( location=0) in 3-element array of uint) 0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'test' (layout( location=1) in 3-element array of uint) 0:? 'test' (layout( location=1) in 3-element array of uint)
0:? 'OutputStream' (layout( location=0) out structure{ temp float myfloat, temp int something}) 0:? 'myfloat' (layout( location=0) out float)
0:? 'something' (layout( location=1) out int)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 60 // Id's are bound by 68
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 42 47 50 EntryPoint Geometry 4 "main" 42 46 55 58
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip ExecutionMode 4 OutputLineStrip
@ -167,18 +209,20 @@ output primitive = line_strip
Name 16 "test" Name 16 "test"
Name 17 "OutputStream" Name 17 "OutputStream"
Name 20 "Vert" Name 20 "Vert"
Name 42 "OutputStream" Name 42 "myfloat"
Name 45 "VertexID" Name 46 "something"
Name 47 "VertexID" Name 53 "VertexID"
Name 49 "test" Name 55 "VertexID"
Name 50 "test" Name 57 "test"
Name 52 "OutputStream" Name 58 "test"
Name 53 "param" Name 60 "OutputStream"
Name 55 "param" Name 61 "param"
Name 57 "param" Name 63 "param"
Decorate 42(OutputStream) Location 0 Name 65 "param"
Decorate 47(VertexID) Location 0 Decorate 42(myfloat) Location 0
Decorate 50(test) Location 1 Decorate 46(something) Location 1
Decorate 55(VertexID) Location 0
Decorate 58(test) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
@ -196,30 +240,32 @@ output primitive = line_strip
29: 11(int) Constant 2 29: 11(int) Constant 2
34: TypePointer Function 10(float) 34: TypePointer Function 10(float)
39: TypePointer Function 11(int) 39: TypePointer Function 11(int)
41: TypePointer Output 12(PSInput) 41: TypePointer Output 10(float)
42(OutputStream): 41(ptr) Variable Output 42(myfloat): 41(ptr) Variable Output
46: TypePointer Input 8 45: TypePointer Output 11(int)
47(VertexID): 46(ptr) Variable Input 46(something): 45(ptr) Variable Output
50(test): 46(ptr) Variable Input 54: TypePointer Input 8
55(VertexID): 54(ptr) Variable Input
58(test): 54(ptr) Variable Input
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
45(VertexID): 9(ptr) Variable Function 53(VertexID): 9(ptr) Variable Function
49(test): 9(ptr) Variable Function 57(test): 9(ptr) Variable Function
52(OutputStream): 13(ptr) Variable Function 60(OutputStream): 13(ptr) Variable Function
53(param): 9(ptr) Variable Function 61(param): 9(ptr) Variable Function
55(param): 9(ptr) Variable Function 63(param): 9(ptr) Variable Function
57(param): 13(ptr) Variable Function 65(param): 13(ptr) Variable Function
48: 8 Load 47(VertexID) 56: 8 Load 55(VertexID)
Store 45(VertexID) 48 Store 53(VertexID) 56
51: 8 Load 50(test) 59: 8 Load 58(test)
Store 49(test) 51 Store 57(test) 59
54: 8 Load 45(VertexID) 62: 8 Load 53(VertexID)
Store 53(param) 54 Store 61(param) 62
56: 8 Load 49(test) 64: 8 Load 57(test)
Store 55(param) 56 Store 63(param) 64
58: 2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 53(param) 55(param) 57(param) 66: 2 FunctionCall 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;) 61(param) 63(param) 65(param)
59: 12(PSInput) Load 57(param) 67: 12(PSInput) Load 65(param)
Store 52(OutputStream) 59 Store 60(OutputStream) 67
Return Return
FunctionEnd FunctionEnd
18(@main(u1[3];u1[3];struct-PSInput-f1-i11;): 2 Function None 14 18(@main(u1[3];u1[3];struct-PSInput-f1-i11;): 2 Function None 14
@ -244,11 +290,19 @@ output primitive = line_strip
38: 11(int) Bitcast 37 38: 11(int) Bitcast 37
40: 39(ptr) AccessChain 20(Vert) 25 40: 39(ptr) AccessChain 20(Vert) 25
Store 40 38 Store 40 38
43: 12(PSInput) Load 20(Vert) 43: 34(ptr) AccessChain 20(Vert) 21
Store 42(OutputStream) 43 44: 10(float) Load 43
Store 42(myfloat) 44
47: 39(ptr) AccessChain 20(Vert) 25
48: 11(int) Load 47
Store 46(something) 48
EmitVertex EmitVertex
44: 12(PSInput) Load 20(Vert) 49: 34(ptr) AccessChain 20(Vert) 21
Store 42(OutputStream) 44 50: 10(float) Load 49
Store 42(myfloat) 50
51: 39(ptr) AccessChain 20(Vert) 25
52: 11(int) Load 51
Store 46(something) 52
EmitVertex EmitVertex
EndPrimitive EndPrimitive
Return Return

View file

@ -105,14 +105,28 @@ triangle order = none
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:22 Constant: 0:22 Constant:
0:22 0 (const int) 0:22 0 (const int)
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:22 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -228,14 +242,28 @@ triangle order = none
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:22 Constant: 0:22 Constant:
0:22 0 (const int) 0:22 0 (const int)
0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Function Call: @main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:22 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -243,12 +271,12 @@ triangle order = none
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 88 // Id's are bound by 95
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 51 55 61 76 81 EntryPoint TessellationEvaluation 4 "main" 51 55 61 76 88 92
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -273,9 +301,11 @@ triangle order = none
Name 57 "pcf_data" Name 57 "pcf_data"
Name 61 "pcf_data_flTessFactor" Name 61 "pcf_data_flTessFactor"
Name 76 "pcf_data_flInsideTessFactor" Name 76 "pcf_data_flInsideTessFactor"
Name 81 "@entryPointOutput" Name 80 "flattenTemp"
Name 83 "param" Name 82 "param"
Name 85 "param" Name 84 "param"
Name 88 "pos"
Name 92 "norm"
Decorate 51(i) Location 0 Decorate 51(i) Location 0
Decorate 55(tesscoord) Patch Decorate 55(tesscoord) Patch
Decorate 55(tesscoord) BuiltIn TessCoord Decorate 55(tesscoord) BuiltIn TessCoord
@ -283,7 +313,8 @@ triangle order = none
Decorate 61(pcf_data_flTessFactor) BuiltIn TessLevelOuter Decorate 61(pcf_data_flTessFactor) BuiltIn TessLevelOuter
Decorate 76(pcf_data_flInsideTessFactor) Patch Decorate 76(pcf_data_flInsideTessFactor) Patch
Decorate 76(pcf_data_flInsideTessFactor) BuiltIn TessLevelInner Decorate 76(pcf_data_flInsideTessFactor) BuiltIn TessLevelInner
Decorate 81(@entryPointOutput) Location 0 Decorate 88(pos) Location 0
Decorate 92(norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -322,15 +353,18 @@ triangle order = none
74: TypeArray 6(float) 73 74: TypeArray 6(float) 73
75: TypePointer Input 74 75: TypePointer Input 74
76(pcf_data_flInsideTessFactor): 75(ptr) Variable Input 76(pcf_data_flInsideTessFactor): 75(ptr) Variable Input
80: TypePointer Output 17(gs_in_t) 87: TypePointer Output 7(fvec4)
81(@entryPointOutput): 80(ptr) Variable Output 88(pos): 87(ptr) Variable Output
91: TypePointer Output 8(fvec3)
92(norm): 91(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
49(i): 48(ptr) Variable Function 49(i): 48(ptr) Variable Function
53(tesscoord): 13(ptr) Variable Function 53(tesscoord): 13(ptr) Variable Function
57(pcf_data): 16(ptr) Variable Function 57(pcf_data): 16(ptr) Variable Function
83(param): 13(ptr) Variable Function 80(flattenTemp): 24(ptr) Variable Function
85(param): 16(ptr) Variable Function 82(param): 13(ptr) Variable Function
84(param): 16(ptr) Variable Function
52: 12 Load 51(i) 52: 12 Load 51(i)
Store 49(i) 52 Store 49(i) 52
56: 8(fvec3) Load 55(tesscoord) 56: 8(fvec3) Load 55(tesscoord)
@ -351,13 +385,19 @@ triangle order = none
78: 6(float) Load 77 78: 6(float) Load 77
79: 30(ptr) AccessChain 57(pcf_data) 37 79: 30(ptr) AccessChain 57(pcf_data) 37
Store 79 78 Store 79 78
82: 12 Load 49(i) 81: 12 Load 49(i)
84: 8(fvec3) Load 53(tesscoord) 83: 8(fvec3) Load 53(tesscoord)
Store 83(param) 84 Store 82(param) 83
86:15(pcf_in_t) Load 57(pcf_data) 85:15(pcf_in_t) Load 57(pcf_data)
Store 85(param) 86 Store 84(param) 85
87: 17(gs_in_t) FunctionCall 22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;) 82 83(param) 85(param) 86: 17(gs_in_t) FunctionCall 22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;) 81 82(param) 84(param)
Store 81(@entryPointOutput) 87 Store 80(flattenTemp) 86
89: 35(ptr) AccessChain 80(flattenTemp) 27
90: 7(fvec4) Load 89
Store 88(pos) 90
93: 13(ptr) AccessChain 80(flattenTemp) 37
94: 8(fvec3) Load 93
Store 92(norm) 94
Return Return
FunctionEnd FunctionEnd
22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;): 17(gs_in_t) Function None 18 22(@main(struct-ds_in_t-vf4-vf31[3];vf3;struct-pcf_in_t-f1[3]-f11;): 17(gs_in_t) Function None 18

View file

@ -114,14 +114,28 @@ triangle order = none
0:25 move second child to first child ( temp 3-component vector of float) 0:25 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 3-component vector of float)
0:25 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data' (layout( location=2) patch in structure{ temp float foo}) 0:? 'pcf_data' (layout( location=2) patch in structure{ temp float foo})
@ -247,14 +261,28 @@ triangle order = none
0:25 move second child to first child ( temp 3-component vector of float) 0:25 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo}) 0:25 Function Call: @main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor, temp float foo})
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 3-component vector of float)
0:25 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data' (layout( location=2) patch in structure{ temp float foo}) 0:? 'pcf_data' (layout( location=2) patch in structure{ temp float foo})
@ -263,12 +291,12 @@ triangle order = none
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 94 // Id's are bound by 101
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 52 67 73 80 84 87 EntryPoint TessellationEvaluation 4 "main" 52 67 73 80 84 94 98
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -297,9 +325,11 @@ triangle order = none
Name 80 "i" Name 80 "i"
Name 82 "tesscoord" Name 82 "tesscoord"
Name 84 "tesscoord" Name 84 "tesscoord"
Name 87 "@entryPointOutput" Name 86 "flattenTemp"
Name 89 "param" Name 88 "param"
Name 91 "param" Name 90 "param"
Name 94 "pos"
Name 98 "norm"
Decorate 52(pcf_data_flTessFactor) Patch Decorate 52(pcf_data_flTessFactor) Patch
Decorate 52(pcf_data_flTessFactor) BuiltIn TessLevelOuter Decorate 52(pcf_data_flTessFactor) BuiltIn TessLevelOuter
Decorate 67(pcf_data_flInsideTessFactor) Patch Decorate 67(pcf_data_flInsideTessFactor) Patch
@ -310,7 +340,8 @@ triangle order = none
Decorate 80(i) Location 0 Decorate 80(i) Location 0
Decorate 84(tesscoord) Patch Decorate 84(tesscoord) Patch
Decorate 84(tesscoord) BuiltIn TessCoord Decorate 84(tesscoord) BuiltIn TessCoord
Decorate 87(@entryPointOutput) Location 0 Decorate 94(pos) Location 0
Decorate 98(norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -352,15 +383,18 @@ triangle order = none
80(i): 79(ptr) Variable Input 80(i): 79(ptr) Variable Input
83: TypePointer Input 13(fvec3) 83: TypePointer Input 13(fvec3)
84(tesscoord): 83(ptr) Variable Input 84(tesscoord): 83(ptr) Variable Input
86: TypePointer Output 17(gs_in_t) 93: TypePointer Output 12(fvec4)
87(@entryPointOutput): 86(ptr) Variable Output 94(pos): 93(ptr) Variable Output
97: TypePointer Output 13(fvec3)
98(norm): 97(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
48(pcf_data): 11(ptr) Variable Function 48(pcf_data): 11(ptr) Variable Function
78(i): 77(ptr) Variable Function 78(i): 77(ptr) Variable Function
82(tesscoord): 16(ptr) Variable Function 82(tesscoord): 16(ptr) Variable Function
89(param): 11(ptr) Variable Function 86(flattenTemp): 24(ptr) Variable Function
91(param): 16(ptr) Variable Function 88(param): 11(ptr) Variable Function
90(param): 16(ptr) Variable Function
54: 53(ptr) AccessChain 52(pcf_data_flTessFactor) 27 54: 53(ptr) AccessChain 52(pcf_data_flTessFactor) 27
55: 6(float) Load 54 55: 6(float) Load 54
56: 30(ptr) AccessChain 48(pcf_data) 27 27 56: 30(ptr) AccessChain 48(pcf_data) 27 27
@ -385,13 +419,19 @@ triangle order = none
Store 78(i) 81 Store 78(i) 81
85: 13(fvec3) Load 84(tesscoord) 85: 13(fvec3) Load 84(tesscoord)
Store 82(tesscoord) 85 Store 82(tesscoord) 85
88: 15 Load 78(i) 87: 15 Load 78(i)
90:10(pcf_in_t) Load 48(pcf_data) 89:10(pcf_in_t) Load 48(pcf_data)
Store 89(param) 90 Store 88(param) 89
92: 13(fvec3) Load 82(tesscoord) 91: 13(fvec3) Load 82(tesscoord)
Store 91(param) 92 Store 90(param) 91
93: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 89(param) 88 91(param) 92: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 88(param) 87 90(param)
Store 87(@entryPointOutput) 93 Store 86(flattenTemp) 92
95: 35(ptr) AccessChain 86(flattenTemp) 27
96: 12(fvec4) Load 95
Store 94(pos) 96
99: 16(ptr) AccessChain 86(flattenTemp) 37
100: 13(fvec3) Load 99
Store 98(norm) 100
Return Return
FunctionEnd FunctionEnd
22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18

View file

@ -102,14 +102,28 @@ triangle order = none
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 0 (const int)
0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? 'tesscoord' ( temp 2-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:24 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -222,14 +236,28 @@ triangle order = none
0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data_flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 0 (const int)
0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Sequence
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 move second child to first child ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Function Call: @main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11; ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor}) 0:? 'tesscoord' ( temp 2-component vector of float)
0:? 'pcf_data' ( temp structure{ temp 3-element array of float flTessFactor, temp float flInsideTessFactor})
0:24 move second child to first child ( temp 4-component vector of float)
0:? 'pos' (layout( location=0) out 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 'flattenTemp' ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'pos' (layout( location=0) out 4-component vector of float)
0:? 'norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data_flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -237,12 +265,12 @@ triangle order = none
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 93 // Id's are bound by 100
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 54 58 67 81 86 EntryPoint TessellationEvaluation 4 "main" 54 58 67 81 93 97
ExecutionMode 4 Isolines ExecutionMode 4 Isolines
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -267,9 +295,11 @@ triangle order = none
Name 63 "pcf_data" Name 63 "pcf_data"
Name 67 "pcf_data_flTessFactor" Name 67 "pcf_data_flTessFactor"
Name 81 "pcf_data_flInsideTessFactor" Name 81 "pcf_data_flInsideTessFactor"
Name 86 "@entryPointOutput" Name 85 "flattenTemp"
Name 88 "param" Name 87 "param"
Name 90 "param" Name 89 "param"
Name 93 "pos"
Name 97 "norm"
Decorate 54(i) Location 0 Decorate 54(i) Location 0
Decorate 58(tesscoord) Patch Decorate 58(tesscoord) Patch
Decorate 58(tesscoord) BuiltIn TessCoord Decorate 58(tesscoord) BuiltIn TessCoord
@ -277,7 +307,8 @@ triangle order = none
Decorate 67(pcf_data_flTessFactor) BuiltIn TessLevelOuter Decorate 67(pcf_data_flTessFactor) BuiltIn TessLevelOuter
Decorate 81(pcf_data_flInsideTessFactor) Patch Decorate 81(pcf_data_flInsideTessFactor) Patch
Decorate 81(pcf_data_flInsideTessFactor) BuiltIn TessLevelInner Decorate 81(pcf_data_flInsideTessFactor) BuiltIn TessLevelInner
Decorate 86(@entryPointOutput) Location 0 Decorate 93(pos) Location 0
Decorate 97(norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -318,15 +349,18 @@ triangle order = none
79: TypeArray 6(float) 11 79: TypeArray 6(float) 11
80: TypePointer Input 79 80: TypePointer Input 79
81(pcf_data_flInsideTessFactor): 80(ptr) Variable Input 81(pcf_data_flInsideTessFactor): 80(ptr) Variable Input
85: TypePointer Output 19(gs_in_t) 92: TypePointer Output 7(fvec4)
86(@entryPointOutput): 85(ptr) Variable Output 93(pos): 92(ptr) Variable Output
96: TypePointer Output 8(fvec3)
97(norm): 96(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
52(i): 51(ptr) Variable Function 52(i): 51(ptr) Variable Function
56(tesscoord): 14(ptr) Variable Function 56(tesscoord): 14(ptr) Variable Function
63(pcf_data): 18(ptr) Variable Function 63(pcf_data): 18(ptr) Variable Function
88(param): 14(ptr) Variable Function 85(flattenTemp): 26(ptr) Variable Function
90(param): 18(ptr) Variable Function 87(param): 14(ptr) Variable Function
89(param): 18(ptr) Variable Function
55: 12 Load 54(i) 55: 12 Load 54(i)
Store 52(i) 55 Store 52(i) 55
59: 8(fvec3) Load 58(tesscoord) 59: 8(fvec3) Load 58(tesscoord)
@ -350,13 +384,19 @@ triangle order = none
83: 6(float) Load 82 83: 6(float) Load 82
84: 32(ptr) AccessChain 63(pcf_data) 39 84: 32(ptr) AccessChain 63(pcf_data) 39
Store 84 83 Store 84 83
87: 12 Load 52(i) 86: 12 Load 52(i)
89: 13(fvec2) Load 56(tesscoord) 88: 13(fvec2) Load 56(tesscoord)
Store 88(param) 89 Store 87(param) 88
91:17(pcf_in_t) Load 63(pcf_data) 90:17(pcf_in_t) Load 63(pcf_data)
Store 90(param) 91 Store 89(param) 90
92: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 87 88(param) 90(param) 91: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 86 87(param) 89(param)
Store 86(@entryPointOutput) 92 Store 85(flattenTemp) 91
94: 37(ptr) AccessChain 85(flattenTemp) 29
95: 7(fvec4) Load 94
Store 93(pos) 95
98: 46(ptr) AccessChain 85(flattenTemp) 39
99: 8(fvec3) Load 98
Store 97(norm) 99
Return Return
FunctionEnd FunctionEnd
24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20

View file

@ -11,9 +11,10 @@ gl_FragCoord origin is upper left
0:10 Function Definition: main( ( temp void) 0:10 Function Definition: main( ( temp void)
0:10 Function Parameters: 0:10 Function Parameters:
0:? Sequence 0:? Sequence
0:10 move second child to first child ( temp structure{}) 0:10 Sequence
0:? 'i' ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? 'i' ( in structure{}) 0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
0:10 Sequence 0:10 Sequence
0:10 move second child to first child ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? '@entryPointOutput' ( out structure{}) 0:? '@entryPointOutput' ( out structure{})
@ -37,9 +38,10 @@ gl_FragCoord origin is upper left
0:10 Function Definition: main( ( temp void) 0:10 Function Definition: main( ( temp void)
0:10 Function Parameters: 0:10 Function Parameters:
0:? Sequence 0:? Sequence
0:10 move second child to first child ( temp structure{}) 0:10 Sequence
0:? 'i' ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? 'i' ( in structure{}) 0:? 'i' ( temp structure{})
0:? 'i' ( in structure{})
0:10 Sequence 0:10 Sequence
0:10 move second child to first child ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? '@entryPointOutput' ( out structure{}) 0:? '@entryPointOutput' ( out structure{})

View file

@ -14,10 +14,11 @@ Shader version: 500
0:10 move second child to first child ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{}) 0:? 'i' ( temp structure{})
0:? 'i' ( in structure{}) 0:? 'i' ( in structure{})
0:10 move second child to first child ( temp structure{}) 0:10 Sequence
0:? '@entryPointOutput' ( out structure{}) 0:10 move second child to first child ( temp structure{})
0:10 Function Call: @main(struct-vs_in1; ( temp structure{}) 0:? '@entryPointOutput' ( out structure{})
0:? 'i' ( temp structure{}) 0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
0:? 'i' ( temp structure{})
0:? Linker Objects 0:? Linker Objects
@ -39,10 +40,11 @@ Shader version: 500
0:10 move second child to first child ( temp structure{}) 0:10 move second child to first child ( temp structure{})
0:? 'i' ( temp structure{}) 0:? 'i' ( temp structure{})
0:? 'i' ( in structure{}) 0:? 'i' ( in structure{})
0:10 move second child to first child ( temp structure{}) 0:10 Sequence
0:? '@entryPointOutput' ( out structure{}) 0:10 move second child to first child ( temp structure{})
0:10 Function Call: @main(struct-vs_in1; ( temp structure{}) 0:? '@entryPointOutput' ( out structure{})
0:? 'i' ( temp structure{}) 0:10 Function Call: @main(struct-vs_in1; ( temp structure{})
0:? 'i' ( temp structure{})
0:? Linker Objects 0:? Linker Objects
// Module Version 10000 // Module Version 10000

View file

@ -12,9 +12,31 @@ using depth_greater
0:15 Function Definition: main( ( temp void) 0:15 Function Definition: main( ( temp void)
0:15 Function Parameters: 0:15 Function Parameters:
0:? Sequence 0:? Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Sequence
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp float)
0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal}) 0:15 f: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 0 (const int)
0:? 'f' (layout( location=0) in float)
0:15 move second child to first child ( temp float)
0:15 g: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 1 (const int)
0:? 'g' (layout( location=1) centroid in float)
0:15 move second child to first child ( temp float)
0:15 d: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 2 (const int)
0:? 'd' (layout( location=2) in float)
0:15 move second child to first child ( temp 4-component vector of float)
0:15 normal: direct index for structure ( temp 4-component vector of float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 3 (const int)
0:? 'normal' (layout( location=3) in 4-component vector of float)
0:15 Sequence 0:15 Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
@ -51,7 +73,10 @@ using depth_greater
0:? 'g' (layout( location=1) out float) 0:? 'g' (layout( location=1) out float)
0:? 'd' ( out float FragDepth) 0:? 'd' ( out float FragDepth)
0:? 'normal' (layout( location=2) out 4-component vector of float) 0:? 'normal' (layout( location=2) out 4-component vector of float)
0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal}) 0:? 'f' (layout( location=0) in float)
0:? 'g' (layout( location=1) centroid in float)
0:? 'd' (layout( location=2) in float)
0:? 'normal' (layout( location=3) in 4-component vector of float)
Linked fragment stage: Linked fragment stage:
@ -70,9 +95,31 @@ using depth_greater
0:15 Function Definition: main( ( temp void) 0:15 Function Definition: main( ( temp void)
0:15 Function Parameters: 0:15 Function Parameters:
0:? Sequence 0:? Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 Sequence
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp float)
0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal}) 0:15 f: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 0 (const int)
0:? 'f' (layout( location=0) in float)
0:15 move second child to first child ( temp float)
0:15 g: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 1 (const int)
0:? 'g' (layout( location=1) centroid in float)
0:15 move second child to first child ( temp float)
0:15 d: direct index for structure ( temp float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 2 (const int)
0:? 'd' (layout( location=2) in float)
0:15 move second child to first child ( temp 4-component vector of float)
0:15 normal: direct index for structure ( temp 4-component vector of float)
0:? 't' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 Constant:
0:15 3 (const int)
0:? 'normal' (layout( location=3) in 4-component vector of float)
0:15 Sequence 0:15 Sequence
0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 move second child to first child ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal}) 0:15 'flattenTemp' ( temp structure{ temp float f, temp float g, temp float d, temp 4-component vector of float normal})
@ -109,16 +156,19 @@ using depth_greater
0:? 'g' (layout( location=1) out float) 0:? 'g' (layout( location=1) out float)
0:? 'd' ( out float FragDepth) 0:? 'd' ( out float FragDepth)
0:? 'normal' (layout( location=2) out 4-component vector of float) 0:? 'normal' (layout( location=2) out 4-component vector of float)
0:? 't' (layout( location=0) in structure{ temp float f, centroid temp float g, temp float d, temp 4-component vector of float normal}) 0:? 'f' (layout( location=0) in float)
0:? 'g' (layout( location=1) centroid in float)
0:? 'd' (layout( location=2) in float)
0:? 'normal' (layout( location=3) in 4-component vector of float)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
// Id's are bound by 64 // Id's are bound by 66
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 21 43 46 49 53 EntryPoint Fragment 4 "main" 22 27 31 36 45 48 51 55
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 DepthGreater ExecutionMode 4 DepthGreater
Source HLSL 500 Source HLSL 500
@ -132,54 +182,55 @@ using depth_greater
Name 11 "t" Name 11 "t"
Name 14 "local" Name 14 "local"
Name 18 "t" Name 18 "t"
Name 19 "T" Name 22 "f"
MemberName 19(T) 0 "f" Name 27 "g"
MemberName 19(T) 1 "g" Name 31 "d"
MemberName 19(T) 2 "d" Name 36 "normal"
MemberName 19(T) 3 "normal" Name 40 "flattenTemp"
Name 21 "t" Name 41 "param"
Name 38 "flattenTemp" Name 45 "f"
Name 39 "param" Name 48 "g"
Name 43 "f" Name 51 "d"
Name 46 "g" Name 55 "normal"
Name 49 "d" Name 58 "T"
Name 53 "normal" MemberName 58(T) 0 "f"
Name 56 "T" MemberName 58(T) 1 "g"
MemberName 56(T) 0 "f" MemberName 58(T) 2 "d"
MemberName 56(T) 1 "g" MemberName 58(T) 3 "normal"
MemberName 56(T) 2 "d" Name 59 "$Global"
MemberName 56(T) 3 "normal" MemberName 59($Global) 0 "s"
Name 57 "$Global" Name 61 ""
MemberName 57($Global) 0 "s" Name 62 "T"
Name 59 "" MemberName 62(T) 0 "f"
Name 60 "T" MemberName 62(T) 1 "g"
MemberName 60(T) 0 "f" MemberName 62(T) 2 "d"
MemberName 60(T) 1 "g" MemberName 62(T) 3 "normal"
MemberName 60(T) 2 "d" Name 63 "buff"
MemberName 60(T) 3 "normal" MemberName 63(buff) 0 "t"
Name 61 "buff" Name 65 ""
MemberName 61(buff) 0 "t" Decorate 22(f) Location 0
Name 63 "" Decorate 27(g) Centroid
MemberDecorate 19(T) 1 Centroid Decorate 27(g) Location 1
Decorate 21(t) Location 0 Decorate 31(d) Location 2
Decorate 43(f) Location 0 Decorate 36(normal) Location 3
Decorate 46(g) Location 1 Decorate 45(f) Location 0
Decorate 49(d) BuiltIn FragDepth Decorate 48(g) Location 1
Decorate 53(normal) Location 2 Decorate 51(d) BuiltIn FragDepth
MemberDecorate 56(T) 0 Offset 68 Decorate 55(normal) Location 2
MemberDecorate 56(T) 1 Offset 72 MemberDecorate 58(T) 0 Offset 68
MemberDecorate 56(T) 2 Offset 76 MemberDecorate 58(T) 1 Offset 72
MemberDecorate 56(T) 3 Offset 80 MemberDecorate 58(T) 2 Offset 76
MemberDecorate 57($Global) 0 Offset 0 MemberDecorate 58(T) 3 Offset 80
Decorate 57($Global) Block MemberDecorate 59($Global) 0 Offset 0
Decorate 59 DescriptorSet 0 Decorate 59($Global) Block
MemberDecorate 60(T) 0 Offset 0 Decorate 61 DescriptorSet 0
MemberDecorate 60(T) 1 Offset 4 MemberDecorate 62(T) 0 Offset 0
MemberDecorate 60(T) 2 Offset 8 MemberDecorate 62(T) 1 Offset 4
MemberDecorate 60(T) 3 Offset 16 MemberDecorate 62(T) 2 Offset 8
MemberDecorate 61(buff) 0 Offset 96 MemberDecorate 62(T) 3 Offset 16
Decorate 61(buff) Block MemberDecorate 63(buff) 0 Offset 96
Decorate 63 DescriptorSet 0 Decorate 63(buff) Block
Decorate 65 DescriptorSet 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -187,64 +238,66 @@ using depth_greater
8(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 8(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
9: TypePointer Function 8(T) 9: TypePointer Function 8(T)
10: TypeFunction 8(T) 9(ptr) 10: TypeFunction 8(T) 9(ptr)
19(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 19: TypeInt 32 1
20: TypePointer Input 19(T) 20: 19(int) Constant 0
21(t): 20(ptr) Variable Input 21: TypePointer Input 6(float)
24: TypeInt 32 1 22(f): 21(ptr) Variable Input
25: 24(int) Constant 0 24: TypePointer Function 6(float)
26: TypePointer Function 6(float) 26: 19(int) Constant 1
29: 24(int) Constant 1 27(g): 21(ptr) Variable Input
32: 24(int) Constant 2 30: 19(int) Constant 2
35: 24(int) Constant 3 31(d): 21(ptr) Variable Input
36: TypePointer Function 7(fvec4) 34: 19(int) Constant 3
42: TypePointer Output 6(float) 35: TypePointer Input 7(fvec4)
43(f): 42(ptr) Variable Output 36(normal): 35(ptr) Variable Input
46(g): 42(ptr) Variable Output 38: TypePointer Function 7(fvec4)
49(d): 42(ptr) Variable Output 44: TypePointer Output 6(float)
52: TypePointer Output 7(fvec4) 45(f): 44(ptr) Variable Output
53(normal): 52(ptr) Variable Output 48(g): 44(ptr) Variable Output
56(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 51(d): 44(ptr) Variable Output
57($Global): TypeStruct 56(T) 54: TypePointer Output 7(fvec4)
58: TypePointer Uniform 57($Global) 55(normal): 54(ptr) Variable Output
59: 58(ptr) Variable Uniform 58(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
60(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4) 59($Global): TypeStruct 58(T)
61(buff): TypeStruct 60(T) 60: TypePointer Uniform 59($Global)
62: TypePointer Uniform 61(buff) 61: 60(ptr) Variable Uniform
63: 62(ptr) Variable Uniform 62(T): TypeStruct 6(float) 6(float) 6(float) 7(fvec4)
63(buff): TypeStruct 62(T)
64: TypePointer Uniform 63(buff)
65: 64(ptr) Variable Uniform
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
18(t): 9(ptr) Variable Function 18(t): 9(ptr) Variable Function
38(flattenTemp): 9(ptr) Variable Function 40(flattenTemp): 9(ptr) Variable Function
39(param): 9(ptr) Variable Function 41(param): 9(ptr) Variable Function
22: 19(T) Load 21(t) 23: 6(float) Load 22(f)
23: 6(float) CompositeExtract 22 0 25: 24(ptr) AccessChain 18(t) 20
27: 26(ptr) AccessChain 18(t) 25 Store 25 23
Store 27 23 28: 6(float) Load 27(g)
28: 6(float) CompositeExtract 22 1 29: 24(ptr) AccessChain 18(t) 26
30: 26(ptr) AccessChain 18(t) 29 Store 29 28
Store 30 28 32: 6(float) Load 31(d)
31: 6(float) CompositeExtract 22 2 33: 24(ptr) AccessChain 18(t) 30
33: 26(ptr) AccessChain 18(t) 32 Store 33 32
Store 33 31 37: 7(fvec4) Load 36(normal)
34: 7(fvec4) CompositeExtract 22 3 39: 38(ptr) AccessChain 18(t) 34
37: 36(ptr) AccessChain 18(t) 35 Store 39 37
Store 37 34 42: 8(T) Load 18(t)
40: 8(T) Load 18(t) Store 41(param) 42
Store 39(param) 40 43: 8(T) FunctionCall 12(@main(struct-T-f1-f1-f1-vf41;) 41(param)
41: 8(T) FunctionCall 12(@main(struct-T-f1-f1-f1-vf41;) 39(param) Store 40(flattenTemp) 43
Store 38(flattenTemp) 41 46: 24(ptr) AccessChain 40(flattenTemp) 20
44: 26(ptr) AccessChain 38(flattenTemp) 25 47: 6(float) Load 46
45: 6(float) Load 44 Store 45(f) 47
Store 43(f) 45 49: 24(ptr) AccessChain 40(flattenTemp) 26
47: 26(ptr) AccessChain 38(flattenTemp) 29 50: 6(float) Load 49
48: 6(float) Load 47 Store 48(g) 50
Store 46(g) 48 52: 24(ptr) AccessChain 40(flattenTemp) 30
50: 26(ptr) AccessChain 38(flattenTemp) 32 53: 6(float) Load 52
51: 6(float) Load 50 Store 51(d) 53
Store 49(d) 51 56: 38(ptr) AccessChain 40(flattenTemp) 34
54: 36(ptr) AccessChain 38(flattenTemp) 35 57: 7(fvec4) Load 56
55: 7(fvec4) Load 54 Store 55(normal) 57
Store 53(normal) 55
Return Return
FunctionEnd FunctionEnd
12(@main(struct-T-f1-f1-f1-vf41;): 8(T) Function None 10 12(@main(struct-T-f1-f1-f1-vf41;): 8(T) Function None 10

View file

@ -24,16 +24,27 @@ gl_FragCoord origin is upper left
0:7 Function Definition: main( ( temp void) 0:7 Function Definition: main( ( temp void)
0:7 Function Parameters: 0:7 Function Parameters:
0:? Sequence 0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:7 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:7 move second child to first child ( temp uint)
0:7 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
Linked fragment stage: Linked fragment stage:
@ -64,16 +75,27 @@ gl_FragCoord origin is upper left
0:7 Function Definition: main( ( temp void) 0:7 Function Definition: main( ( temp void)
0:7 Function Parameters: 0:7 Function Parameters:
0:? Sequence 0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:7 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:7 move second child to first child ( temp uint)
0:7 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float) 0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float) 0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80001 // Generated by (magic number): 80001
@ -82,7 +104,7 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33 40 EntryPoint Fragment 4 "main" 32 36 40
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -92,14 +114,13 @@ gl_FragCoord origin is upper left
Name 13 "@main(struct-PSInput-f1-u11;" Name 13 "@main(struct-PSInput-f1-u11;"
Name 12 "input" Name 12 "input"
Name 30 "input" Name 30 "input"
Name 31 "PSInput" Name 32 "interp"
MemberName 31(PSInput) 0 "interp" Name 36 "no_interp"
MemberName 31(PSInput) 1 "no_interp"
Name 33 "input"
Name 40 "@entryPointOutput" Name 40 "@entryPointOutput"
Name 41 "param" Name 41 "param"
MemberDecorate 31(PSInput) 1 Flat Decorate 32(interp) Location 0
Decorate 33(input) Location 0 Decorate 36(no_interp) Flat
Decorate 36(no_interp) Location 1
Decorate 40(@entryPointOutput) Location 0 Decorate 40(@entryPointOutput) Location 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
@ -116,20 +137,20 @@ gl_FragCoord origin is upper left
22: TypePointer Function 6(float) 22: TypePointer Function 6(float)
25: 6(float) Constant 0 25: 6(float) Constant 0
26: 6(float) Constant 1065353216 26: 6(float) Constant 1065353216
31(PSInput): TypeStruct 6(float) 7(int) 31: TypePointer Input 6(float)
32: TypePointer Input 31(PSInput) 32(interp): 31(ptr) Variable Input
33(input): 32(ptr) Variable Input 35: TypePointer Input 7(int)
36(no_interp): 35(ptr) Variable Input
39: TypePointer Output 10(fvec4) 39: TypePointer Output 10(fvec4)
40(@entryPointOutput): 39(ptr) Variable Output 40(@entryPointOutput): 39(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
30(input): 9(ptr) Variable Function 30(input): 9(ptr) Variable Function
41(param): 9(ptr) Variable Function 41(param): 9(ptr) Variable Function
34: 31(PSInput) Load 33(input) 33: 6(float) Load 32(interp)
35: 6(float) CompositeExtract 34 0 34: 22(ptr) AccessChain 30(input) 21
36: 22(ptr) AccessChain 30(input) 21 Store 34 33
Store 36 35 37: 7(int) Load 36(no_interp)
37: 7(int) CompositeExtract 34 1
38: 17(ptr) AccessChain 30(input) 16 38: 17(ptr) AccessChain 30(input) 16
Store 38 37 Store 38 37
42: 8(PSInput) Load 30(input) 42: 8(PSInput) Load 30(input)

View file

@ -25,9 +25,19 @@ gl_FragCoord origin is upper left
0:7 Function Definition: main( ( temp void) 0:7 Function Definition: main( ( temp void)
0:7 Function Parameters: 0:7 Function Parameters:
0:? Sequence 0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:7 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:7 move second child to first child ( temp uint)
0:7 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? 'out1' ( temp 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float)
@ -39,7 +49,8 @@ gl_FragCoord origin is upper left
0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float)
0:? 'out2' ( temp 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float)
0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float)
@ -73,9 +84,19 @@ gl_FragCoord origin is upper left
0:7 Function Definition: main( ( temp void) 0:7 Function Definition: main( ( temp void)
0:7 Function Parameters: 0:7 Function Parameters:
0:? Sequence 0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:7 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:7 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:7 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:7 move second child to first child ( temp uint)
0:7 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:7 Constant:
0:7 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void) 0:7 Function Call: @main(struct-PSInput-f1-u11;vf4;vf4; ( temp void)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? 'out1' ( temp 4-component vector of float) 0:? 'out1' ( temp 4-component vector of float)
@ -87,7 +108,8 @@ gl_FragCoord origin is upper left
0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float)
0:? 'out2' ( temp 4-component vector of float) 0:? 'out2' ( temp 4-component vector of float)
0:? Linker Objects 0:? Linker Objects
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'out1' (layout( location=1) out 4-component vector of float) 0:? 'out1' (layout( location=1) out 4-component vector of float)
0:? 'out2' (layout( location=3) out 4-component vector of float) 0:? 'out2' (layout( location=3) out 4-component vector of float)
@ -98,7 +120,7 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 25 46 48 EntryPoint Fragment 4 "main" 26 32 46 48
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -110,10 +132,8 @@ gl_FragCoord origin is upper left
Name 14 "out1" Name 14 "out1"
Name 15 "out2" Name 15 "out2"
Name 22 "input" Name 22 "input"
Name 23 "PSInput" Name 26 "interp"
MemberName 23(PSInput) 0 "interp" Name 32 "no_interp"
MemberName 23(PSInput) 1 "no_interp"
Name 25 "input"
Name 36 "out1" Name 36 "out1"
Name 37 "out2" Name 37 "out2"
Name 38 "param" Name 38 "param"
@ -121,8 +141,9 @@ gl_FragCoord origin is upper left
Name 41 "param" Name 41 "param"
Name 46 "out1" Name 46 "out1"
Name 48 "out2" Name 48 "out2"
MemberDecorate 23(PSInput) 1 Flat Decorate 26(interp) Location 0
Decorate 25(input) Location 0 Decorate 32(no_interp) Flat
Decorate 32(no_interp) Location 1
Decorate 46(out1) Location 1 Decorate 46(out1) Location 1
Decorate 48(out2) Location 3 Decorate 48(out2) Location 3
2: TypeVoid 2: TypeVoid
@ -138,13 +159,14 @@ gl_FragCoord origin is upper left
19: 10(fvec4) ConstantComposite 18 18 18 18 19: 10(fvec4) ConstantComposite 18 18 18 18
20: 6(float) Constant 0 20: 6(float) Constant 0
21: 10(fvec4) ConstantComposite 20 20 20 20 21: 10(fvec4) ConstantComposite 20 20 20 20
23(PSInput): TypeStruct 6(float) 7(int) 23: TypeInt 32 1
24: TypePointer Input 23(PSInput) 24: 23(int) Constant 0
25(input): 24(ptr) Variable Input 25: TypePointer Input 6(float)
28: TypeInt 32 1 26(interp): 25(ptr) Variable Input
29: 28(int) Constant 0 28: TypePointer Function 6(float)
30: TypePointer Function 6(float) 30: 23(int) Constant 1
33: 28(int) Constant 1 31: TypePointer Input 7(int)
32(no_interp): 31(ptr) Variable Input
34: TypePointer Function 7(int) 34: TypePointer Function 7(int)
45: TypePointer Output 10(fvec4) 45: TypePointer Output 10(fvec4)
46(out1): 45(ptr) Variable Output 46(out1): 45(ptr) Variable Output
@ -157,13 +179,12 @@ gl_FragCoord origin is upper left
38(param): 9(ptr) Variable Function 38(param): 9(ptr) Variable Function
40(param): 11(ptr) Variable Function 40(param): 11(ptr) Variable Function
41(param): 11(ptr) Variable Function 41(param): 11(ptr) Variable Function
26: 23(PSInput) Load 25(input) 27: 6(float) Load 26(interp)
27: 6(float) CompositeExtract 26 0 29: 28(ptr) AccessChain 22(input) 24
31: 30(ptr) AccessChain 22(input) 29 Store 29 27
Store 31 27 33: 7(int) Load 32(no_interp)
32: 7(int) CompositeExtract 26 1 35: 34(ptr) AccessChain 22(input) 30
35: 34(ptr) AccessChain 22(input) 33 Store 35 33
Store 35 32
39: 8(PSInput) Load 22(input) 39: 8(PSInput) Load 22(input)
Store 38(param) 39 Store 38(param) 39
42: 2 FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;vf4;) 38(param) 40(param) 41(param) 42: 2 FunctionCall 16(@main(struct-PSInput-f1-u11;vf4;vf4;) 38(param) 40(param) 41(param)

View file

@ -48,9 +48,19 @@ gl_FragCoord origin is upper left
0:12 Function Definition: main( ( temp void) 0:12 Function Definition: main( ( temp void)
0:12 Function Parameters: 0:12 Function Parameters:
0:? Sequence 0:? Sequence
0:12 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:12 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:12 move second child to first child ( temp uint)
0:12 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:12 Sequence 0:12 Sequence
0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
@ -75,7 +85,8 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'o1' (layout( location=2) out 4-component vector of float) 0:? 'o1' (layout( location=2) out 4-component vector of float)
0:? 'o2' (layout( location=1) out 4-component vector of float) 0:? 'o2' (layout( location=1) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float)
@ -131,9 +142,19 @@ gl_FragCoord origin is upper left
0:12 Function Definition: main( ( temp void) 0:12 Function Definition: main( ( temp void)
0:12 Function Parameters: 0:12 Function Parameters:
0:? Sequence 0:? Sequence
0:12 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:12 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:12 move second child to first child ( temp uint)
0:12 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:12 Sequence 0:12 Sequence
0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
@ -158,7 +179,8 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'o1' (layout( location=2) out 4-component vector of float) 0:? 'o1' (layout( location=2) out 4-component vector of float)
0:? 'o2' (layout( location=1) out 4-component vector of float) 0:? 'o2' (layout( location=1) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float)
// Module Version 10000 // Module Version 10000
@ -168,7 +190,7 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 43 57 60 63 EntryPoint Fragment 4 "main" 42 46 57 60 63
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -183,10 +205,8 @@ gl_FragCoord origin is upper left
Name 15 "po" Name 15 "po"
Name 19 "pso" Name 19 "pso"
Name 40 "input" Name 40 "input"
Name 41 "PSInput" Name 42 "interp"
MemberName 41(PSInput) 0 "interp" Name 46 "no_interp"
MemberName 41(PSInput) 1 "no_interp"
Name 43 "input"
Name 49 "flattenTemp" Name 49 "flattenTemp"
Name 50 "po" Name 50 "po"
Name 51 "param" Name 51 "param"
@ -194,8 +214,9 @@ gl_FragCoord origin is upper left
Name 57 "o1" Name 57 "o1"
Name 60 "o2" Name 60 "o2"
Name 63 "po" Name 63 "po"
MemberDecorate 41(PSInput) 1 Flat Decorate 42(interp) Location 0
Decorate 43(input) Location 0 Decorate 46(no_interp) Flat
Decorate 46(no_interp) Location 1
Decorate 57(o1) Location 2 Decorate 57(o1) Location 2
Decorate 60(o2) Location 1 Decorate 60(o2) Location 1
Decorate 63(po) Location 0 Decorate 63(po) Location 0
@ -219,9 +240,10 @@ gl_FragCoord origin is upper left
31: 6(float) Constant 1065353216 31: 6(float) Constant 1065353216
34: 10(fvec4) ConstantComposite 31 31 31 31 34: 10(fvec4) ConstantComposite 31 31 31 31
36: 10(fvec4) ConstantComposite 30 30 30 30 36: 10(fvec4) ConstantComposite 30 30 30 30
41(PSInput): TypeStruct 6(float) 7(int) 41: TypePointer Input 6(float)
42: TypePointer Input 41(PSInput) 42(interp): 41(ptr) Variable Input
43(input): 42(ptr) Variable Input 45: TypePointer Input 7(int)
46(no_interp): 45(ptr) Variable Input
56: TypePointer Output 10(fvec4) 56: TypePointer Output 10(fvec4)
57(o1): 56(ptr) Variable Output 57(o1): 56(ptr) Variable Output
60(o2): 56(ptr) Variable Output 60(o2): 56(ptr) Variable Output
@ -233,11 +255,10 @@ gl_FragCoord origin is upper left
50(po): 11(ptr) Variable Function 50(po): 11(ptr) Variable Function
51(param): 9(ptr) Variable Function 51(param): 9(ptr) Variable Function
53(param): 11(ptr) Variable Function 53(param): 11(ptr) Variable Function
44: 41(PSInput) Load 43(input) 43: 6(float) Load 42(interp)
45: 6(float) CompositeExtract 44 0 44: 27(ptr) AccessChain 40(input) 21
46: 27(ptr) AccessChain 40(input) 21 Store 44 43
Store 46 45 47: 7(int) Load 46(no_interp)
47: 7(int) CompositeExtract 44 1
48: 23(ptr) AccessChain 40(input) 22 48: 23(ptr) AccessChain 40(input) 22
Store 48 47 Store 48 47
52: 8(PSInput) Load 40(input) 52: 8(PSInput) Load 40(input)

View file

@ -48,9 +48,19 @@ gl_FragCoord origin is upper left
0:12 Function Definition: main( ( temp void) 0:12 Function Definition: main( ( temp void)
0:12 Function Parameters: 0:12 Function Parameters:
0:? Sequence 0:? Sequence
0:12 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:12 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:12 move second child to first child ( temp uint)
0:12 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:12 Sequence 0:12 Sequence
0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
@ -75,7 +85,8 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'o1' (layout( location=2) out 4-component vector of float) 0:? 'o1' (layout( location=2) out 4-component vector of float)
0:? 'o2' (layout( location=3) out 4-component vector of float) 0:? 'o2' (layout( location=3) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float)
@ -131,9 +142,19 @@ gl_FragCoord origin is upper left
0:12 Function Definition: main( ( temp void) 0:12 Function Definition: main( ( temp void)
0:12 Function Parameters: 0:12 Function Parameters:
0:? Sequence 0:? Sequence
0:12 move second child to first child ( temp structure{ temp float interp, temp uint no_interp}) 0:12 Sequence
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp}) 0:12 move second child to first child ( temp float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:12 interp: direct index for structure ( temp float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 0 (const int)
0:? 'interp' (layout( location=0) in float)
0:12 move second child to first child ( temp uint)
0:12 no_interp: direct index for structure ( temp uint)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:12 Constant:
0:12 1 (const int)
0:? 'no_interp' (layout( location=1) flat in uint)
0:12 Sequence 0:12 Sequence
0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 move second child to first child ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2}) 0:12 'flattenTemp' ( temp structure{ temp 4-component vector of float o1, temp 4-component vector of float o2})
@ -158,7 +179,8 @@ gl_FragCoord origin is upper left
0:? Linker Objects 0:? Linker Objects
0:? 'o1' (layout( location=2) out 4-component vector of float) 0:? 'o1' (layout( location=2) out 4-component vector of float)
0:? 'o2' (layout( location=3) out 4-component vector of float) 0:? 'o2' (layout( location=3) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp}) 0:? 'interp' (layout( location=0) in float)
0:? 'no_interp' (layout( location=1) flat in uint)
0:? 'po' (layout( location=0) out 4-component vector of float) 0:? 'po' (layout( location=0) out 4-component vector of float)
// Module Version 10000 // Module Version 10000
@ -168,7 +190,7 @@ gl_FragCoord origin is upper left
Capability Shader Capability Shader
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 43 57 60 63 EntryPoint Fragment 4 "main" 42 46 57 60 63
ExecutionMode 4 OriginUpperLeft ExecutionMode 4 OriginUpperLeft
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -183,10 +205,8 @@ gl_FragCoord origin is upper left
Name 15 "po" Name 15 "po"
Name 19 "pso" Name 19 "pso"
Name 40 "input" Name 40 "input"
Name 41 "PSInput" Name 42 "interp"
MemberName 41(PSInput) 0 "interp" Name 46 "no_interp"
MemberName 41(PSInput) 1 "no_interp"
Name 43 "input"
Name 49 "flattenTemp" Name 49 "flattenTemp"
Name 50 "po" Name 50 "po"
Name 51 "param" Name 51 "param"
@ -194,8 +214,9 @@ gl_FragCoord origin is upper left
Name 57 "o1" Name 57 "o1"
Name 60 "o2" Name 60 "o2"
Name 63 "po" Name 63 "po"
MemberDecorate 41(PSInput) 1 Flat Decorate 42(interp) Location 0
Decorate 43(input) Location 0 Decorate 46(no_interp) Flat
Decorate 46(no_interp) Location 1
Decorate 57(o1) Location 2 Decorate 57(o1) Location 2
Decorate 60(o2) Location 3 Decorate 60(o2) Location 3
Decorate 63(po) Location 0 Decorate 63(po) Location 0
@ -219,9 +240,10 @@ gl_FragCoord origin is upper left
31: 6(float) Constant 1065353216 31: 6(float) Constant 1065353216
34: 10(fvec4) ConstantComposite 31 31 31 31 34: 10(fvec4) ConstantComposite 31 31 31 31
36: 10(fvec4) ConstantComposite 30 30 30 30 36: 10(fvec4) ConstantComposite 30 30 30 30
41(PSInput): TypeStruct 6(float) 7(int) 41: TypePointer Input 6(float)
42: TypePointer Input 41(PSInput) 42(interp): 41(ptr) Variable Input
43(input): 42(ptr) Variable Input 45: TypePointer Input 7(int)
46(no_interp): 45(ptr) Variable Input
56: TypePointer Output 10(fvec4) 56: TypePointer Output 10(fvec4)
57(o1): 56(ptr) Variable Output 57(o1): 56(ptr) Variable Output
60(o2): 56(ptr) Variable Output 60(o2): 56(ptr) Variable Output
@ -233,11 +255,10 @@ gl_FragCoord origin is upper left
50(po): 11(ptr) Variable Function 50(po): 11(ptr) Variable Function
51(param): 9(ptr) Variable Function 51(param): 9(ptr) Variable Function
53(param): 11(ptr) Variable Function 53(param): 11(ptr) Variable Function
44: 41(PSInput) Load 43(input) 43: 6(float) Load 42(interp)
45: 6(float) CompositeExtract 44 0 44: 27(ptr) AccessChain 40(input) 21
46: 27(ptr) AccessChain 40(input) 21 Store 44 43
Store 46 45 47: 7(int) Load 46(no_interp)
47: 7(int) CompositeExtract 44 1
48: 23(ptr) AccessChain 40(input) 22 48: 23(ptr) AccessChain 40(input) 22
Store 48 47 Store 48 47
52: 8(PSInput) Load 40(input) 52: 8(PSInput) Load 40(input)

View file

@ -1904,6 +1904,10 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
// Structs containing built-ins must be split // Structs containing built-ins must be split
else if (variable.getType().containsBuiltIn()) else if (variable.getType().containsBuiltIn())
split(variable); split(variable);
else if (!variable.getType().getQualifier().isArrayedIo(language))
flatten(variable);
//else
// TODO: unify split and flatten, so all paths can create flattened I/O
} }
// For clip and cull distance, multiple output variables potentially get merged // For clip and cull distance, multiple output variables potentially get merged
@ -1915,7 +1919,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
if (entryPointOutput != nullptr) if (entryPointOutput != nullptr)
makeVariableInOut(*entryPointOutput); makeVariableInOut(*entryPointOutput);
for (auto it = inputs.begin(); it != inputs.end(); ++it) for (auto it = inputs.begin(); it != inputs.end(); ++it)
if (!isDsPcfInput((*it)->getType())) // skip domain shader PCF input (see comment below) if (!isDsPcfInput((*it)->getType())) // wait until the end for PCF input (see comment below)
makeVariableInOut(*(*it)); makeVariableInOut(*(*it));
for (auto it = outputs.begin(); it != outputs.end(); ++it) for (auto it = outputs.begin(); it != outputs.end(); ++it)
makeVariableInOut(*(*it)); makeVariableInOut(*(*it));
@ -1927,7 +1931,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
// however, so this ensures the linkage is built in the correct order regardless of argument order. // however, so this ensures the linkage is built in the correct order regardless of argument order.
if (language == EShLangTessEvaluation) { if (language == EShLangTessEvaluation) {
for (auto it = inputs.begin(); it != inputs.end(); ++it) for (auto it = inputs.begin(); it != inputs.end(); ++it)
if (isDsPcfInput((*it)->getType())) // skip domain shader PCF input (see comment below) if (isDsPcfInput((*it)->getType()))
makeVariableInOut(*(*it)); makeVariableInOut(*(*it));
} }