Wire up FragCoord builtin

Bug: b/118386749
Test: dEQP-VK.renderpass.*
Test: dEQP-VK.glsl.*
Change-Id: If3d603f860a046c06c4bbc0390206f0720ff6c82
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29248
Tested-by: Chris Forbes <chrisforbes@google.com>
Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Pipeline/PixelProgram.cpp b/src/Pipeline/PixelProgram.cpp
index ac9c792..74d5b29 100644
--- a/src/Pipeline/PixelProgram.cpp
+++ b/src/Pipeline/PixelProgram.cpp
@@ -24,7 +24,15 @@
 
 	void PixelProgram::setBuiltins(Int &x, Int &y, Float4(&z)[4], Float4 &w)
 	{
-		// TODO: wire up builtins correctly
+		auto it = spirvShader->inputBuiltins.find(spv::BuiltInFragCoord);
+		if (it != spirvShader->inputBuiltins.end())
+		{
+			auto &var = routine.getVariable(it->second.Id);
+			var[it->second.FirstComponent] = SIMD::Float(Float(x)) + SIMD::Float(0.5f, 1.5f, 0.5f, 1.5f);
+			var[it->second.FirstComponent+1] = SIMD::Float(Float(y)) + SIMD::Float(0.5f, 0.5f, 1.5f, 1.5f);
+			var[it->second.FirstComponent+2] = z[0];	// sample 0
+			var[it->second.FirstComponent+3] = w;
+		}
 	}
 
 	void PixelProgram::applyShader(Int cMask[4])