Fix an issue of SPV generation for imageAtomicStore.

For GLSL function imageAtomicStore, it will be translated to
OpImageTexelPointer + OpAtomicStore. The result type of
OpImageTexelPointer must be the same as the sampled type of OpTypeImage.
On translation, the result type is mistakenly fetched from operand list
operands[2] while operands[2] corresponds to sampleNum whose type is
always uint. This leads to an error if the image type is iimageXXX that is
int image.
This commit is contained in:
Rex Xu
2020-02-22 22:04:31 +08:00
parent c12493ff69
commit fb18b6df28
3 changed files with 6 additions and 2 deletions

View File

@@ -1,7 +1,7 @@
spv.memoryScopeSemantics.comp
// Module Version 10300
// Generated by (magic number): 80008
// Id's are bound by 167
// Id's are bound by 169
Capability Shader
Capability Int64
@@ -181,6 +181,7 @@ spv.memoryScopeSemantics.comp
163: TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
164: TypePointer UniformConstant 163
165(imageMS): 164(ptr) Variable UniformConstant
167: 6(int) Constant 4294967289
4(main): 2 Function None 3
5: Label
8(origi): 7(ptr) Variable Function
@@ -280,5 +281,7 @@ spv.memoryScopeSemantics.comp
162: 15(int) AtomicIAdd 160 12 42 16
166: 40(ptr) ImageTexelPointer 165(imageMS) 39 12
AtomicStore 166 12 33 14
168: 40(ptr) ImageTexelPointer 36(imagei) 39 17
AtomicStore 168 12 33 167
Return
FunctionEnd