SPV: Fix an issue related with imageStore() for 2DMS.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index e1babc1..284bfee 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1889,15 +1889,19 @@
auto opIt = arguments.begin();
operands.push_back(*(opIt++));
operands.push_back(*(opIt++));
- if (node->getOp() == glslang::EOpImageStore)
- operands.push_back(*(opIt++));
if (node->getOp() == glslang::EOpImageLoad) {
if (sampler.ms) {
operands.push_back(spv::ImageOperandsSampleMask);
- operands.push_back(*(opIt++));
+ operands.push_back(*opIt);
}
return builder.createOp(spv::OpImageRead, convertGlslangToSpvType(node->getType()), operands);
} else if (node->getOp() == glslang::EOpImageStore) {
+ if (sampler.ms) {
+ operands.push_back(*(opIt + 1));
+ operands.push_back(spv::ImageOperandsSampleMask);
+ operands.push_back(*opIt);
+ } else
+ operands.push_back(*opIt);
builder.createNoResultOp(spv::OpImageWrite, operands);
return spv::NoResult;
} else {
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 78bff2d..1c9967d 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -333,7 +333,7 @@
214: 96 Load 98(i2DMS)
215: 29(ivec2) Load 142(ic2D)
217: 125(fvec4) Load 127(v)
- ImageWrite 214 215 216
+ ImageWrite 214 215 217 Sample 216
218: 106 Load 108(i2DMSArray)
219: 7(ivec3) Load 152(ic3D)
221: 125(fvec4) ImageRead 218 219 Sample 220
@@ -343,7 +343,7 @@
224: 106 Load 108(i2DMSArray)
225: 7(ivec3) Load 152(ic3D)
227: 125(fvec4) Load 127(v)
- ImageWrite 224 225 226
+ ImageWrite 224 225 227 Sample 226
Store 229(ui) 19
233: 6(int) Load 132(ic1D)
236: 235(ptr) ImageTexelPointer 232(ii1D) 233 0