Rasterizer discard implementation Implemented rasterizer discard by not using the SetupRoutine and always returning 0 when rasterizer discard is enabled. Also guarded all clear calls with a check for rasterizer discard. Passes all rasterizer discard related dEQP tests. Change-Id: I1e5c107e3dba550f7a5b01eb302ff51bdac303dc Reviewed-on: https://swiftshader-review.googlesource.com/4876 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp index ca5e67a..cc95546 100644 --- a/src/Renderer/Renderer.cpp +++ b/src/Renderer/Renderer.cpp
@@ -821,7 +821,7 @@ startTick = time; #endif - int visible = setupPrimitives(this, unit, count); + int visible = draw->setupState.rasterizerDiscard ? 0 : setupPrimitives(this, unit, count); primitiveProgress[unit].visible = visible; primitiveProgress[unit].references = clusterCount; @@ -2315,6 +2315,11 @@ slopeDepthBias = slopeBias; } + void Renderer::setRasterizerDiscard(bool rasterizerDiscard) + { + context->rasterizerDiscard = rasterizerDiscard; + } + void Renderer::setPixelShader(const PixelShader *shader) { context->pixelShader = shader;