SPV: Fix issue #320: Fetch needs to extract the image.

GLSL takes a traditional sampler, but SPIR-V wants just the
sampled image, not the combined sampler and image.
This commit is contained in:
John Kessenich
2016-06-02 23:45:21 -06:00
parent 98f2b3bfe0
commit a5c33d6ffb
4 changed files with 695 additions and 678 deletions

View File

@@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 433
// Id's are bound by 438
Capability Shader
Capability SampledRect
@@ -15,7 +15,7 @@ Linked fragment stage:
Capability SampledCubeArray
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33 48 89 360 388 400 418
EntryPoint Fragment 4 "main" 33 48 89 365 393 405 423
ExecutionMode 4 OriginUpperLeft
Source GLSL 450
SourceExtension "GL_ARB_sparse_texture2"
@@ -39,17 +39,17 @@ Linked fragment stage:
Name 111 "ResType"
Name 140 "us2DRect"
Name 154 "s2DArrayShadow"
Name 186 "s2DMS"
Name 223 "is2DArray"
Name 256 "sCubeShadow"
Name 289 "s2DRectShadow"
Name 360 "offsets"
Name 385 "i2D"
Name 388 "ic2"
Name 397 "ii3D"
Name 400 "ic3"
Name 409 "i2DMS"
Name 418 "outColor"
Name 188 "s2DMS"
Name 228 "is2DArray"
Name 261 "sCubeShadow"
Name 294 "s2DRectShadow"
Name 365 "offsets"
Name 390 "i2D"
Name 393 "ic2"
Name 402 "ii3D"
Name 405 "ic3"
Name 414 "i2DMS"
Name 423 "outColor"
Decorate 29(s2D) DescriptorSet 0
Decorate 44(s3D) DescriptorSet 0
Decorate 59(isCube) DescriptorSet 0
@@ -58,16 +58,16 @@ Linked fragment stage:
Decorate 108(usCubeArray) DescriptorSet 0
Decorate 140(us2DRect) DescriptorSet 0
Decorate 154(s2DArrayShadow) DescriptorSet 0
Decorate 186(s2DMS) DescriptorSet 0
Decorate 223(is2DArray) DescriptorSet 0
Decorate 256(sCubeShadow) DescriptorSet 0
Decorate 289(s2DRectShadow) DescriptorSet 0
Decorate 360(offsets) Flat
Decorate 385(i2D) DescriptorSet 0
Decorate 388(ic2) Flat
Decorate 397(ii3D) DescriptorSet 0
Decorate 400(ic3) Flat
Decorate 409(i2DMS) DescriptorSet 0
Decorate 188(s2DMS) DescriptorSet 0
Decorate 228(is2DArray) DescriptorSet 0
Decorate 261(sCubeShadow) DescriptorSet 0
Decorate 294(s2DRectShadow) DescriptorSet 0
Decorate 365(offsets) Flat
Decorate 390(i2D) DescriptorSet 0
Decorate 393(ic2) Flat
Decorate 402(ii3D) DescriptorSet 0
Decorate 405(ic3) Flat
Decorate 414(i2DMS) DescriptorSet 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@@ -143,58 +143,58 @@ Linked fragment stage:
157: 6(int) Constant 5
158: 143(ivec2) ConstantComposite 157 157
159: 20(int) Constant 2
183: TypeImage 10(float) 2D multi-sampled sampled format:Unknown
184: TypeSampledImage 183
185: TypePointer UniformConstant 184
186(s2DMS): 185(ptr) Variable UniformConstant
190: 6(int) Constant 4
199: 129(ivec3) ConstantComposite 190 190 190
220: TypeImage 6(int) 2D array sampled format:Unknown
221: TypeSampledImage 220
222: TypePointer UniformConstant 221
223(is2DArray): 222(ptr) Variable UniformConstant
226: 6(int) Constant 6
227: 143(ivec2) ConstantComposite 226 226
235: 6(int) Constant 7
236: 143(ivec2) ConstantComposite 235 235
253: TypeImage 10(float) Cube depth sampled format:Unknown
254: TypeSampledImage 253
255: TypePointer UniformConstant 254
256(sCubeShadow): 255(ptr) Variable UniformConstant
286: TypeImage 10(float) Rect depth sampled format:Unknown
287: TypeSampledImage 286
288: TypePointer UniformConstant 287
289(s2DRectShadow): 288(ptr) Variable UniformConstant
294: 20(int) Constant 3
306: 143(ivec2) ConstantComposite 130 130
335: 143(ivec2) ConstantComposite 190 190
357: 20(int) Constant 4
358: TypeArray 143(ivec2) 357
359: TypePointer Input 358
360(offsets): 359(ptr) Variable Input
383: TypeImage 10(float) 2D nonsampled format:Rgba32f
384: TypePointer UniformConstant 383
385(i2D): 384(ptr) Variable UniformConstant
387: TypePointer Input 143(ivec2)
388(ic2): 387(ptr) Variable Input
395: TypeImage 6(int) 3D nonsampled format:Rgba32i
396: TypePointer UniformConstant 395
397(ii3D): 396(ptr) Variable UniformConstant
399: TypePointer Input 129(ivec3)
400(ic3): 399(ptr) Variable Input
407: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
408: TypePointer UniformConstant 407
409(i2DMS): 408(ptr) Variable UniformConstant
417: TypePointer Output 11(fvec4)
418(outColor): 417(ptr) Variable Output
421: TypeBool
185: TypeImage 10(float) 2D multi-sampled sampled format:Unknown
186: TypeSampledImage 185
187: TypePointer UniformConstant 186
188(s2DMS): 187(ptr) Variable UniformConstant
192: 6(int) Constant 4
202: 129(ivec3) ConstantComposite 192 192 192
225: TypeImage 6(int) 2D array sampled format:Unknown
226: TypeSampledImage 225
227: TypePointer UniformConstant 226
228(is2DArray): 227(ptr) Variable UniformConstant
231: 6(int) Constant 6
232: 143(ivec2) ConstantComposite 231 231
240: 6(int) Constant 7
241: 143(ivec2) ConstantComposite 240 240
258: TypeImage 10(float) Cube depth sampled format:Unknown
259: TypeSampledImage 258
260: TypePointer UniformConstant 259
261(sCubeShadow): 260(ptr) Variable UniformConstant
291: TypeImage 10(float) Rect depth sampled format:Unknown
292: TypeSampledImage 291
293: TypePointer UniformConstant 292
294(s2DRectShadow): 293(ptr) Variable UniformConstant
299: 20(int) Constant 3
311: 143(ivec2) ConstantComposite 130 130
340: 143(ivec2) ConstantComposite 192 192
362: 20(int) Constant 4
363: TypeArray 143(ivec2) 362
364: TypePointer Input 363
365(offsets): 364(ptr) Variable Input
388: TypeImage 10(float) 2D nonsampled format:Rgba32f
389: TypePointer UniformConstant 388
390(i2D): 389(ptr) Variable UniformConstant
392: TypePointer Input 143(ivec2)
393(ic2): 392(ptr) Variable Input
400: TypeImage 6(int) 3D nonsampled format:Rgba32i
401: TypePointer UniformConstant 400
402(ii3D): 401(ptr) Variable UniformConstant
404: TypePointer Input 129(ivec3)
405(ic3): 404(ptr) Variable Input
412: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f
413: TypePointer UniformConstant 412
414(i2DMS): 413(ptr) Variable UniformConstant
422: TypePointer Output 11(fvec4)
423(outColor): 422(ptr) Variable Output
426: TypeBool
4(main): 2 Function None 3
5: Label
8(resident): 7(ptr) Variable Function
13(texel): 12(ptr) Variable Function
18(itexel): 17(ptr) Variable Function
23(utexel): 22(ptr) Variable Function
419: 12(ptr) Variable Function
424: 12(ptr) Variable Function
Store 8(resident) 9
Store 13(texel) 15
Store 18(itexel) 19
@@ -308,281 +308,286 @@ Linked fragment stage:
167: 27 Load 29(s2D)
168: 31(fvec2) Load 33(c2)
169: 143(ivec2) ConvertFToS 168
170: 35(ResType) ImageSparseFetch 167 169 Lod 130
171: 11(fvec4) CompositeExtract 170 1
Store 13(texel) 171
172: 6(int) CompositeExtract 170 0
173: 6(int) Load 8(resident)
174: 6(int) BitwiseOr 173 172
Store 8(resident) 174
175: 138 Load 140(us2DRect)
176: 31(fvec2) Load 33(c2)
177: 143(ivec2) ConvertFToS 176
178:111(ResType) ImageSparseFetch 175 177
179: 21(ivec4) CompositeExtract 178 1
Store 23(utexel) 179
180: 6(int) CompositeExtract 178 0
181: 6(int) Load 8(resident)
182: 6(int) BitwiseOr 181 180
Store 8(resident) 182
187: 184 Load 186(s2DMS)
188: 31(fvec2) Load 33(c2)
189: 143(ivec2) ConvertFToS 188
191: 35(ResType) ImageSparseFetch 187 189 Sample 190
192: 11(fvec4) CompositeExtract 191 1
Store 13(texel) 192
193: 6(int) CompositeExtract 191 0
194: 6(int) Load 8(resident)
195: 6(int) BitwiseOr 194 193
Store 8(resident) 195
196: 42 Load 44(s3D)
197: 46(fvec3) Load 48(c3)
198: 129(ivec3) ConvertFToS 197
200: 35(ResType) ImageSparseFetch 196 198 Lod ConstOffset 130 199
201: 11(fvec4) CompositeExtract 200 1
Store 13(texel) 201
202: 6(int) CompositeExtract 200 0
203: 6(int) Load 8(resident)
204: 6(int) BitwiseOr 203 202
Store 8(resident) 204
205: 138 Load 140(us2DRect)
206: 31(fvec2) Load 33(c2)
207: 143(ivec2) ConvertFToS 206
208:111(ResType) ImageSparseFetch 205 207 ConstOffset 145
209: 21(ivec4) CompositeExtract 208 1
Store 23(utexel) 209
210: 6(int) CompositeExtract 208 0
211: 6(int) Load 8(resident)
212: 6(int) BitwiseOr 211 210
Store 8(resident) 212
213: 27 Load 29(s2D)
214: 31(fvec2) Load 33(c2)
215: 35(ResType) ImageSparseSampleExplicitLod 213 214 Lod ConstOffset 50 158
216: 11(fvec4) CompositeExtract 215 1
Store 13(texel) 216
217: 6(int) CompositeExtract 215 0
218: 6(int) Load 8(resident)
219: 6(int) BitwiseOr 218 217
Store 8(resident) 219
224: 221 Load 223(is2DArray)
225: 46(fvec3) Load 48(c3)
228: 62(ResType) ImageSparseSampleExplicitLod 224 225 Lod ConstOffset 50 227
229: 16(ivec4) CompositeExtract 228 1
Store 18(itexel) 229
230: 6(int) CompositeExtract 228 0
231: 6(int) Load 8(resident)
232: 6(int) BitwiseOr 231 230
Store 8(resident) 232
233: 69 Load 71(s2DShadow)
234: 46(fvec3) Load 48(c3)
237: 74(ptr) AccessChain 13(texel) 159
238: 10(float) CompositeExtract 234 2
239: 77(ResType) ImageSparseSampleDrefExplicitLod 233 234 238 Lod ConstOffset 50 236
240: 10(float) CompositeExtract 239 1
Store 237 240
241: 6(int) CompositeExtract 239 0
242: 6(int) Load 8(resident)
243: 6(int) BitwiseOr 242 241
Store 8(resident) 243
244: 42 Load 44(s3D)
245: 46(fvec3) Load 48(c3)
246: 46(fvec3) Load 48(c3)
247: 46(fvec3) Load 48(c3)
248: 35(ResType) ImageSparseSampleExplicitLod 244 245 Grad 246 247
249: 11(fvec4) CompositeExtract 248 1
Store 13(texel) 249
250: 6(int) CompositeExtract 248 0
251: 6(int) Load 8(resident)
252: 6(int) BitwiseOr 251 250
Store 8(resident) 252
257: 254 Load 256(sCubeShadow)
258: 11(fvec4) Load 89(c4)
259: 46(fvec3) Load 48(c3)
260: 46(fvec3) Load 48(c3)
261: 74(ptr) AccessChain 13(texel) 119
262: 10(float) CompositeExtract 258 3
263: 77(ResType) ImageSparseSampleDrefExplicitLod 257 258 262 Grad 259 260
264: 10(float) CompositeExtract 263 1
Store 261 264
265: 6(int) CompositeExtract 263 0
266: 6(int) Load 8(resident)
267: 6(int) BitwiseOr 266 265
Store 8(resident) 267
268: 106 Load 108(usCubeArray)
269: 11(fvec4) Load 89(c4)
270: 46(fvec3) Load 48(c3)
271: 46(fvec3) Load 48(c3)
272:111(ResType) ImageSparseSampleExplicitLod 268 269 Grad 270 271
273: 21(ivec4) CompositeExtract 272 1
Store 23(utexel) 273
274: 6(int) CompositeExtract 272 0
275: 6(int) Load 8(resident)
276: 6(int) BitwiseOr 275 274
Store 8(resident) 276
277: 27 Load 29(s2D)
278: 31(fvec2) Load 33(c2)
279: 31(fvec2) Load 33(c2)
280: 31(fvec2) Load 33(c2)
281: 35(ResType) ImageSparseSampleExplicitLod 277 278 Grad ConstOffset 279 280 158
282: 11(fvec4) CompositeExtract 281 1
Store 13(texel) 282
283: 6(int) CompositeExtract 281 0
284: 6(int) Load 8(resident)
285: 6(int) BitwiseOr 284 283
Store 8(resident) 285
290: 287 Load 289(s2DRectShadow)
291: 46(fvec3) Load 48(c3)
292: 31(fvec2) Load 33(c2)
293: 31(fvec2) Load 33(c2)
295: 74(ptr) AccessChain 13(texel) 294
296: 10(float) CompositeExtract 291 2
297: 77(ResType) ImageSparseSampleDrefExplicitLod 290 291 296 Grad ConstOffset 292 293 227
298: 10(float) CompositeExtract 297 1
Store 295 298
299: 6(int) CompositeExtract 297 0
300: 6(int) Load 8(resident)
301: 6(int) BitwiseOr 300 299
Store 8(resident) 301
302: 221 Load 223(is2DArray)
303: 46(fvec3) Load 48(c3)
304: 31(fvec2) Load 33(c2)
305: 31(fvec2) Load 33(c2)
307: 62(ResType) ImageSparseSampleExplicitLod 302 303 Grad ConstOffset 304 305 306
308: 16(ivec4) CompositeExtract 307 1
Store 18(itexel) 308
309: 6(int) CompositeExtract 307 0
310: 6(int) Load 8(resident)
311: 6(int) BitwiseOr 310 309
Store 8(resident) 311
312: 27 Load 29(s2D)
313: 31(fvec2) Load 33(c2)
314: 35(ResType) ImageSparseGather 312 313 9
315: 11(fvec4) CompositeExtract 314 1
Store 13(texel) 315
316: 6(int) CompositeExtract 314 0
317: 6(int) Load 8(resident)
318: 6(int) BitwiseOr 317 316
Store 8(resident) 318
319: 221 Load 223(is2DArray)
320: 46(fvec3) Load 48(c3)
321: 62(ResType) ImageSparseGather 319 320 130
322: 16(ivec4) CompositeExtract 321 1
Store 18(itexel) 322
323: 6(int) CompositeExtract 321 0
324: 6(int) Load 8(resident)
325: 6(int) BitwiseOr 324 323
Store 8(resident) 325
326: 152 Load 154(s2DArrayShadow)
327: 46(fvec3) Load 48(c3)
328: 35(ResType) ImageSparseDrefGather 326 327 50
329: 11(fvec4) CompositeExtract 328 1
Store 13(texel) 329
330: 6(int) CompositeExtract 328 0
331: 6(int) Load 8(resident)
332: 6(int) BitwiseOr 331 330
Store 8(resident) 332
333: 27 Load 29(s2D)
334: 31(fvec2) Load 33(c2)
336: 35(ResType) ImageSparseGather 333 334 9 ConstOffset 335
337: 11(fvec4) CompositeExtract 336 1
Store 13(texel) 337
338: 6(int) CompositeExtract 336 0
339: 6(int) Load 8(resident)
340: 6(int) BitwiseOr 339 338
Store 8(resident) 340
341: 221 Load 223(is2DArray)
342: 46(fvec3) Load 48(c3)
343: 62(ResType) ImageSparseGather 341 342 130 ConstOffset 158
344: 16(ivec4) CompositeExtract 343 1
Store 18(itexel) 344
345: 6(int) CompositeExtract 343 0
346: 6(int) Load 8(resident)
347: 6(int) BitwiseOr 346 345
Store 8(resident) 347
348: 287 Load 289(s2DRectShadow)
349: 31(fvec2) Load 33(c2)
350: 35(ResType) ImageSparseDrefGather 348 349 50 ConstOffset 236
351: 11(fvec4) CompositeExtract 350 1
Store 13(texel) 351
352: 6(int) CompositeExtract 350 0
353: 6(int) Load 8(resident)
354: 6(int) BitwiseOr 353 352
Store 8(resident) 354
355: 27 Load 29(s2D)
356: 31(fvec2) Load 33(c2)
361: 358 Load 360(offsets)
362: 35(ResType) ImageSparseGather 355 356 9 ConstOffsets 361
363: 11(fvec4) CompositeExtract 362 1
Store 13(texel) 363
364: 6(int) CompositeExtract 362 0
365: 6(int) Load 8(resident)
366: 6(int) BitwiseOr 365 364
Store 8(resident) 366
367: 221 Load 223(is2DArray)
368: 46(fvec3) Load 48(c3)
369: 358 Load 360(offsets)
370: 62(ResType) ImageSparseGather 367 368 130 ConstOffsets 369
371: 16(ivec4) CompositeExtract 370 1
Store 18(itexel) 371
372: 6(int) CompositeExtract 370 0
373: 6(int) Load 8(resident)
374: 6(int) BitwiseOr 373 372
Store 8(resident) 374
375: 287 Load 289(s2DRectShadow)
376: 31(fvec2) Load 33(c2)
377: 358 Load 360(offsets)
378: 35(ResType) ImageSparseDrefGather 375 376 50 ConstOffsets 377
379: 11(fvec4) CompositeExtract 378 1
Store 13(texel) 379
380: 6(int) CompositeExtract 378 0
381: 6(int) Load 8(resident)
382: 6(int) BitwiseOr 381 380
Store 8(resident) 382
386: 383 Load 385(i2D)
389: 143(ivec2) Load 388(ic2)
390: 35(ResType) ImageSparseRead 386 389
391: 11(fvec4) CompositeExtract 390 1
Store 13(texel) 391
392: 6(int) CompositeExtract 390 0
393: 6(int) Load 8(resident)
394: 6(int) BitwiseOr 393 392
Store 8(resident) 394
398: 395 Load 397(ii3D)
401: 129(ivec3) Load 400(ic3)
402: 62(ResType) ImageSparseRead 398 401
403: 16(ivec4) CompositeExtract 402 1
Store 18(itexel) 403
404: 6(int) CompositeExtract 402 0
405: 6(int) Load 8(resident)
406: 6(int) BitwiseOr 405 404
Store 8(resident) 406
410: 407 Load 409(i2DMS)
411: 143(ivec2) Load 388(ic2)
412: 35(ResType) ImageSparseRead 410 411 Sample 144
413: 11(fvec4) CompositeExtract 412 1
Store 13(texel) 413
414: 6(int) CompositeExtract 412 0
415: 6(int) Load 8(resident)
416: 6(int) BitwiseOr 415 414
Store 8(resident) 416
170: 26 Image 167
171: 35(ResType) ImageSparseFetch 170 169 Lod 130
172: 11(fvec4) CompositeExtract 171 1
Store 13(texel) 172
173: 6(int) CompositeExtract 171 0
174: 6(int) Load 8(resident)
175: 6(int) BitwiseOr 174 173
Store 8(resident) 175
176: 138 Load 140(us2DRect)
177: 31(fvec2) Load 33(c2)
178: 143(ivec2) ConvertFToS 177
179: 137 Image 176
180:111(ResType) ImageSparseFetch 179 178
181: 21(ivec4) CompositeExtract 180 1
Store 23(utexel) 181
182: 6(int) CompositeExtract 180 0
183: 6(int) Load 8(resident)
184: 6(int) BitwiseOr 183 182
Store 8(resident) 184
189: 186 Load 188(s2DMS)
190: 31(fvec2) Load 33(c2)
191: 143(ivec2) ConvertFToS 190
193: 185 Image 189
194: 35(ResType) ImageSparseFetch 193 191 Sample 192
195: 11(fvec4) CompositeExtract 194 1
Store 13(texel) 195
196: 6(int) CompositeExtract 194 0
197: 6(int) Load 8(resident)
198: 6(int) BitwiseOr 197 196
Store 8(resident) 198
199: 42 Load 44(s3D)
200: 46(fvec3) Load 48(c3)
201: 129(ivec3) ConvertFToS 200
203: 41 Image 199
204: 35(ResType) ImageSparseFetch 203 201 Lod ConstOffset 130 202
205: 11(fvec4) CompositeExtract 204 1
Store 13(texel) 205
206: 6(int) CompositeExtract 204 0
207: 6(int) Load 8(resident)
208: 6(int) BitwiseOr 207 206
Store 8(resident) 208
209: 138 Load 140(us2DRect)
210: 31(fvec2) Load 33(c2)
211: 143(ivec2) ConvertFToS 210
212: 137 Image 209
213:111(ResType) ImageSparseFetch 212 211 ConstOffset 145
214: 21(ivec4) CompositeExtract 213 1
Store 23(utexel) 214
215: 6(int) CompositeExtract 213 0
216: 6(int) Load 8(resident)
217: 6(int) BitwiseOr 216 215
Store 8(resident) 217
218: 27 Load 29(s2D)
219: 31(fvec2) Load 33(c2)
220: 35(ResType) ImageSparseSampleExplicitLod 218 219 Lod ConstOffset 50 158
221: 11(fvec4) CompositeExtract 220 1
Store 13(texel) 221
222: 6(int) CompositeExtract 220 0
223: 6(int) Load 8(resident)
224: 6(int) BitwiseOr 223 222
Store 8(resident) 224
229: 226 Load 228(is2DArray)
230: 46(fvec3) Load 48(c3)
233: 62(ResType) ImageSparseSampleExplicitLod 229 230 Lod ConstOffset 50 232
234: 16(ivec4) CompositeExtract 233 1
Store 18(itexel) 234
235: 6(int) CompositeExtract 233 0
236: 6(int) Load 8(resident)
237: 6(int) BitwiseOr 236 235
Store 8(resident) 237
238: 69 Load 71(s2DShadow)
239: 46(fvec3) Load 48(c3)
242: 74(ptr) AccessChain 13(texel) 159
243: 10(float) CompositeExtract 239 2
244: 77(ResType) ImageSparseSampleDrefExplicitLod 238 239 243 Lod ConstOffset 50 241
245: 10(float) CompositeExtract 244 1
Store 242 245
246: 6(int) CompositeExtract 244 0
247: 6(int) Load 8(resident)
248: 6(int) BitwiseOr 247 246
Store 8(resident) 248
249: 42 Load 44(s3D)
250: 46(fvec3) Load 48(c3)
251: 46(fvec3) Load 48(c3)
252: 46(fvec3) Load 48(c3)
253: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 251 252
254: 11(fvec4) CompositeExtract 253 1
Store 13(texel) 254
255: 6(int) CompositeExtract 253 0
256: 6(int) Load 8(resident)
257: 6(int) BitwiseOr 256 255
Store 8(resident) 257
262: 259 Load 261(sCubeShadow)
263: 11(fvec4) Load 89(c4)
264: 46(fvec3) Load 48(c3)
265: 46(fvec3) Load 48(c3)
266: 74(ptr) AccessChain 13(texel) 119
267: 10(float) CompositeExtract 263 3
268: 77(ResType) ImageSparseSampleDrefExplicitLod 262 263 267 Grad 264 265
269: 10(float) CompositeExtract 268 1
Store 266 269
270: 6(int) CompositeExtract 268 0
271: 6(int) Load 8(resident)
272: 6(int) BitwiseOr 271 270
Store 8(resident) 272
273: 106 Load 108(usCubeArray)
274: 11(fvec4) Load 89(c4)
275: 46(fvec3) Load 48(c3)
276: 46(fvec3) Load 48(c3)
277:111(ResType) ImageSparseSampleExplicitLod 273 274 Grad 275 276
278: 21(ivec4) CompositeExtract 277 1
Store 23(utexel) 278
279: 6(int) CompositeExtract 277 0
280: 6(int) Load 8(resident)
281: 6(int) BitwiseOr 280 279
Store 8(resident) 281
282: 27 Load 29(s2D)
283: 31(fvec2) Load 33(c2)
284: 31(fvec2) Load 33(c2)
285: 31(fvec2) Load 33(c2)
286: 35(ResType) ImageSparseSampleExplicitLod 282 283 Grad ConstOffset 284 285 158
287: 11(fvec4) CompositeExtract 286 1
Store 13(texel) 287
288: 6(int) CompositeExtract 286 0
289: 6(int) Load 8(resident)
290: 6(int) BitwiseOr 289 288
Store 8(resident) 290
295: 292 Load 294(s2DRectShadow)
296: 46(fvec3) Load 48(c3)
297: 31(fvec2) Load 33(c2)
298: 31(fvec2) Load 33(c2)
300: 74(ptr) AccessChain 13(texel) 299
301: 10(float) CompositeExtract 296 2
302: 77(ResType) ImageSparseSampleDrefExplicitLod 295 296 301 Grad ConstOffset 297 298 232
303: 10(float) CompositeExtract 302 1
Store 300 303
304: 6(int) CompositeExtract 302 0
305: 6(int) Load 8(resident)
306: 6(int) BitwiseOr 305 304
Store 8(resident) 306
307: 226 Load 228(is2DArray)
308: 46(fvec3) Load 48(c3)
309: 31(fvec2) Load 33(c2)
310: 31(fvec2) Load 33(c2)
312: 62(ResType) ImageSparseSampleExplicitLod 307 308 Grad ConstOffset 309 310 311
313: 16(ivec4) CompositeExtract 312 1
Store 18(itexel) 313
314: 6(int) CompositeExtract 312 0
315: 6(int) Load 8(resident)
316: 6(int) BitwiseOr 315 314
Store 8(resident) 316
317: 27 Load 29(s2D)
318: 31(fvec2) Load 33(c2)
319: 35(ResType) ImageSparseGather 317 318 9
320: 11(fvec4) CompositeExtract 319 1
Store 13(texel) 320
321: 6(int) CompositeExtract 319 0
322: 6(int) Load 8(resident)
323: 6(int) BitwiseOr 322 321
Store 8(resident) 323
324: 226 Load 228(is2DArray)
325: 46(fvec3) Load 48(c3)
326: 62(ResType) ImageSparseGather 324 325 130
327: 16(ivec4) CompositeExtract 326 1
Store 18(itexel) 327
328: 6(int) CompositeExtract 326 0
329: 6(int) Load 8(resident)
330: 6(int) BitwiseOr 329 328
Store 8(resident) 330
331: 152 Load 154(s2DArrayShadow)
332: 46(fvec3) Load 48(c3)
333: 35(ResType) ImageSparseDrefGather 331 332 50
334: 11(fvec4) CompositeExtract 333 1
Store 13(texel) 334
335: 6(int) CompositeExtract 333 0
336: 6(int) Load 8(resident)
337: 6(int) BitwiseOr 336 335
Store 8(resident) 337
338: 27 Load 29(s2D)
339: 31(fvec2) Load 33(c2)
341: 35(ResType) ImageSparseGather 338 339 9 ConstOffset 340
342: 11(fvec4) CompositeExtract 341 1
Store 13(texel) 342
343: 6(int) CompositeExtract 341 0
344: 6(int) Load 8(resident)
345: 6(int) BitwiseOr 344 343
Store 8(resident) 345
346: 226 Load 228(is2DArray)
347: 46(fvec3) Load 48(c3)
348: 62(ResType) ImageSparseGather 346 347 130 ConstOffset 158
349: 16(ivec4) CompositeExtract 348 1
Store 18(itexel) 349
350: 6(int) CompositeExtract 348 0
351: 6(int) Load 8(resident)
352: 6(int) BitwiseOr 351 350
Store 8(resident) 352
353: 292 Load 294(s2DRectShadow)
354: 31(fvec2) Load 33(c2)
355: 35(ResType) ImageSparseDrefGather 353 354 50 ConstOffset 241
356: 11(fvec4) CompositeExtract 355 1
Store 13(texel) 356
357: 6(int) CompositeExtract 355 0
358: 6(int) Load 8(resident)
359: 6(int) BitwiseOr 358 357
Store 8(resident) 359
360: 27 Load 29(s2D)
361: 31(fvec2) Load 33(c2)
366: 363 Load 365(offsets)
367: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 366
368: 11(fvec4) CompositeExtract 367 1
Store 13(texel) 368
369: 6(int) CompositeExtract 367 0
370: 6(int) Load 8(resident)
371: 6(int) BitwiseOr 370 369
Store 8(resident) 371
372: 226 Load 228(is2DArray)
373: 46(fvec3) Load 48(c3)
374: 363 Load 365(offsets)
375: 62(ResType) ImageSparseGather 372 373 130 ConstOffsets 374
376: 16(ivec4) CompositeExtract 375 1
Store 18(itexel) 376
377: 6(int) CompositeExtract 375 0
378: 6(int) Load 8(resident)
379: 6(int) BitwiseOr 378 377
Store 8(resident) 379
380: 292 Load 294(s2DRectShadow)
381: 31(fvec2) Load 33(c2)
382: 363 Load 365(offsets)
383: 35(ResType) ImageSparseDrefGather 380 381 50 ConstOffsets 382
384: 11(fvec4) CompositeExtract 383 1
Store 13(texel) 384
385: 6(int) CompositeExtract 383 0
386: 6(int) Load 8(resident)
387: 6(int) BitwiseOr 386 385
Store 8(resident) 387
391: 388 Load 390(i2D)
394: 143(ivec2) Load 393(ic2)
395: 35(ResType) ImageSparseRead 391 394
396: 11(fvec4) CompositeExtract 395 1
Store 13(texel) 396
397: 6(int) CompositeExtract 395 0
398: 6(int) Load 8(resident)
399: 6(int) BitwiseOr 398 397
Store 8(resident) 399
403: 400 Load 402(ii3D)
406: 129(ivec3) Load 405(ic3)
407: 62(ResType) ImageSparseRead 403 406
408: 16(ivec4) CompositeExtract 407 1
Store 18(itexel) 408
409: 6(int) CompositeExtract 407 0
410: 6(int) Load 8(resident)
411: 6(int) BitwiseOr 410 409
Store 8(resident) 411
415: 412 Load 414(i2DMS)
416: 143(ivec2) Load 393(ic2)
417: 35(ResType) ImageSparseRead 415 416 Sample 144
418: 11(fvec4) CompositeExtract 417 1
Store 13(texel) 418
419: 6(int) CompositeExtract 417 0
420: 6(int) Load 8(resident)
422: 421(bool) ImageSparseTexelsResident 420
SelectionMerge 424 None
BranchConditional 422 423 426
423: Label
425: 11(fvec4) Load 13(texel)
Store 419 425
Branch 424
426: Label
427: 16(ivec4) Load 18(itexel)
428: 11(fvec4) ConvertSToF 427
429: 21(ivec4) Load 23(utexel)
430: 11(fvec4) ConvertUToF 429
431: 11(fvec4) FAdd 428 430
Store 419 431
Branch 424
424: Label
432: 11(fvec4) Load 419
Store 418(outColor) 432
421: 6(int) BitwiseOr 420 419
Store 8(resident) 421
425: 6(int) Load 8(resident)
427: 426(bool) ImageSparseTexelsResident 425
SelectionMerge 429 None
BranchConditional 427 428 431
428: Label
430: 11(fvec4) Load 13(texel)
Store 424 430
Branch 429
431: Label
432: 16(ivec4) Load 18(itexel)
433: 11(fvec4) ConvertSToF 432
434: 21(ivec4) Load 23(utexel)
435: 11(fvec4) ConvertUToF 434
436: 11(fvec4) FAdd 433 435
Store 424 436
Branch 429
429: Label
437: 11(fvec4) Load 424
Store 423(outColor) 437
Return
FunctionEnd