Fix interpolating z when using FragCoord builtin

Z was only being interpolated when the Position builtin is used (which
isn't valid for fragment shaders) and/or when there's a depth buffer
present. Instead interpolate it when FragCoord is being used.

Bug: b/133325267
Tests: dEQP-VK.draw.inverted_depth_ranges.*
Change-Id: I0567084b6f7bb054bd864545fa34acc52c8ac3d6
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31848
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
diff --git a/src/Device/QuadRasterizer.cpp b/src/Device/QuadRasterizer.cpp
index b56a393..9e0d5da 100644
--- a/src/Device/QuadRasterizer.cpp
+++ b/src/Device/QuadRasterizer.cpp
@@ -256,7 +256,7 @@
 
 	bool QuadRasterizer::interpolateZ() const
 	{
-		return state.depthTestActive || (spirvShader && spirvShader->hasBuiltinInput(spv::BuiltInPosition));
+		return state.depthTestActive || (spirvShader && spirvShader->hasBuiltinInput(spv::BuiltInFragCoord));
 	}
 
 	bool QuadRasterizer::interpolateW() const
diff --git a/src/Device/SetupProcessor.cpp b/src/Device/SetupProcessor.cpp
index f0c370e..c285905f 100644
--- a/src/Device/SetupProcessor.cpp
+++ b/src/Device/SetupProcessor.cpp
@@ -73,7 +73,7 @@
 	{
 		State state;
 
-		bool vPosZW = (context->pixelShader && context->pixelShader->hasBuiltinInput(spv::BuiltInPosition));
+		bool vPosZW = (context->pixelShader && context->pixelShader->hasBuiltinInput(spv::BuiltInFragCoord));
 
 		state.isDrawPoint = context->isDrawPoint();
 		state.isDrawLine = context->isDrawLine();
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index e21d85d..b07f68a 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -1990,7 +1990,7 @@
 {
 	TRACE("(VkDevice device = %p, uint32_t bindInfoCount = %d, const VkBindImageMemoryInfo* pBindInfos = %p)",
 	      device, bindInfoCount, pBindInfos);
-	
+
 	for(uint32_t i = 0; i < bindInfoCount; i++)
 	{
 		if(pBindInfos[i].pNext)