Fix spec const construtor for matrix and vector
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()
This commit is contained in:
@@ -7,13 +7,13 @@ Linked vertex stage:
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 106
|
||||
// Id's are bound by 119
|
||||
|
||||
Capability Shader
|
||||
Capability Float64
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 27 105
|
||||
EntryPoint Vertex 4 "main" 27 118
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Name 6 "refer_primary_spec_const("
|
||||
@@ -23,23 +23,23 @@ Linked vertex stage:
|
||||
Name 16 "refer_spec_const_array_length("
|
||||
Name 18 "declare_spec_const_in_func("
|
||||
Name 27 "color"
|
||||
Name 41 "flat_struct"
|
||||
MemberName 41(flat_struct) 0 "i"
|
||||
MemberName 41(flat_struct) 1 "f"
|
||||
MemberName 41(flat_struct) 2 "d"
|
||||
MemberName 41(flat_struct) 3 "b"
|
||||
Name 42 "nesting_struct"
|
||||
MemberName 42(nesting_struct) 0 "nested"
|
||||
MemberName 42(nesting_struct) 1 "v"
|
||||
MemberName 42(nesting_struct) 2 "i"
|
||||
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 105 "global_vec4_array_with_spec_length"
|
||||
Name 118 "global_vec4_array_with_spec_length"
|
||||
Decorate 21 SpecId 203
|
||||
Decorate 28 SpecId 200
|
||||
Decorate 32 SpecId 201
|
||||
Decorate 43 SpecId 202
|
||||
Decorate 41 SpecId 202
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
14: TypeInt 32 1
|
||||
@@ -56,40 +56,53 @@ Linked vertex stage:
|
||||
36: 24(float) Constant 1133908460
|
||||
37: 25(fvec4) SpecConstantComposite 32 32 36 36
|
||||
40: TypeFloat 64
|
||||
41(flat_struct): TypeStruct 14(int) 24(float) 40(float) 20(bool)
|
||||
42(nesting_struct): TypeStruct 41(flat_struct) 25(fvec4) 14(int)
|
||||
43: 40(float) SpecConstant 1413754136 1074340347
|
||||
44:41(flat_struct) SpecConstantComposite 28 32 43 21
|
||||
45:42(nesting_struct) SpecConstantComposite 44 33 28
|
||||
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: 51(int) Constant 5
|
||||
58: TypeArray 24(float) 57
|
||||
59: 24(float) Constant 1065353216
|
||||
60: 24(float) Constant 1073741824
|
||||
61: 24(float) Constant 1077936128
|
||||
62: 58 SpecConstantComposite 32 32 59 60 61
|
||||
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: TypeArray 14(int) 57
|
||||
69: 14(int) Constant 30
|
||||
70: 68 SpecConstantComposite 28 28 63 46 69
|
||||
71: TypePointer Function 68
|
||||
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:41(flat_struct) SpecConstantComposite 69 87 43 21
|
||||
88:42(flat_struct) SpecConstantComposite 68 87 41 21
|
||||
89: 14(int) Constant 10
|
||||
90:42(nesting_struct) SpecConstantComposite 88 37 89
|
||||
90:44(nesting_struct) SpecConstantComposite 88 37 89
|
||||
96: 20(bool) ConstantFalse
|
||||
97:41(flat_struct) SpecConstantComposite 28 32 43 96
|
||||
97:42(flat_struct) SpecConstantComposite 28 32 41 96
|
||||
98: 24(float) Constant 1036831949
|
||||
99: 25(fvec4) ConstantComposite 98 98 98 98
|
||||
100:42(nesting_struct) SpecConstantComposite 97 99 28
|
||||
101: 14(int) Constant 3000
|
||||
102:42(nesting_struct) SpecConstantComposite 88 37 101
|
||||
103: TypeArray 25(fvec4) 28
|
||||
104: TypePointer Input 103
|
||||
105(global_vec4_array_with_spec_length): 104(ptr) Variable Input
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user