Don't perform very early depth test when overridden by shader.

When the pixel shader writes the depth value, we can't use the
interpolated implicit depth to perform a depth buffer test before the
pixel shader executes.

Change-Id: Icf80de50f4aa79f73b43e341c18478e7fd928b8d
Reviewed-on: https://swiftshader-review.googlesource.com/15608
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Renderer/PixelProcessor.hpp b/src/Renderer/PixelProcessor.hpp
index bb0ae7e..f248cd5 100644
--- a/src/Renderer/PixelProcessor.hpp
+++ b/src/Renderer/PixelProcessor.hpp
@@ -34,8 +34,8 @@
 
 			int shaderID;
 
-			bool depthOverride                        : 1;
-			bool shaderContainsKill                   : 1;
+			bool depthOverride                        : 1;   // FIXME: Eliminate by querying shader.
+			bool shaderContainsKill                   : 1;   // FIXME: Eliminate by querying shader.
 
 			DepthCompareMode depthCompareMode         : BITS(DEPTH_LAST);
 			AlphaCompareMode alphaCompareMode         : BITS(ALPHA_LAST);
diff --git a/src/Renderer/QuadRasterizer.cpp b/src/Renderer/QuadRasterizer.cpp
index e54ba73..6b319b4 100644
--- a/src/Renderer/QuadRasterizer.cpp
+++ b/src/Renderer/QuadRasterizer.cpp
@@ -159,7 +159,7 @@
 				}
 			}
 
-			if(veryEarlyDepthTest && state.multiSample == 1)
+			if(veryEarlyDepthTest && state.multiSample == 1 && !state.depthOverride)
 			{
 				if(!state.stencilActive && state.depthTestActive && (state.depthCompareMode == DEPTH_LESSEQUAL || state.depthCompareMode == DEPTH_LESS))   // FIXME: Both modes ok?
 				{