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])