HLSL: Wrap the entry-point; need to write 'in' args, and support 'inout' args.

This needs some render testing, but is destined to be part of master.

This also leads to a variety of other simplifications.
 - IO are global symbols, so only need one list of linkage nodes (deferred)
 - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized
 - several parts of splitting/flattening are now localized
This commit is contained in:
John Kessenich
2017-01-19 15:41:47 -07:00
parent 18adbdbbb8
commit 02467d8d94
171 changed files with 37604 additions and 32679 deletions

View File

@@ -2,7 +2,7 @@ hlsl.samplebias.offsetarray.dx10.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -112,24 +112,28 @@ gl_FragCoord origin is upper left
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
0:36 Sequence
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:36 Color: direct index for structure (temp 4-component vector of float)
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 0 (const int)
0:36 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:36 Depth: direct index for structure (temp float)
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 1 (const int)
0:36 Branch: Return
0:36 Branch: Return with expression
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Definition: main( (temp void)
0:20 Function Parameters:
0:? Sequence
0:20 Sequence
0:20 move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:20 Color: direct index for structure (temp 4-component vector of float)
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:20 Depth: direct index for structure (temp float)
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 1 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -138,6 +142,8 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
Linked fragment stage:
@@ -146,7 +152,7 @@ Linked fragment stage:
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:20 Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Definition: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Parameters:
0:? Sequence
0:23 Sequence
@@ -256,24 +262,28 @@ gl_FragCoord origin is upper left
0:34 1 (const int)
0:34 Constant:
0:34 1.000000
0:36 Sequence
0:36 Sequence
0:36 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:36 Color: direct index for structure (temp 4-component vector of float)
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 0 (const int)
0:36 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:36 Depth: direct index for structure (temp float)
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:36 Constant:
0:36 1 (const int)
0:36 Branch: Return
0:36 Branch: Return with expression
0:36 'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Definition: main( (temp void)
0:20 Function Parameters:
0:? Sequence
0:20 Sequence
0:20 move second child to first child (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Function Call: @main( (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 move second child to first child (temp 4-component vector of float)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:20 Color: direct index for structure (temp 4-component vector of float)
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child (temp float)
0:? 'Depth' (out float FragDepth)
0:20 Depth: direct index for structure (temp float)
0:20 'flattenTemp' (temp structure{temp 4-component vector of float Color, temp float Depth})
0:20 Constant:
0:20 1 (const int)
0:? Linker Objects
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
0:? 'g_sSamp' (layout(binding=0 ) uniform sampler)
0:? 'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
0:? 'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -282,168 +292,181 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2df4' (uniform texture2DArray)
0:? 'g_tTex2di4' (uniform itexture2DArray)
0:? 'g_tTex2du4' (uniform utexture2DArray)
0:? 'Color' (layout(location=0 ) out 4-component vector of float)
0:? 'Depth' (out float FragDepth)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 111
// Id's are bound by 118
Capability Shader
Capability Sampled1D
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 102 106
EntryPoint Fragment 4 "main" 110 114
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 9 "txval10"
Name 12 "g_tTex1df4"
Name 16 "g_sSamp"
Name 30 "txval11"
Name 33 "g_tTex1di4"
Name 45 "txval12"
Name 48 "g_tTex1du4"
Name 57 "txval20"
Name 60 "g_tTex2df4"
Name 70 "txval21"
Name 73 "g_tTex2di4"
Name 80 "txval22"
Name 83 "g_tTex2du4"
Name 93 "PS_OUTPUT"
MemberName 93(PS_OUTPUT) 0 "Color"
MemberName 93(PS_OUTPUT) 1 "Depth"
Name 95 "psout"
Name 102 "Color"
Name 106 "Depth"
Name 110 "g_tTex1df4a"
Decorate 12(g_tTex1df4) DescriptorSet 0
Decorate 12(g_tTex1df4) Binding 0
Decorate 16(g_sSamp) DescriptorSet 0
Decorate 16(g_sSamp) Binding 0
Decorate 33(g_tTex1di4) DescriptorSet 0
Decorate 48(g_tTex1du4) DescriptorSet 0
Decorate 60(g_tTex2df4) DescriptorSet 0
Decorate 73(g_tTex2di4) DescriptorSet 0
Decorate 83(g_tTex2du4) DescriptorSet 0
Decorate 102(Color) Location 0
Decorate 106(Depth) BuiltIn FragDepth
Decorate 110(g_tTex1df4a) DescriptorSet 0
Decorate 110(g_tTex1df4a) Binding 1
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
MemberName 8(PS_OUTPUT) 1 "Depth"
Name 10 "@main("
Name 13 "txval10"
Name 16 "g_tTex1df4"
Name 20 "g_sSamp"
Name 34 "txval11"
Name 37 "g_tTex1di4"
Name 49 "txval12"
Name 52 "g_tTex1du4"
Name 61 "txval20"
Name 64 "g_tTex2df4"
Name 74 "txval21"
Name 77 "g_tTex2di4"
Name 84 "txval22"
Name 87 "g_tTex2du4"
Name 98 "psout"
Name 107 "flattenTemp"
Name 110 "Color"
Name 114 "Depth"
Name 117 "g_tTex1df4a"
Decorate 16(g_tTex1df4) DescriptorSet 0
Decorate 16(g_tTex1df4) Binding 0
Decorate 20(g_sSamp) DescriptorSet 0
Decorate 20(g_sSamp) Binding 0
Decorate 37(g_tTex1di4) DescriptorSet 0
Decorate 52(g_tTex1du4) DescriptorSet 0
Decorate 64(g_tTex2df4) DescriptorSet 0
Decorate 77(g_tTex2di4) DescriptorSet 0
Decorate 87(g_tTex2du4) DescriptorSet 0
Decorate 110(Color) Location 0
Decorate 114(Depth) BuiltIn FragDepth
Decorate 117(g_tTex1df4a) DescriptorSet 0
Decorate 117(g_tTex1df4a) Binding 1
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
10: TypeImage 6(float) 1D array sampled format:Unknown
11: TypePointer UniformConstant 10
12(g_tTex1df4): 11(ptr) Variable UniformConstant
14: TypeSampler
8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 7(fvec4)
14: TypeImage 6(float) 1D array sampled format:Unknown
15: TypePointer UniformConstant 14
16(g_sSamp): 15(ptr) Variable UniformConstant
18: TypeSampledImage 10
20: TypeVector 6(float) 2
21: 6(float) Constant 1036831949
22: 6(float) Constant 1045220557
23: 20(fvec2) ConstantComposite 21 22
24: 6(float) Constant 1056964608
25: TypeInt 32 1
26: 25(int) Constant 0
28: TypeVector 25(int) 4
29: TypePointer Function 28(ivec4)
31: TypeImage 25(int) 1D array sampled format:Unknown
32: TypePointer UniformConstant 31
33(g_tTex1di4): 32(ptr) Variable UniformConstant
36: TypeSampledImage 31
38: 6(float) Constant 1050253722
39: 20(fvec2) ConstantComposite 22 38
40: 25(int) Constant 1
42: TypeInt 32 0
43: TypeVector 42(int) 4
44: TypePointer Function 43(ivec4)
46: TypeImage 42(int) 1D array sampled format:Unknown
47: TypePointer UniformConstant 46
48(g_tTex1du4): 47(ptr) Variable UniformConstant
51: TypeSampledImage 46
53: 6(float) Constant 1053609165
54: 20(fvec2) ConstantComposite 38 53
55: 25(int) Constant 2
58: TypeImage 6(float) 2D array sampled format:Unknown
59: TypePointer UniformConstant 58
60(g_tTex2df4): 59(ptr) Variable UniformConstant
63: TypeSampledImage 58
65: TypeVector 6(float) 3
66: 65(fvec3) ConstantComposite 21 22 38
67: TypeVector 25(int) 2
68: 67(ivec2) ConstantComposite 26 26
71: TypeImage 25(int) 2D array sampled format:Unknown
72: TypePointer UniformConstant 71
73(g_tTex2di4): 72(ptr) Variable UniformConstant
76: TypeSampledImage 71
78: 65(fvec3) ConstantComposite 38 53 24
81: TypeImage 42(int) 2D array sampled format:Unknown
82: TypePointer UniformConstant 81
83(g_tTex2du4): 82(ptr) Variable UniformConstant
86: TypeSampledImage 81
88: 6(float) Constant 1058642330
89: 6(float) Constant 1060320051
90: 65(fvec3) ConstantComposite 24 88 89
91: 67(ivec2) ConstantComposite 26 40
93(PS_OUTPUT): TypeStruct 7(fvec4) 6(float)
94: TypePointer Function 93(PS_OUTPUT)
96: 6(float) Constant 1065353216
97: 7(fvec4) ConstantComposite 96 96 96 96
99: TypePointer Function 6(float)
101: TypePointer Output 7(fvec4)
102(Color): 101(ptr) Variable Output
105: TypePointer Output 6(float)
106(Depth): 105(ptr) Variable Output
110(g_tTex1df4a): 11(ptr) Variable UniformConstant
16(g_tTex1df4): 15(ptr) Variable UniformConstant
18: TypeSampler
19: TypePointer UniformConstant 18
20(g_sSamp): 19(ptr) Variable UniformConstant
22: TypeSampledImage 14
24: TypeVector 6(float) 2
25: 6(float) Constant 1036831949
26: 6(float) Constant 1045220557
27: 24(fvec2) ConstantComposite 25 26
28: 6(float) Constant 1056964608
29: TypeInt 32 1
30: 29(int) Constant 0
32: TypeVector 29(int) 4
33: TypePointer Function 32(ivec4)
35: TypeImage 29(int) 1D array sampled format:Unknown
36: TypePointer UniformConstant 35
37(g_tTex1di4): 36(ptr) Variable UniformConstant
40: TypeSampledImage 35
42: 6(float) Constant 1050253722
43: 24(fvec2) ConstantComposite 26 42
44: 29(int) Constant 1
46: TypeInt 32 0
47: TypeVector 46(int) 4
48: TypePointer Function 47(ivec4)
50: TypeImage 46(int) 1D array sampled format:Unknown
51: TypePointer UniformConstant 50
52(g_tTex1du4): 51(ptr) Variable UniformConstant
55: TypeSampledImage 50
57: 6(float) Constant 1053609165
58: 24(fvec2) ConstantComposite 42 57
59: 29(int) Constant 2
62: TypeImage 6(float) 2D array sampled format:Unknown
63: TypePointer UniformConstant 62
64(g_tTex2df4): 63(ptr) Variable UniformConstant
67: TypeSampledImage 62
69: TypeVector 6(float) 3
70: 69(fvec3) ConstantComposite 25 26 42
71: TypeVector 29(int) 2
72: 71(ivec2) ConstantComposite 30 30
75: TypeImage 29(int) 2D array sampled format:Unknown
76: TypePointer UniformConstant 75
77(g_tTex2di4): 76(ptr) Variable UniformConstant
80: TypeSampledImage 75
82: 69(fvec3) ConstantComposite 42 57 28
85: TypeImage 46(int) 2D array sampled format:Unknown
86: TypePointer UniformConstant 85
87(g_tTex2du4): 86(ptr) Variable UniformConstant
90: TypeSampledImage 85
92: 6(float) Constant 1058642330
93: 6(float) Constant 1060320051
94: 69(fvec3) ConstantComposite 28 92 93
95: 71(ivec2) ConstantComposite 30 44
97: TypePointer Function 8(PS_OUTPUT)
99: 6(float) Constant 1065353216
100: 7(fvec4) ConstantComposite 99 99 99 99
102: TypePointer Function 6(float)
109: TypePointer Output 7(fvec4)
110(Color): 109(ptr) Variable Output
113: TypePointer Output 6(float)
114(Depth): 113(ptr) Variable Output
117(g_tTex1df4a): 15(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
9(txval10): 8(ptr) Variable Function
30(txval11): 29(ptr) Variable Function
45(txval12): 44(ptr) Variable Function
57(txval20): 8(ptr) Variable Function
70(txval21): 29(ptr) Variable Function
80(txval22): 44(ptr) Variable Function
95(psout): 94(ptr) Variable Function
13: 10 Load 12(g_tTex1df4)
17: 14 Load 16(g_sSamp)
19: 18 SampledImage 13 17
27: 7(fvec4) ImageSampleImplicitLod 19 23 Bias ConstOffset 26 24
Store 9(txval10) 27
34: 31 Load 33(g_tTex1di4)
35: 14 Load 16(g_sSamp)
37: 36 SampledImage 34 35
41: 28(ivec4) ImageSampleImplicitLod 37 39 Bias ConstOffset 40 24
Store 30(txval11) 41
49: 46 Load 48(g_tTex1du4)
50: 14 Load 16(g_sSamp)
52: 51 SampledImage 49 50
56: 43(ivec4) ImageSampleImplicitLod 52 54 Bias ConstOffset 55 24
Store 45(txval12) 56
61: 58 Load 60(g_tTex2df4)
62: 14 Load 16(g_sSamp)
64: 63 SampledImage 61 62
69: 7(fvec4) ImageSampleImplicitLod 64 66 Bias ConstOffset 68 24
Store 57(txval20) 69
74: 71 Load 73(g_tTex2di4)
75: 14 Load 16(g_sSamp)
77: 76 SampledImage 74 75
79: 28(ivec4) ImageSampleImplicitLod 77 78 Bias ConstOffset 68 24
Store 70(txval21) 79
84: 81 Load 83(g_tTex2du4)
85: 14 Load 16(g_sSamp)
87: 86 SampledImage 84 85
92: 43(ivec4) ImageSampleImplicitLod 87 90 Bias ConstOffset 91 24
Store 80(txval22) 92
98: 8(ptr) AccessChain 95(psout) 26
Store 98 97
100: 99(ptr) AccessChain 95(psout) 40
Store 100 96
103: 8(ptr) AccessChain 95(psout) 26
104: 7(fvec4) Load 103
Store 102(Color) 104
107: 99(ptr) AccessChain 95(psout) 40
108: 6(float) Load 107
Store 106(Depth) 108
107(flattenTemp): 97(ptr) Variable Function
108:8(PS_OUTPUT) FunctionCall 10(@main()
Store 107(flattenTemp) 108
111: 12(ptr) AccessChain 107(flattenTemp) 30
112: 7(fvec4) Load 111
Store 110(Color) 112
115: 102(ptr) AccessChain 107(flattenTemp) 44
116: 6(float) Load 115
Store 114(Depth) 116
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(txval10): 12(ptr) Variable Function
34(txval11): 33(ptr) Variable Function
49(txval12): 48(ptr) Variable Function
61(txval20): 12(ptr) Variable Function
74(txval21): 33(ptr) Variable Function
84(txval22): 48(ptr) Variable Function
98(psout): 97(ptr) Variable Function
17: 14 Load 16(g_tTex1df4)
21: 18 Load 20(g_sSamp)
23: 22 SampledImage 17 21
31: 7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 28
Store 13(txval10) 31
38: 35 Load 37(g_tTex1di4)
39: 18 Load 20(g_sSamp)
41: 40 SampledImage 38 39
45: 32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 44 28
Store 34(txval11) 45
53: 50 Load 52(g_tTex1du4)
54: 18 Load 20(g_sSamp)
56: 55 SampledImage 53 54
60: 47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 59 28
Store 49(txval12) 60
65: 62 Load 64(g_tTex2df4)
66: 18 Load 20(g_sSamp)
68: 67 SampledImage 65 66
73: 7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 72 28
Store 61(txval20) 73
78: 75 Load 77(g_tTex2di4)
79: 18 Load 20(g_sSamp)
81: 80 SampledImage 78 79
83: 32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 72 28
Store 74(txval21) 83
88: 85 Load 87(g_tTex2du4)
89: 18 Load 20(g_sSamp)
91: 90 SampledImage 88 89
96: 47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 95 28
Store 84(txval22) 96
101: 12(ptr) AccessChain 98(psout) 30
Store 101 100
103: 102(ptr) AccessChain 98(psout) 44
Store 103 99
104:8(PS_OUTPUT) Load 98(psout)
ReturnValue 104
FunctionEnd