Generate separate stores for partially swizzled memory stores
Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to. Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector. While this change generates more SPIR-V instructions, it is necessary for correctness. Fixes #2518.
This commit is contained in:
parent
9158061398
commit
6d5b40f051
50 changed files with 31343 additions and 26594 deletions
|
|
@ -1,12 +1,12 @@
|
|||
spv.accessChain.frag
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000a
|
||||
// Id's are bound by 222
|
||||
// Id's are bound by 228
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "main" 69 170
|
||||
EntryPoint Fragment 4 "main" 69 176
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source GLSL 420
|
||||
Name 4 "main"
|
||||
|
|
@ -54,24 +54,24 @@ spv.accessChain.frag
|
|||
Name 64 "i"
|
||||
Name 65 "comp"
|
||||
Name 69 "OutColor"
|
||||
Name 165 "s"
|
||||
Name 170 "u"
|
||||
Name 171 "param"
|
||||
Name 175 "param"
|
||||
Name 179 "param"
|
||||
Name 183 "param"
|
||||
Name 187 "param"
|
||||
Name 191 "param"
|
||||
Name 195 "param"
|
||||
Name 199 "param"
|
||||
Name 203 "param"
|
||||
Name 207 "param"
|
||||
Name 211 "param"
|
||||
Name 215 "param"
|
||||
Name 219 "param"
|
||||
Name 171 "s"
|
||||
Name 176 "u"
|
||||
Name 177 "param"
|
||||
Name 181 "param"
|
||||
Name 185 "param"
|
||||
Name 189 "param"
|
||||
Name 193 "param"
|
||||
Name 197 "param"
|
||||
Name 201 "param"
|
||||
Name 205 "param"
|
||||
Name 209 "param"
|
||||
Name 213 "param"
|
||||
Name 217 "param"
|
||||
Name 221 "param"
|
||||
Name 225 "param"
|
||||
Decorate 69(OutColor) Location 0
|
||||
Decorate 170(u) Flat
|
||||
Decorate 170(u) Location 0
|
||||
Decorate 176(u) Flat
|
||||
Decorate 176(u) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
|
|
@ -87,89 +87,89 @@ spv.accessChain.frag
|
|||
71: TypeInt 32 0
|
||||
72: 71(int) Constant 0
|
||||
99: TypeVector 6(float) 2
|
||||
113: 71(int) Constant 2
|
||||
140: TypePointer Output 6(float)
|
||||
147: 71(int) Constant 1
|
||||
148: TypeVector 71(int) 2
|
||||
149: 148(ivec2) ConstantComposite 113 147
|
||||
158: TypeVector 71(int) 3
|
||||
159: 158(ivec3) ConstantComposite 113 147 72
|
||||
162: 6(float) Constant 0
|
||||
163: 7(fvec3) ConstantComposite 162 162 162
|
||||
164: TypePointer Function 8(S)
|
||||
169: TypePointer Input 13(int)
|
||||
170(u): 169(ptr) Variable Input
|
||||
111: TypePointer Output 6(float)
|
||||
114: 71(int) Constant 1
|
||||
117: 71(int) Constant 2
|
||||
154: TypeVector 71(int) 2
|
||||
155: 154(ivec2) ConstantComposite 117 114
|
||||
164: TypeVector 71(int) 3
|
||||
165: 164(ivec3) ConstantComposite 117 114 72
|
||||
168: 6(float) Constant 0
|
||||
169: 7(fvec3) ConstantComposite 168 168 168
|
||||
170: TypePointer Function 8(S)
|
||||
175: TypePointer Input 13(int)
|
||||
176(u): 175(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
165(s): 164(ptr) Variable Function
|
||||
171(param): 14(ptr) Variable Function
|
||||
175(param): 14(ptr) Variable Function
|
||||
179(param): 14(ptr) Variable Function
|
||||
183(param): 14(ptr) Variable Function
|
||||
187(param): 14(ptr) Variable Function
|
||||
191(param): 14(ptr) Variable Function
|
||||
195(param): 14(ptr) Variable Function
|
||||
199(param): 14(ptr) Variable Function
|
||||
203(param): 14(ptr) Variable Function
|
||||
207(param): 14(ptr) Variable Function
|
||||
211(param): 14(ptr) Variable Function
|
||||
215(param): 14(ptr) Variable Function
|
||||
219(param): 14(ptr) Variable Function
|
||||
Store 69(OutColor) 163
|
||||
166: 8(S) Load 165(s)
|
||||
167: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 166
|
||||
168: 8(S) Load 165(s)
|
||||
172: 13(int) Load 170(u)
|
||||
Store 171(param) 172
|
||||
173: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 168 171(param)
|
||||
174: 8(S) Load 165(s)
|
||||
176: 13(int) Load 170(u)
|
||||
Store 175(param) 176
|
||||
177: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 174 175(param)
|
||||
178: 8(S) Load 165(s)
|
||||
180: 13(int) Load 170(u)
|
||||
Store 179(param) 180
|
||||
181: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 178 179(param)
|
||||
182: 8(S) Load 165(s)
|
||||
184: 13(int) Load 170(u)
|
||||
Store 183(param) 184
|
||||
185: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 182 183(param)
|
||||
186: 8(S) Load 165(s)
|
||||
188: 13(int) Load 170(u)
|
||||
Store 187(param) 188
|
||||
189: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 186 187(param)
|
||||
190: 8(S) Load 165(s)
|
||||
192: 13(int) Load 170(u)
|
||||
Store 191(param) 192
|
||||
193: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 190 191(param)
|
||||
194: 8(S) Load 165(s)
|
||||
196: 13(int) Load 170(u)
|
||||
Store 195(param) 196
|
||||
197: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 194 195(param)
|
||||
198: 8(S) Load 165(s)
|
||||
200: 13(int) Load 170(u)
|
||||
Store 199(param) 200
|
||||
201: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 198 199(param)
|
||||
202: 8(S) Load 165(s)
|
||||
204: 13(int) Load 170(u)
|
||||
Store 203(param) 204
|
||||
205: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 202 203(param)
|
||||
206: 8(S) Load 165(s)
|
||||
208: 13(int) Load 170(u)
|
||||
Store 207(param) 208
|
||||
209: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 206 207(param)
|
||||
210: 8(S) Load 165(s)
|
||||
212: 13(int) Load 170(u)
|
||||
Store 211(param) 212
|
||||
213: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 210 211(param)
|
||||
214: 8(S) Load 165(s)
|
||||
216: 13(int) Load 170(u)
|
||||
Store 215(param) 216
|
||||
217: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 214 215(param)
|
||||
218: 8(S) Load 165(s)
|
||||
220: 13(int) Load 170(u)
|
||||
Store 219(param) 220
|
||||
221: 2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 218 219(param)
|
||||
171(s): 170(ptr) Variable Function
|
||||
177(param): 14(ptr) Variable Function
|
||||
181(param): 14(ptr) Variable Function
|
||||
185(param): 14(ptr) Variable Function
|
||||
189(param): 14(ptr) Variable Function
|
||||
193(param): 14(ptr) Variable Function
|
||||
197(param): 14(ptr) Variable Function
|
||||
201(param): 14(ptr) Variable Function
|
||||
205(param): 14(ptr) Variable Function
|
||||
209(param): 14(ptr) Variable Function
|
||||
213(param): 14(ptr) Variable Function
|
||||
217(param): 14(ptr) Variable Function
|
||||
221(param): 14(ptr) Variable Function
|
||||
225(param): 14(ptr) Variable Function
|
||||
Store 69(OutColor) 169
|
||||
172: 8(S) Load 171(s)
|
||||
173: 2 FunctionCall 11(GetColor1(struct-S-vf31;) 172
|
||||
174: 8(S) Load 171(s)
|
||||
178: 13(int) Load 176(u)
|
||||
Store 177(param) 178
|
||||
179: 2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 174 177(param)
|
||||
180: 8(S) Load 171(s)
|
||||
182: 13(int) Load 176(u)
|
||||
Store 181(param) 182
|
||||
183: 2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 180 181(param)
|
||||
184: 8(S) Load 171(s)
|
||||
186: 13(int) Load 176(u)
|
||||
Store 185(param) 186
|
||||
187: 2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 184 185(param)
|
||||
188: 8(S) Load 171(s)
|
||||
190: 13(int) Load 176(u)
|
||||
Store 189(param) 190
|
||||
191: 2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 188 189(param)
|
||||
192: 8(S) Load 171(s)
|
||||
194: 13(int) Load 176(u)
|
||||
Store 193(param) 194
|
||||
195: 2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 192 193(param)
|
||||
196: 8(S) Load 171(s)
|
||||
198: 13(int) Load 176(u)
|
||||
Store 197(param) 198
|
||||
199: 2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 196 197(param)
|
||||
200: 8(S) Load 171(s)
|
||||
202: 13(int) Load 176(u)
|
||||
Store 201(param) 202
|
||||
203: 2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 200 201(param)
|
||||
204: 8(S) Load 171(s)
|
||||
206: 13(int) Load 176(u)
|
||||
Store 205(param) 206
|
||||
207: 2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 204 205(param)
|
||||
208: 8(S) Load 171(s)
|
||||
210: 13(int) Load 176(u)
|
||||
Store 209(param) 210
|
||||
211: 2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 208 209(param)
|
||||
212: 8(S) Load 171(s)
|
||||
214: 13(int) Load 176(u)
|
||||
Store 213(param) 214
|
||||
215: 2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 212 213(param)
|
||||
216: 8(S) Load 171(s)
|
||||
218: 13(int) Load 176(u)
|
||||
Store 217(param) 218
|
||||
219: 2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 216 217(param)
|
||||
220: 8(S) Load 171(s)
|
||||
222: 13(int) Load 176(u)
|
||||
Store 221(param) 222
|
||||
223: 2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 220 221(param)
|
||||
224: 8(S) Load 171(s)
|
||||
226: 13(int) Load 176(u)
|
||||
Store 225(param) 226
|
||||
227: 2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 224 225(param)
|
||||
Return
|
||||
FunctionEnd
|
||||
11(GetColor1(struct-S-vf31;): 2 Function None 9
|
||||
|
|
@ -254,99 +254,108 @@ spv.accessChain.frag
|
|||
108: 7(fvec3) Load 69(OutColor)
|
||||
109: 99(fvec2) VectorShuffle 108 108 0 1
|
||||
110: 99(fvec2) FAdd 109 107
|
||||
111: 7(fvec3) Load 69(OutColor)
|
||||
112: 7(fvec3) VectorShuffle 111 110 3 4 2
|
||||
Store 69(OutColor) 112
|
||||
112: 111(ptr) AccessChain 69(OutColor) 72
|
||||
113: 6(float) CompositeExtract 110 0
|
||||
Store 112 113
|
||||
115: 111(ptr) AccessChain 69(OutColor) 114
|
||||
116: 6(float) CompositeExtract 110 1
|
||||
Store 115 116
|
||||
Return
|
||||
FunctionEnd
|
||||
42(GetColor8(struct-S-vf31;i1;): 2 Function None 15
|
||||
40(i): 8(S) FunctionParameter
|
||||
41(comp): 14(ptr) FunctionParameter
|
||||
43: Label
|
||||
114: 6(float) CompositeExtract 40(i) 0 2
|
||||
115: 7(fvec3) Load 69(OutColor)
|
||||
116: 7(fvec3) CompositeConstruct 114 114 114
|
||||
117: 7(fvec3) FAdd 115 116
|
||||
Store 69(OutColor) 117
|
||||
118: 6(float) CompositeExtract 40(i) 0 2
|
||||
119: 7(fvec3) Load 69(OutColor)
|
||||
120: 7(fvec3) CompositeConstruct 118 118 118
|
||||
121: 7(fvec3) FAdd 119 120
|
||||
Store 69(OutColor) 121
|
||||
Return
|
||||
FunctionEnd
|
||||
46(GetColor9(struct-S-vf31;i1;): 2 Function None 15
|
||||
44(i): 8(S) FunctionParameter
|
||||
45(comp): 14(ptr) FunctionParameter
|
||||
47: Label
|
||||
118: 7(fvec3) CompositeExtract 44(i) 0
|
||||
119: 7(fvec3) Load 69(OutColor)
|
||||
120: 7(fvec3) VectorShuffle 119 119 2 0 1
|
||||
121: 7(fvec3) FAdd 120 118
|
||||
122: 7(fvec3) Load 69(OutColor)
|
||||
123: 7(fvec3) VectorShuffle 122 121 4 5 3
|
||||
Store 69(OutColor) 123
|
||||
122: 7(fvec3) CompositeExtract 44(i) 0
|
||||
123: 7(fvec3) Load 69(OutColor)
|
||||
124: 7(fvec3) VectorShuffle 123 123 2 0 1
|
||||
125: 7(fvec3) FAdd 124 122
|
||||
126: 7(fvec3) Load 69(OutColor)
|
||||
127: 7(fvec3) VectorShuffle 126 125 4 5 3
|
||||
Store 69(OutColor) 127
|
||||
Return
|
||||
FunctionEnd
|
||||
50(GetColor10(struct-S-vf31;i1;): 2 Function None 15
|
||||
48(i): 8(S) FunctionParameter
|
||||
49(comp): 14(ptr) FunctionParameter
|
||||
51: Label
|
||||
124: 7(fvec3) CompositeExtract 48(i) 0
|
||||
125: 99(fvec2) VectorShuffle 124 124 0 1
|
||||
126: 7(fvec3) Load 69(OutColor)
|
||||
127: 99(fvec2) VectorShuffle 126 126 2 1
|
||||
128: 99(fvec2) FAdd 127 125
|
||||
129: 7(fvec3) Load 69(OutColor)
|
||||
130: 7(fvec3) VectorShuffle 129 128 0 4 3
|
||||
Store 69(OutColor) 130
|
||||
128: 7(fvec3) CompositeExtract 48(i) 0
|
||||
129: 99(fvec2) VectorShuffle 128 128 0 1
|
||||
130: 7(fvec3) Load 69(OutColor)
|
||||
131: 99(fvec2) VectorShuffle 130 130 2 1
|
||||
132: 99(fvec2) FAdd 131 129
|
||||
133: 111(ptr) AccessChain 69(OutColor) 117
|
||||
134: 6(float) CompositeExtract 132 0
|
||||
Store 133 134
|
||||
135: 111(ptr) AccessChain 69(OutColor) 114
|
||||
136: 6(float) CompositeExtract 132 1
|
||||
Store 135 136
|
||||
Return
|
||||
FunctionEnd
|
||||
54(GetColor11(struct-S-vf31;i1;): 2 Function None 15
|
||||
52(i): 8(S) FunctionParameter
|
||||
53(comp): 14(ptr) FunctionParameter
|
||||
55: Label
|
||||
131: 7(fvec3) CompositeExtract 52(i) 0
|
||||
132: 99(fvec2) VectorShuffle 131 131 0 1
|
||||
133: 7(fvec3) Load 69(OutColor)
|
||||
134: 99(fvec2) VectorShuffle 133 133 0 2
|
||||
135: 99(fvec2) FAdd 134 132
|
||||
136: 7(fvec3) Load 69(OutColor)
|
||||
137: 7(fvec3) VectorShuffle 136 135 3 1 4
|
||||
Store 69(OutColor) 137
|
||||
137: 7(fvec3) CompositeExtract 52(i) 0
|
||||
138: 99(fvec2) VectorShuffle 137 137 0 1
|
||||
139: 7(fvec3) Load 69(OutColor)
|
||||
140: 99(fvec2) VectorShuffle 139 139 0 2
|
||||
141: 99(fvec2) FAdd 140 138
|
||||
142: 111(ptr) AccessChain 69(OutColor) 72
|
||||
143: 6(float) CompositeExtract 141 0
|
||||
Store 142 143
|
||||
144: 111(ptr) AccessChain 69(OutColor) 117
|
||||
145: 6(float) CompositeExtract 141 1
|
||||
Store 144 145
|
||||
Return
|
||||
FunctionEnd
|
||||
58(GetColor12(struct-S-vf31;i1;): 2 Function None 15
|
||||
56(i): 8(S) FunctionParameter
|
||||
57(comp): 14(ptr) FunctionParameter
|
||||
59: Label
|
||||
138: 13(int) Load 57(comp)
|
||||
139: 6(float) CompositeExtract 56(i) 0 0
|
||||
141: 140(ptr) AccessChain 69(OutColor) 138
|
||||
142: 6(float) Load 141
|
||||
143: 6(float) FAdd 142 139
|
||||
144: 140(ptr) AccessChain 69(OutColor) 138
|
||||
Store 144 143
|
||||
146: 13(int) Load 57(comp)
|
||||
147: 6(float) CompositeExtract 56(i) 0 0
|
||||
148: 111(ptr) AccessChain 69(OutColor) 146
|
||||
149: 6(float) Load 148
|
||||
150: 6(float) FAdd 149 147
|
||||
151: 111(ptr) AccessChain 69(OutColor) 146
|
||||
Store 151 150
|
||||
Return
|
||||
FunctionEnd
|
||||
62(GetColor13(struct-S-vf31;i1;): 2 Function None 15
|
||||
60(i): 8(S) FunctionParameter
|
||||
61(comp): 14(ptr) FunctionParameter
|
||||
63: Label
|
||||
145: 13(int) Load 61(comp)
|
||||
146: 6(float) CompositeExtract 60(i) 0 0
|
||||
150: 71(int) VectorExtractDynamic 149 145
|
||||
151: 140(ptr) AccessChain 69(OutColor) 150
|
||||
152: 6(float) Load 151
|
||||
153: 6(float) FAdd 152 146
|
||||
154: 71(int) VectorExtractDynamic 149 145
|
||||
155: 140(ptr) AccessChain 69(OutColor) 154
|
||||
Store 155 153
|
||||
152: 13(int) Load 61(comp)
|
||||
153: 6(float) CompositeExtract 60(i) 0 0
|
||||
156: 71(int) VectorExtractDynamic 155 152
|
||||
157: 111(ptr) AccessChain 69(OutColor) 156
|
||||
158: 6(float) Load 157
|
||||
159: 6(float) FAdd 158 153
|
||||
160: 71(int) VectorExtractDynamic 155 152
|
||||
161: 111(ptr) AccessChain 69(OutColor) 160
|
||||
Store 161 159
|
||||
Return
|
||||
FunctionEnd
|
||||
66(GetColor14(struct-S-vf31;i1;): 2 Function None 15
|
||||
64(i): 8(S) FunctionParameter
|
||||
65(comp): 14(ptr) FunctionParameter
|
||||
67: Label
|
||||
156: 13(int) Load 65(comp)
|
||||
157: 6(float) CompositeExtract 64(i) 0 0
|
||||
160: 71(int) VectorExtractDynamic 159 156
|
||||
161: 140(ptr) AccessChain 69(OutColor) 160
|
||||
Store 161 157
|
||||
162: 13(int) Load 65(comp)
|
||||
163: 6(float) CompositeExtract 64(i) 0 0
|
||||
166: 71(int) VectorExtractDynamic 165 162
|
||||
167: 111(ptr) AccessChain 69(OutColor) 166
|
||||
Store 167 163
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue