Fix issue: #237 1. The code generated for matrix constructor should 1) build column vectors first, 2) build matrix with the vectors. 2. When there is only one scalar type constituent in vector's constructor, we should populate the constituent to fill all the slots in the vector. As for matrix, the single constituent should be populated to the diagonal positions (top-left to bottom-right diagonal). remove createSpvConstantFromConstSubTree()
186 lines
9.1 KiB
Plaintext
186 lines
9.1 KiB
Plaintext
spv.specConstantComposite.vert
|
|
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
|
|
|
|
|
Linked vertex stage:
|
|
|
|
|
|
// Module Version 10000
|
|
// Generated by (magic number): 80001
|
|
// Id's are bound by 119
|
|
|
|
Capability Shader
|
|
Capability Float64
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Vertex 4 "main" 27 118
|
|
Source GLSL 450
|
|
Name 4 "main"
|
|
Name 6 "refer_primary_spec_const("
|
|
Name 8 "refer_composite_spec_const("
|
|
Name 10 "refer_copmosite_dot_dereference("
|
|
Name 12 "refer_composite_bracket_dereference("
|
|
Name 16 "refer_spec_const_array_length("
|
|
Name 18 "declare_spec_const_in_func("
|
|
Name 27 "color"
|
|
Name 42 "flat_struct"
|
|
MemberName 42(flat_struct) 0 "i"
|
|
MemberName 42(flat_struct) 1 "f"
|
|
MemberName 42(flat_struct) 2 "d"
|
|
MemberName 42(flat_struct) 3 "b"
|
|
Name 44 "nesting_struct"
|
|
MemberName 44(nesting_struct) 0 "nested"
|
|
MemberName 44(nesting_struct) 1 "v"
|
|
MemberName 44(nesting_struct) 2 "i"
|
|
Name 72 "indexable"
|
|
Name 76 "indexable"
|
|
Name 83 "len"
|
|
Name 118 "global_vec4_array_with_spec_length"
|
|
Decorate 21 SpecId 203
|
|
Decorate 28 SpecId 200
|
|
Decorate 32 SpecId 201
|
|
Decorate 41 SpecId 202
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
14: TypeInt 32 1
|
|
15: TypeFunction 14(int)
|
|
20: TypeBool
|
|
21: 20(bool) SpecConstantTrue
|
|
24: TypeFloat 32
|
|
25: TypeVector 24(float) 4
|
|
26: TypePointer Output 25(fvec4)
|
|
27(color): 26(ptr) Variable Output
|
|
28: 14(int) SpecConstant 3
|
|
32: 24(float) SpecConstant 1078523331
|
|
33: 25(fvec4) SpecConstantComposite 32 32 32 32
|
|
36: 24(float) Constant 1133908460
|
|
37: 25(fvec4) SpecConstantComposite 32 32 36 36
|
|
40: TypeFloat 64
|
|
41: 40(float) SpecConstant 1413754136 1074340347
|
|
42(flat_struct): TypeStruct 14(int) 24(float) 40(float) 20(bool)
|
|
43:42(flat_struct) SpecConstantComposite 28 32 41 21
|
|
44(nesting_struct): TypeStruct 42(flat_struct) 25(fvec4) 14(int)
|
|
45:44(nesting_struct) SpecConstantComposite 43 33 28
|
|
46: 14(int) Constant 2
|
|
51: TypeInt 32 0
|
|
52: 51(int) Constant 0
|
|
57: 24(float) Constant 1065353216
|
|
58: 24(float) Constant 1073741824
|
|
59: 24(float) Constant 1077936128
|
|
60: 51(int) Constant 5
|
|
61: TypeArray 24(float) 60
|
|
62: 61 SpecConstantComposite 32 32 57 58 59
|
|
63: 14(int) Constant 1
|
|
68: 14(int) Constant 30
|
|
69: TypeArray 14(int) 60
|
|
70: 69 SpecConstantComposite 28 28 63 46 68
|
|
71: TypePointer Function 69
|
|
73: TypePointer Function 14(int)
|
|
87: 24(float) Constant 1106321080
|
|
88:42(flat_struct) SpecConstantComposite 68 87 41 21
|
|
89: 14(int) Constant 10
|
|
90:44(nesting_struct) SpecConstantComposite 88 37 89
|
|
96: 20(bool) ConstantFalse
|
|
97:42(flat_struct) SpecConstantComposite 28 32 41 96
|
|
98: 24(float) Constant 1036831949
|
|
99: 25(fvec4) ConstantComposite 98 98 98 98
|
|
100:44(nesting_struct) SpecConstantComposite 97 99 28
|
|
101: 25(fvec4) SpecConstantComposite 32 32 32 32
|
|
102: 24(float) Constant 1066192077
|
|
103: 24(float) Constant 1074580685
|
|
104: 24(float) Constant 1079194419
|
|
105: TypeVector 24(float) 3
|
|
106: TypeMatrix 105(fvec3) 2
|
|
107: 24(float) Constant 0
|
|
108: 105(fvec3) SpecConstantComposite 32 32 32
|
|
109: 105(fvec3) SpecConstantComposite 102 103 104
|
|
110: 106 SpecConstantComposite 108 109
|
|
111: 105(fvec3) SpecConstantComposite 32 107 107
|
|
112: 105(fvec3) SpecConstantComposite 107 32 107
|
|
113: 106 SpecConstantComposite 111 112
|
|
114: 14(int) Constant 3000
|
|
115:44(nesting_struct) SpecConstantComposite 88 37 114
|
|
116: TypeArray 25(fvec4) 28
|
|
117: TypePointer Input 116
|
|
118(global_vec4_array_with_spec_length): 117(ptr) Variable Input
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
Return
|
|
FunctionEnd
|
|
6(refer_primary_spec_const(): 2 Function None 3
|
|
7: Label
|
|
SelectionMerge 23 None
|
|
BranchConditional 21 22 23
|
|
22: Label
|
|
29: 24(float) ConvertSToF 28
|
|
30: 25(fvec4) Load 27(color)
|
|
31: 25(fvec4) VectorTimesScalar 30 29
|
|
Store 27(color) 31
|
|
Branch 23
|
|
23: Label
|
|
Return
|
|
FunctionEnd
|
|
8(refer_composite_spec_const(): 2 Function None 3
|
|
9: Label
|
|
34: 25(fvec4) Load 27(color)
|
|
35: 25(fvec4) FAdd 34 33
|
|
Store 27(color) 35
|
|
38: 25(fvec4) Load 27(color)
|
|
39: 25(fvec4) FSub 38 37
|
|
Store 27(color) 39
|
|
Return
|
|
FunctionEnd
|
|
10(refer_copmosite_dot_dereference(): 2 Function None 3
|
|
11: Label
|
|
47: 14(int) CompositeExtract 45 2
|
|
48: 24(float) ConvertSToF 47
|
|
49: 25(fvec4) Load 27(color)
|
|
50: 25(fvec4) VectorTimesScalar 49 48
|
|
Store 27(color) 50
|
|
53: 24(float) CompositeExtract 33 0
|
|
54: 25(fvec4) Load 27(color)
|
|
55: 25(fvec4) CompositeConstruct 53 53 53 53
|
|
56: 25(fvec4) FAdd 54 55
|
|
Store 27(color) 56
|
|
Return
|
|
FunctionEnd
|
|
12(refer_composite_bracket_dereference(): 2 Function None 3
|
|
13: Label
|
|
72(indexable): 71(ptr) Variable Function
|
|
76(indexable): 71(ptr) Variable Function
|
|
64: 24(float) CompositeExtract 62 1
|
|
65: 25(fvec4) Load 27(color)
|
|
66: 25(fvec4) CompositeConstruct 64 64 64 64
|
|
67: 25(fvec4) FSub 65 66
|
|
Store 27(color) 67
|
|
Store 72(indexable) 70
|
|
74: 73(ptr) AccessChain 72(indexable) 28
|
|
75: 14(int) Load 74
|
|
Store 76(indexable) 70
|
|
77: 73(ptr) AccessChain 76(indexable) 75
|
|
78: 14(int) Load 77
|
|
79: 24(float) ConvertSToF 78
|
|
80: 25(fvec4) Load 27(color)
|
|
81: 25(fvec4) CompositeConstruct 79 79 79 79
|
|
82: 25(fvec4) FDiv 80 81
|
|
Store 27(color) 82
|
|
Return
|
|
FunctionEnd
|
|
16(refer_spec_const_array_length(): 14(int) Function None 15
|
|
17: Label
|
|
83(len): 73(ptr) Variable Function
|
|
Store 83(len) 28
|
|
84: 14(int) Load 83(len)
|
|
ReturnValue 84
|
|
FunctionEnd
|
|
18(declare_spec_const_in_func(): 2 Function None 3
|
|
19: Label
|
|
91: 14(int) CompositeExtract 90 2
|
|
92: 24(float) ConvertSToF 91
|
|
93: 25(fvec4) Load 27(color)
|
|
94: 25(fvec4) CompositeConstruct 92 92 92 92
|
|
95: 25(fvec4) FDiv 93 94
|
|
Store 27(color) 95
|
|
Return
|
|
FunctionEnd
|