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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user