diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 0bc8f926..27a9bc2f 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1889,15 +1889,19 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO 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 78bff2d9..1c9967d2 100644 --- a/Test/baseResults/spv.image.frag.out +++ b/Test/baseResults/spv.image.frag.out @@ -333,7 +333,7 @@ Linked fragment stage: 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 @@ Linked fragment stage: 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