Wire up alphaToCoverage support All the real work was already done; this just needed connecting. Bug: b/118386749 Test: dEQP-VK.pipeline.multisample.alpha_to_coverage.* Change-Id: Ib1e2b7a64a76d8d7df9ed5c93e4cc738efdd83b3 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29648 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/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp index 9aac2e6..7d59143 100644 --- a/src/Pipeline/PixelRoutine.cpp +++ b/src/Pipeline/PixelRoutine.cpp
@@ -62,7 +62,8 @@ Long pipeTime = Ticks(); #endif - const bool earlyDepthTest = !spirvShader->getModes().DepthReplacing && !state.alphaTestActive(); + // TODO: consider shader which modifies sample mask in general + const bool earlyDepthTest = !spirvShader->getModes().DepthReplacing && !state.alphaToCoverage; Int zMask[4]; // Depth mask Int sMask[4]; // Stencil mask @@ -194,7 +195,7 @@ alphaPass = alphaTest(cMask); - if((spirvShader && spirvShader->getModes().ContainsKill) || state.alphaTestActive()) + if((spirvShader && spirvShader->getModes().ContainsKill) || state.alphaToCoverage) { for(unsigned int q = 0; q < state.multiSample; q++) { @@ -2476,6 +2477,6 @@ bool PixelRoutine::colorUsed() { - return state.colorWriteMask || state.alphaTestActive() || (spirvShader && spirvShader->getModes().ContainsKill); + return state.colorWriteMask || state.alphaToCoverage || (spirvShader && spirvShader->getModes().ContainsKill); } }