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

@@ -1,85 +1,92 @@
spv.buffer.autoassign.frag
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 45
// Id's are bound by 50
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 41
EntryPoint Fragment 4 "main" 47
ExecutionMode 4 OriginUpperLeft
Name 4 "main"
Name 8 "PS_OUTPUT"
MemberName 8(PS_OUTPUT) 0 "Color"
Name 10 "psout"
Name 13 "MyUB1"
MemberName 13(MyUB1) 0 "g_a"
MemberName 13(MyUB1) 1 "g_b"
Name 15 ""
Name 25 "MyUB2"
MemberName 25(MyUB2) 0 "g_c"
Name 27 ""
Name 31 "MyUB3"
MemberName 31(MyUB3) 0 "g_d"
Name 33 ""
Name 41 "Color"
MemberDecorate 13(MyUB1) 0 Offset 0
MemberDecorate 13(MyUB1) 1 Offset 4
Decorate 13(MyUB1) Block
Decorate 15 DescriptorSet 0
Decorate 15 Binding 20
MemberDecorate 25(MyUB2) 0 Offset 0
Decorate 25(MyUB2) Block
Decorate 27 DescriptorSet 0
Decorate 27 Binding 15
MemberDecorate 31(MyUB3) 0 Offset 0
Decorate 31(MyUB3) Block
Decorate 33 DescriptorSet 0
Decorate 33 Binding 16
Decorate 41(Color) Location 0
Name 10 "@main("
Name 13 "psout"
Name 16 "MyUB1"
MemberName 16(MyUB1) 0 "g_a"
MemberName 16(MyUB1) 1 "g_b"
Name 18 ""
Name 28 "MyUB2"
MemberName 28(MyUB2) 0 "g_c"
Name 30 ""
Name 34 "MyUB3"
MemberName 34(MyUB3) 0 "g_d"
Name 36 ""
Name 47 "Color"
MemberDecorate 16(MyUB1) 0 Offset 0
MemberDecorate 16(MyUB1) 1 Offset 4
Decorate 16(MyUB1) Block
Decorate 18 DescriptorSet 0
Decorate 18 Binding 20
MemberDecorate 28(MyUB2) 0 Offset 0
Decorate 28(MyUB2) Block
Decorate 30 DescriptorSet 0
Decorate 30 Binding 15
MemberDecorate 34(MyUB3) 0 Offset 0
Decorate 34(MyUB3) Block
Decorate 36 DescriptorSet 0
Decorate 36 Binding 16
Decorate 47(Color) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(PS_OUTPUT): TypeStruct 7(fvec4)
9: TypePointer Function 8(PS_OUTPUT)
11: TypeInt 32 1
12: 11(int) Constant 0
13(MyUB1): TypeStruct 6(float) 11(int)
14: TypePointer Uniform 13(MyUB1)
15: 14(ptr) Variable Uniform
16: TypePointer Uniform 6(float)
19: 11(int) Constant 1
20: TypePointer Uniform 11(int)
25(MyUB2): TypeStruct 6(float)
26: TypePointer Uniform 25(MyUB2)
27: 26(ptr) Variable Uniform
31(MyUB3): TypeStruct 6(float)
32: TypePointer Uniform 31(MyUB3)
33: 32(ptr) Variable Uniform
38: TypePointer Function 7(fvec4)
40: TypePointer Output 7(fvec4)
41(Color): 40(ptr) Variable Output
9: TypeFunction 8(PS_OUTPUT)
12: TypePointer Function 8(PS_OUTPUT)
14: TypeInt 32 1
15: 14(int) Constant 0
16(MyUB1): TypeStruct 6(float) 14(int)
17: TypePointer Uniform 16(MyUB1)
18: 17(ptr) Variable Uniform
19: TypePointer Uniform 6(float)
22: 14(int) Constant 1
23: TypePointer Uniform 14(int)
28(MyUB2): TypeStruct 6(float)
29: TypePointer Uniform 28(MyUB2)
30: 29(ptr) Variable Uniform
34(MyUB3): TypeStruct 6(float)
35: TypePointer Uniform 34(MyUB3)
36: 35(ptr) Variable Uniform
41: TypePointer Function 7(fvec4)
46: TypePointer Output 7(fvec4)
47(Color): 46(ptr) Variable Output
4(main): 2 Function None 3
5: Label
10(psout): 9(ptr) Variable Function
17: 16(ptr) AccessChain 15 12
18: 6(float) Load 17
21: 20(ptr) AccessChain 15 19
22: 11(int) Load 21
23: 6(float) ConvertSToF 22
24: 6(float) FAdd 18 23
28: 16(ptr) AccessChain 27 12
29: 6(float) Load 28
30: 6(float) FAdd 24 29
34: 16(ptr) AccessChain 33 12
35: 6(float) Load 34
36: 6(float) FAdd 30 35
37: 7(fvec4) CompositeConstruct 36 36 36 36
39: 38(ptr) AccessChain 10(psout) 12
Store 39 37
42: 38(ptr) AccessChain 10(psout) 12
43: 7(fvec4) Load 42
Store 41(Color) 43
48:8(PS_OUTPUT) FunctionCall 10(@main()
49: 7(fvec4) CompositeExtract 48 0
Store 47(Color) 49
Return
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
11: Label
13(psout): 12(ptr) Variable Function
20: 19(ptr) AccessChain 18 15
21: 6(float) Load 20
24: 23(ptr) AccessChain 18 22
25: 14(int) Load 24
26: 6(float) ConvertSToF 25
27: 6(float) FAdd 21 26
31: 19(ptr) AccessChain 30 15
32: 6(float) Load 31
33: 6(float) FAdd 27 32
37: 19(ptr) AccessChain 36 15
38: 6(float) Load 37
39: 6(float) FAdd 33 38
40: 7(fvec4) CompositeConstruct 39 39 39 39
42: 41(ptr) AccessChain 13(psout) 15
Store 42 40
43:8(PS_OUTPUT) Load 13(psout)
ReturnValue 43
FunctionEnd