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

@@ -10,10 +10,14 @@ gl_FragCoord origin is upper left
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s})
0:13 Constant:
0:13 0 (const uint)
0:17 Function Definition: main( (temp void)
0:17 Function Definition: @main( (temp void)
0:17 Function Parameters:
0:? Sequence
0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m})
0:17 Function Definition: main( (temp void)
0:17 Function Parameters:
0:? Sequence
0:17 Function Call: @main( (temp void)
0:? Linker Objects
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s})
@@ -32,16 +36,20 @@ gl_FragCoord origin is upper left
0:13 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s})
0:13 Constant:
0:13 0 (const uint)
0:17 Function Definition: main( (temp void)
0:17 Function Definition: @main( (temp void)
0:17 Function Parameters:
0:? Sequence
0:18 Function Call: foo( (temp structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m})
0:17 Function Definition: main( (temp void)
0:17 Function Parameters:
0:? Sequence
0:17 Function Call: @main( (temp void)
0:? Linker Objects
0:? 'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform structure{temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 39
// Id's are bound by 42
Capability Shader
1: ExtInstImport "GLSL.std.450"
@@ -54,21 +62,22 @@ gl_FragCoord origin is upper left
MemberName 9(S) 1 "v"
MemberName 9(S) 2 "m"
Name 11 "foo("
Name 13 "S"
MemberName 13(S) 0 "f"
MemberName 13(S) 1 "v"
MemberName 13(S) 2 "m"
Name 14 "bufName"
MemberName 14(bufName) 0 "s"
Name 16 ""
MemberDecorate 13(S) 0 Offset 0
MemberDecorate 13(S) 1 Offset 16
MemberDecorate 13(S) 2 RowMajor
MemberDecorate 13(S) 2 Offset 32
MemberDecorate 13(S) 2 MatrixStride 16
MemberDecorate 14(bufName) 0 Offset 0
Decorate 14(bufName) Block
Decorate 16 DescriptorSet 0
Name 13 "@main("
Name 15 "S"
MemberName 15(S) 0 "f"
MemberName 15(S) 1 "v"
MemberName 15(S) 2 "m"
Name 16 "bufName"
MemberName 16(bufName) 0 "s"
Name 18 ""
MemberDecorate 15(S) 0 Offset 0
MemberDecorate 15(S) 1 Offset 16
MemberDecorate 15(S) 2 RowMajor
MemberDecorate 15(S) 2 Offset 32
MemberDecorate 15(S) 2 MatrixStride 16
MemberDecorate 16(bufName) 0 Offset 0
Decorate 16(bufName) Block
Decorate 18 DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -76,38 +85,43 @@ gl_FragCoord origin is upper left
8: TypeMatrix 7(fvec3) 3
9(S): TypeStruct 6(float) 7(fvec3) 8
10: TypeFunction 9(S)
13(S): TypeStruct 6(float) 7(fvec3) 8
14(bufName): TypeStruct 13(S)
15: TypePointer Uniform 14(bufName)
16: 15(ptr) Variable Uniform
17: TypeInt 32 1
18: 17(int) Constant 0
19: TypePointer Uniform 13(S)
22: TypePointer Function 9(S)
25: TypePointer Function 6(float)
28: 17(int) Constant 1
29: TypePointer Function 7(fvec3)
32: 17(int) Constant 2
33: TypePointer Function 8
15(S): TypeStruct 6(float) 7(fvec3) 8
16(bufName): TypeStruct 15(S)
17: TypePointer Uniform 16(bufName)
18: 17(ptr) Variable Uniform
19: TypeInt 32 1
20: 19(int) Constant 0
21: TypePointer Uniform 15(S)
24: TypePointer Function 9(S)
27: TypePointer Function 6(float)
30: 19(int) Constant 1
31: TypePointer Function 7(fvec3)
34: 19(int) Constant 2
35: TypePointer Function 8
4(main): 2 Function None 3
5: Label
38: 9(S) FunctionCall 11(foo()
41: 2 FunctionCall 13(@main()
Return
FunctionEnd
11(foo(): 9(S) Function None 10
12: Label
23: 22(ptr) Variable Function
20: 19(ptr) AccessChain 16 18
21: 13(S) Load 20
24: 6(float) CompositeExtract 21 0
26: 25(ptr) AccessChain 23 18
Store 26 24
27: 7(fvec3) CompositeExtract 21 1
30: 29(ptr) AccessChain 23 28
Store 30 27
31: 8 CompositeExtract 21 2
34: 33(ptr) AccessChain 23 32
Store 34 31
35: 9(S) Load 23
ReturnValue 35
25: 24(ptr) Variable Function
22: 21(ptr) AccessChain 18 20
23: 15(S) Load 22
26: 6(float) CompositeExtract 23 0
28: 27(ptr) AccessChain 25 20
Store 28 26
29: 7(fvec3) CompositeExtract 23 1
32: 31(ptr) AccessChain 25 30
Store 32 29
33: 8 CompositeExtract 23 2
36: 35(ptr) AccessChain 25 34
Store 36 33
37: 9(S) Load 25
ReturnValue 37
FunctionEnd
13(@main(): 2 Function None 3
14: Label
40: 9(S) FunctionCall 11(foo()
Return
FunctionEnd