Fix interaction between Dref and explicit lod

Test: dEQP-VK.glsl.texture_functions.*
Change-Id: I326ccb88b0f93168d2f005abbc083d93ae239c3f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31049
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index f59ce6b..a8e8a9f 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -4628,7 +4628,8 @@
 
 	SpirvShader::EmitResult SpirvShader::EmitImageSampleExplicitLod(Variant variant, InsnIterator insn, EmitState *state) const
 	{
-		uint32_t imageOperands = static_cast<spv::ImageOperandsMask>(insn.word(5));
+		auto isDref = (variant == Dref) || (variant == ProjDref);
+		uint32_t imageOperands = static_cast<spv::ImageOperandsMask>(insn.word(isDref ? 6 : 5));
 		imageOperands &= ~spv::ImageOperandsConstOffsetMask;  // Dealt with later.
 
 		if((imageOperands & spv::ImageOperandsLodMask) == imageOperands)