HLSL: Build IO types bottom up, as parsed, and cache the original (IO).
Previously, this was done recursively, per object, and the nonIO version was cached. This reverses both those approaches.
This commit is contained in:
parent
88c4464df5
commit
727b374fd3
7 changed files with 295 additions and 324 deletions
|
|
@ -267,12 +267,12 @@ output primitive = triangle_strip
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 76
|
||||
// Id's are bound by 75
|
||||
|
||||
Capability Geometry
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Geometry 4 "main" 45 53
|
||||
EntryPoint Geometry 4 "main" 44 52
|
||||
ExecutionMode 4 Triangles
|
||||
ExecutionMode 4 Invocations 1
|
||||
ExecutionMode 4 OutputTriangleStrip
|
||||
|
|
@ -281,29 +281,26 @@ output primitive = triangle_strip
|
|||
Name 9 "PS_IN"
|
||||
MemberName 9(PS_IN) 0 "pos"
|
||||
MemberName 9(PS_IN) 1 "tc"
|
||||
Name 14 "PS_IN"
|
||||
MemberName 14(PS_IN) 0 "pos"
|
||||
MemberName 14(PS_IN) 1 "tc"
|
||||
Name 18 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO"
|
||||
MemberName 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array"
|
||||
MemberName 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1"
|
||||
Name 19 "GS_OUT"
|
||||
MemberName 19(GS_OUT) 0 "psIn"
|
||||
MemberName 19(GS_OUT) 1 "contains_no_builtin_io"
|
||||
Name 24 "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;"
|
||||
Name 22 "tin"
|
||||
Name 23 "ts"
|
||||
Name 26 "o"
|
||||
Name 42 "tin"
|
||||
Name 45 "tin_pos"
|
||||
Name 50 "PS_IN"
|
||||
MemberName 50(PS_IN) 0 "tc"
|
||||
Name 53 "tin"
|
||||
Name 71 "ts"
|
||||
Name 72 "param"
|
||||
Name 74 "param"
|
||||
Decorate 45(tin_pos) BuiltIn Position
|
||||
Decorate 53(tin) Location 0
|
||||
Name 17 "STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO"
|
||||
MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 0 "m0_array"
|
||||
MemberName 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO) 1 "m1"
|
||||
Name 18 "GS_OUT"
|
||||
MemberName 18(GS_OUT) 0 "psIn"
|
||||
MemberName 18(GS_OUT) 1 "contains_no_builtin_io"
|
||||
Name 23 "@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;"
|
||||
Name 21 "tin"
|
||||
Name 22 "ts"
|
||||
Name 25 "o"
|
||||
Name 41 "tin"
|
||||
Name 44 "tin_pos"
|
||||
Name 49 "PS_IN"
|
||||
MemberName 49(PS_IN) 0 "tc"
|
||||
Name 52 "tin"
|
||||
Name 70 "ts"
|
||||
Name 71 "param"
|
||||
Name 73 "param"
|
||||
Decorate 44(tin_pos) BuiltIn Position
|
||||
Decorate 52(tin) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
|
@ -314,82 +311,81 @@ output primitive = triangle_strip
|
|||
11: 10(int) Constant 3
|
||||
12: TypeArray 9(PS_IN) 11
|
||||
13: TypePointer Function 12
|
||||
14(PS_IN): TypeStruct 7(fvec4) 8(fvec2)
|
||||
15: 10(int) Constant 2
|
||||
16: TypeArray 6(float) 15
|
||||
17: TypeInt 32 1
|
||||
18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 16 17(int)
|
||||
19(GS_OUT): TypeStruct 14(PS_IN) 18(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO)
|
||||
20: TypePointer Function 19(GS_OUT)
|
||||
21: TypeFunction 2 13(ptr) 20(ptr)
|
||||
27: 17(int) Constant 0
|
||||
28: 6(float) Constant 1065353216
|
||||
29: 6(float) Constant 1073741824
|
||||
30: 6(float) Constant 1077936128
|
||||
31: 6(float) Constant 1082130432
|
||||
32: 7(fvec4) ConstantComposite 28 29 30 31
|
||||
33: TypePointer Function 7(fvec4)
|
||||
35: 17(int) Constant 1
|
||||
36: 6(float) Constant 1084227584
|
||||
37: 6(float) Constant 1086324736
|
||||
38: 8(fvec2) ConstantComposite 36 37
|
||||
39: TypePointer Function 8(fvec2)
|
||||
43: TypeArray 7(fvec4) 11
|
||||
44: TypePointer Input 43
|
||||
45(tin_pos): 44(ptr) Variable Input
|
||||
46: TypePointer Input 7(fvec4)
|
||||
50(PS_IN): TypeStruct 8(fvec2)
|
||||
51: TypeArray 50(PS_IN) 11
|
||||
52: TypePointer Input 51
|
||||
53(tin): 52(ptr) Variable Input
|
||||
54: TypePointer Input 8(fvec2)
|
||||
64: 17(int) Constant 2
|
||||
14: 10(int) Constant 2
|
||||
15: TypeArray 6(float) 14
|
||||
16: TypeInt 32 1
|
||||
17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO): TypeStruct 15 16(int)
|
||||
18(GS_OUT): TypeStruct 9(PS_IN) 17(STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO)
|
||||
19: TypePointer Function 18(GS_OUT)
|
||||
20: TypeFunction 2 13(ptr) 19(ptr)
|
||||
26: 16(int) Constant 0
|
||||
27: 6(float) Constant 1065353216
|
||||
28: 6(float) Constant 1073741824
|
||||
29: 6(float) Constant 1077936128
|
||||
30: 6(float) Constant 1082130432
|
||||
31: 7(fvec4) ConstantComposite 27 28 29 30
|
||||
32: TypePointer Function 7(fvec4)
|
||||
34: 16(int) Constant 1
|
||||
35: 6(float) Constant 1084227584
|
||||
36: 6(float) Constant 1086324736
|
||||
37: 8(fvec2) ConstantComposite 35 36
|
||||
38: TypePointer Function 8(fvec2)
|
||||
42: TypeArray 7(fvec4) 11
|
||||
43: TypePointer Input 42
|
||||
44(tin_pos): 43(ptr) Variable Input
|
||||
45: TypePointer Input 7(fvec4)
|
||||
49(PS_IN): TypeStruct 8(fvec2)
|
||||
50: TypeArray 49(PS_IN) 11
|
||||
51: TypePointer Input 50
|
||||
52(tin): 51(ptr) Variable Input
|
||||
53: TypePointer Input 8(fvec2)
|
||||
63: 16(int) Constant 2
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
42(tin): 13(ptr) Variable Function
|
||||
71(ts): 20(ptr) Variable Function
|
||||
72(param): 13(ptr) Variable Function
|
||||
74(param): 20(ptr) Variable Function
|
||||
47: 46(ptr) AccessChain 45(tin_pos) 27
|
||||
48: 7(fvec4) Load 47
|
||||
49: 33(ptr) AccessChain 42(tin) 27 27
|
||||
Store 49 48
|
||||
55: 54(ptr) AccessChain 53(tin) 27 27
|
||||
56: 8(fvec2) Load 55
|
||||
57: 39(ptr) AccessChain 42(tin) 27 35
|
||||
Store 57 56
|
||||
58: 46(ptr) AccessChain 45(tin_pos) 35
|
||||
59: 7(fvec4) Load 58
|
||||
60: 33(ptr) AccessChain 42(tin) 35 27
|
||||
Store 60 59
|
||||
61: 54(ptr) AccessChain 53(tin) 35 27
|
||||
62: 8(fvec2) Load 61
|
||||
63: 39(ptr) AccessChain 42(tin) 35 35
|
||||
Store 63 62
|
||||
65: 46(ptr) AccessChain 45(tin_pos) 64
|
||||
66: 7(fvec4) Load 65
|
||||
67: 33(ptr) AccessChain 42(tin) 64 27
|
||||
Store 67 66
|
||||
68: 54(ptr) AccessChain 53(tin) 64 27
|
||||
69: 8(fvec2) Load 68
|
||||
70: 39(ptr) AccessChain 42(tin) 64 35
|
||||
Store 70 69
|
||||
73: 12 Load 42(tin)
|
||||
Store 72(param) 73
|
||||
75: 2 FunctionCall 24(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 72(param) 74(param)
|
||||
41(tin): 13(ptr) Variable Function
|
||||
70(ts): 19(ptr) Variable Function
|
||||
71(param): 13(ptr) Variable Function
|
||||
73(param): 19(ptr) Variable Function
|
||||
46: 45(ptr) AccessChain 44(tin_pos) 26
|
||||
47: 7(fvec4) Load 46
|
||||
48: 32(ptr) AccessChain 41(tin) 26 26
|
||||
Store 48 47
|
||||
54: 53(ptr) AccessChain 52(tin) 26 26
|
||||
55: 8(fvec2) Load 54
|
||||
56: 38(ptr) AccessChain 41(tin) 26 34
|
||||
Store 56 55
|
||||
57: 45(ptr) AccessChain 44(tin_pos) 34
|
||||
58: 7(fvec4) Load 57
|
||||
59: 32(ptr) AccessChain 41(tin) 34 26
|
||||
Store 59 58
|
||||
60: 53(ptr) AccessChain 52(tin) 34 26
|
||||
61: 8(fvec2) Load 60
|
||||
62: 38(ptr) AccessChain 41(tin) 34 34
|
||||
Store 62 61
|
||||
64: 45(ptr) AccessChain 44(tin_pos) 63
|
||||
65: 7(fvec4) Load 64
|
||||
66: 32(ptr) AccessChain 41(tin) 63 26
|
||||
Store 66 65
|
||||
67: 53(ptr) AccessChain 52(tin) 63 26
|
||||
68: 8(fvec2) Load 67
|
||||
69: 38(ptr) AccessChain 41(tin) 63 34
|
||||
Store 69 68
|
||||
72: 12 Load 41(tin)
|
||||
Store 71(param) 72
|
||||
74: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 71(param) 73(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
24(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 21
|
||||
22(tin): 13(ptr) FunctionParameter
|
||||
23(ts): 20(ptr) FunctionParameter
|
||||
25: Label
|
||||
26(o): 20(ptr) Variable Function
|
||||
34: 33(ptr) AccessChain 26(o) 27 27
|
||||
Store 34 32
|
||||
40: 39(ptr) AccessChain 26(o) 27 35
|
||||
Store 40 38
|
||||
41: 19(GS_OUT) Load 26(o)
|
||||
Store 23(ts) 41
|
||||
23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20
|
||||
21(tin): 13(ptr) FunctionParameter
|
||||
22(ts): 19(ptr) FunctionParameter
|
||||
24: Label
|
||||
25(o): 19(ptr) Variable Function
|
||||
33: 32(ptr) AccessChain 25(o) 26 26
|
||||
Store 33 31
|
||||
39: 38(ptr) AccessChain 25(o) 26 34
|
||||
Store 39 37
|
||||
40: 18(GS_OUT) Load 25(o)
|
||||
Store 22(ts) 40
|
||||
EmitVertex
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue