Fix OpImageSampleProjDref

Divide Dref by the projection coordinate.

The SPIR-V spec states that
"Dref /q is the depth-comparison reference value."

Bug b/129523279
Tests: dEQP-VK.glsl.texture_functions.textureproj.*
Change-Id: Ib1c4ad09f829b84b6b1065ff604fe88f8b1c1426
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31693
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp
index db17770..6db7463 100644
--- a/src/Pipeline/SpirvShader.cpp
+++ b/src/Pipeline/SpirvShader.cpp
@@ -4768,7 +4768,16 @@
 		if(instruction.isDref())
 		{
 			auto drefValue = GenericValue(this, state->routine, insn.word(5));
-			in[i] = drefValue.Float(0);
+
+			if(instruction.isProj())
+			{
+				in[i] = drefValue.Float(0) / coordinate.Float(coordinates);  // TODO(b/129523279): Optimize using reciprocal.
+			}
+			else
+			{
+				in[i] = drefValue.Float(0);
+			}
+
 			i++;
 		}