SPV: the OpImageTexelPointer sample 0 should be <id> of 0, not literal 0.

This commit is contained in:
John Kessenich
2016-01-22 09:54:12 -07:00
parent 7b9fa25bad
commit cd26144d24
2 changed files with 18 additions and 19 deletions

View File

@@ -2087,13 +2087,12 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
} else if (node->isSparseImage()) { } else if (node->isSparseImage()) {
spv::MissingFunctionality("sparse image functions"); spv::MissingFunctionality("sparse image functions");
return spv::NoResult; return spv::NoResult;
} } else {
else {
// Process image atomic operations // Process image atomic operations
// GLSL "IMAGE_PARAMS" will involve in constructing an image texel pointer and this pointer, // GLSL "IMAGE_PARAMS" will involve in constructing an image texel pointer and this pointer,
// as the first source operand, is required by SPIR-V atomic operations. // as the first source operand, is required by SPIR-V atomic operations.
operands.push_back(sampler.ms ? *(opIt++) : 0); // For non-MS, the value should be 0 operands.push_back(sampler.ms ? *(opIt++) : builder.makeUintConstant(0)); // For non-MS, the value should be 0
spv::Id resultTypeId = builder.makePointer(spv::StorageClassImage, convertGlslangToSpvType(node->getType())); spv::Id resultTypeId = builder.makePointer(spv::StorageClassImage, convertGlslangToSpvType(node->getType()));
spv::Id pointer = builder.createOp(spv::OpImageTexelPointer, resultTypeId, operands); spv::Id pointer = builder.createOp(spv::OpImageTexelPointer, resultTypeId, operands);

View File

@@ -346,7 +346,7 @@ Linked fragment stage:
ImageWrite 224 225 227 Sample 226 ImageWrite 224 225 227 Sample 226
Store 229(ui) 19 Store 229(ui) 19
233: 6(int) Load 132(ic1D) 233: 6(int) Load 132(ic1D)
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0 236: 235(ptr) ImageTexelPointer 232(ii1D) 233 19
238: 6(int) AtomicIAdd 236 237 19 234 238: 6(int) AtomicIAdd 236 237 19 234
239: 20(ptr) AccessChain 9(iv) 19 239: 20(ptr) AccessChain 9(iv) 19
240: 6(int) Load 239 240: 6(int) Load 239
@@ -355,13 +355,13 @@ Linked fragment stage:
Store 242 241 Store 242 241
246: 29(ivec2) Load 142(ic2D) 246: 29(ivec2) Load 142(ic2D)
249: 18(int) Load 248(value) 249: 18(int) Load 248(value)
251: 250(ptr) ImageTexelPointer 245(ui2D) 246 0 251: 250(ptr) ImageTexelPointer 245(ui2D) 246 19
252: 18(int) AtomicIAdd 251 237 19 249 252: 18(int) AtomicIAdd 251 237 19 249
253: 18(int) Load 229(ui) 253: 18(int) Load 229(ui)
254: 18(int) IAdd 253 252 254: 18(int) IAdd 253 252
Store 229(ui) 254 Store 229(ui) 254
255: 6(int) Load 132(ic1D) 255: 6(int) Load 132(ic1D)
257: 235(ptr) ImageTexelPointer 232(ii1D) 255 0 257: 235(ptr) ImageTexelPointer 232(ii1D) 255 19
258: 6(int) AtomicSMin 257 237 19 256 258: 6(int) AtomicSMin 257 237 19 256
259: 20(ptr) AccessChain 9(iv) 19 259: 20(ptr) AccessChain 9(iv) 19
260: 6(int) Load 259 260: 6(int) Load 259
@@ -370,13 +370,13 @@ Linked fragment stage:
Store 262 261 Store 262 261
263: 29(ivec2) Load 142(ic2D) 263: 29(ivec2) Load 142(ic2D)
264: 18(int) Load 248(value) 264: 18(int) Load 248(value)
265: 250(ptr) ImageTexelPointer 245(ui2D) 263 0 265: 250(ptr) ImageTexelPointer 245(ui2D) 263 19
266: 18(int) AtomicUMin 265 237 19 264 266: 18(int) AtomicUMin 265 237 19 264
267: 18(int) Load 229(ui) 267: 18(int) Load 229(ui)
268: 18(int) IAdd 267 266 268: 18(int) IAdd 267 266
Store 229(ui) 268 Store 229(ui) 268
269: 6(int) Load 132(ic1D) 269: 6(int) Load 132(ic1D)
271: 235(ptr) ImageTexelPointer 232(ii1D) 269 0 271: 235(ptr) ImageTexelPointer 232(ii1D) 269 19
272: 6(int) AtomicSMax 271 237 19 270 272: 6(int) AtomicSMax 271 237 19 270
273: 20(ptr) AccessChain 9(iv) 19 273: 20(ptr) AccessChain 9(iv) 19
274: 6(int) Load 273 274: 6(int) Load 273
@@ -385,13 +385,13 @@ Linked fragment stage:
Store 276 275 Store 276 275
277: 29(ivec2) Load 142(ic2D) 277: 29(ivec2) Load 142(ic2D)
278: 18(int) Load 248(value) 278: 18(int) Load 248(value)
279: 250(ptr) ImageTexelPointer 245(ui2D) 277 0 279: 250(ptr) ImageTexelPointer 245(ui2D) 277 19
280: 18(int) AtomicUMax 279 237 19 278 280: 18(int) AtomicUMax 279 237 19 278
281: 18(int) Load 229(ui) 281: 18(int) Load 229(ui)
282: 18(int) IAdd 281 280 282: 18(int) IAdd 281 280
Store 229(ui) 282 Store 229(ui) 282
283: 6(int) Load 132(ic1D) 283: 6(int) Load 132(ic1D)
285: 235(ptr) ImageTexelPointer 232(ii1D) 283 0 285: 235(ptr) ImageTexelPointer 232(ii1D) 283 19
286: 6(int) AtomicAnd 285 237 19 284 286: 6(int) AtomicAnd 285 237 19 284
287: 20(ptr) AccessChain 9(iv) 19 287: 20(ptr) AccessChain 9(iv) 19
288: 6(int) Load 287 288: 6(int) Load 287
@@ -400,13 +400,13 @@ Linked fragment stage:
Store 290 289 Store 290 289
291: 29(ivec2) Load 142(ic2D) 291: 29(ivec2) Load 142(ic2D)
292: 18(int) Load 248(value) 292: 18(int) Load 248(value)
293: 250(ptr) ImageTexelPointer 245(ui2D) 291 0 293: 250(ptr) ImageTexelPointer 245(ui2D) 291 19
294: 18(int) AtomicAnd 293 237 19 292 294: 18(int) AtomicAnd 293 237 19 292
295: 18(int) Load 229(ui) 295: 18(int) Load 229(ui)
296: 18(int) IAdd 295 294 296: 18(int) IAdd 295 294
Store 229(ui) 296 Store 229(ui) 296
297: 6(int) Load 132(ic1D) 297: 6(int) Load 132(ic1D)
299: 235(ptr) ImageTexelPointer 232(ii1D) 297 0 299: 235(ptr) ImageTexelPointer 232(ii1D) 297 19
300: 6(int) AtomicOr 299 237 19 298 300: 6(int) AtomicOr 299 237 19 298
301: 20(ptr) AccessChain 9(iv) 19 301: 20(ptr) AccessChain 9(iv) 19
302: 6(int) Load 301 302: 6(int) Load 301
@@ -415,13 +415,13 @@ Linked fragment stage:
Store 304 303 Store 304 303
305: 29(ivec2) Load 142(ic2D) 305: 29(ivec2) Load 142(ic2D)
306: 18(int) Load 248(value) 306: 18(int) Load 248(value)
307: 250(ptr) ImageTexelPointer 245(ui2D) 305 0 307: 250(ptr) ImageTexelPointer 245(ui2D) 305 19
308: 18(int) AtomicOr 307 237 19 306 308: 18(int) AtomicOr 307 237 19 306
309: 18(int) Load 229(ui) 309: 18(int) Load 229(ui)
310: 18(int) IAdd 309 308 310: 18(int) IAdd 309 308
Store 229(ui) 310 Store 229(ui) 310
311: 6(int) Load 132(ic1D) 311: 6(int) Load 132(ic1D)
313: 235(ptr) ImageTexelPointer 232(ii1D) 311 0 313: 235(ptr) ImageTexelPointer 232(ii1D) 311 19
314: 6(int) AtomicXor 313 237 19 312 314: 6(int) AtomicXor 313 237 19 312
315: 20(ptr) AccessChain 9(iv) 19 315: 20(ptr) AccessChain 9(iv) 19
316: 6(int) Load 315 316: 6(int) Load 315
@@ -430,13 +430,13 @@ Linked fragment stage:
Store 318 317 Store 318 317
319: 29(ivec2) Load 142(ic2D) 319: 29(ivec2) Load 142(ic2D)
320: 18(int) Load 248(value) 320: 18(int) Load 248(value)
321: 250(ptr) ImageTexelPointer 245(ui2D) 319 0 321: 250(ptr) ImageTexelPointer 245(ui2D) 319 19
322: 18(int) AtomicXor 321 237 19 320 322: 18(int) AtomicXor 321 237 19 320
323: 18(int) Load 229(ui) 323: 18(int) Load 229(ui)
324: 18(int) IAdd 323 322 324: 18(int) IAdd 323 322
Store 229(ui) 324 Store 229(ui) 324
325: 6(int) Load 132(ic1D) 325: 6(int) Load 132(ic1D)
327: 235(ptr) ImageTexelPointer 232(ii1D) 325 0 327: 235(ptr) ImageTexelPointer 232(ii1D) 325 19
328: 6(int) AtomicExchange 327 237 19 326 328: 6(int) AtomicExchange 327 237 19 326
329: 20(ptr) AccessChain 9(iv) 19 329: 20(ptr) AccessChain 9(iv) 19
330: 6(int) Load 329 330: 6(int) Load 329
@@ -445,13 +445,13 @@ Linked fragment stage:
Store 332 331 Store 332 331
333: 29(ivec2) Load 142(ic2D) 333: 29(ivec2) Load 142(ic2D)
334: 18(int) Load 248(value) 334: 18(int) Load 248(value)
335: 250(ptr) ImageTexelPointer 245(ui2D) 333 0 335: 250(ptr) ImageTexelPointer 245(ui2D) 333 19
336: 18(int) AtomicExchange 335 237 19 334 336: 18(int) AtomicExchange 335 237 19 334
337: 18(int) Load 229(ui) 337: 18(int) Load 229(ui)
338: 18(int) IAdd 337 336 338: 18(int) IAdd 337 336
Store 229(ui) 338 Store 229(ui) 338
339: 6(int) Load 132(ic1D) 339: 6(int) Load 132(ic1D)
342: 235(ptr) ImageTexelPointer 232(ii1D) 339 0 342: 235(ptr) ImageTexelPointer 232(ii1D) 339 19
343: 6(int) AtomicCompareExchange 342 237 19 19 341 340 343: 6(int) AtomicCompareExchange 342 237 19 19 341 340
344: 20(ptr) AccessChain 9(iv) 19 344: 20(ptr) AccessChain 9(iv) 19
345: 6(int) Load 344 345: 6(int) Load 344
@@ -460,7 +460,7 @@ Linked fragment stage:
Store 347 346 Store 347 346
348: 29(ivec2) Load 142(ic2D) 348: 29(ivec2) Load 142(ic2D)
350: 18(int) Load 248(value) 350: 18(int) Load 248(value)
351: 250(ptr) ImageTexelPointer 245(ui2D) 348 0 351: 250(ptr) ImageTexelPointer 245(ui2D) 348 19
352: 18(int) AtomicCompareExchange 351 237 19 19 350 349 352: 18(int) AtomicCompareExchange 351 237 19 19 350 349
353: 18(int) Load 229(ui) 353: 18(int) Load 229(ui)
354: 18(int) IAdd 353 352 354: 18(int) IAdd 353 352