Implement GL_RASTERIZER_DISCARD.

BUG=angle:498

Change-Id: Ib60c39e206003ae67c93769e35f7f9ef790ce9f4
Reviewed-on: https://chromium-review.googlesource.com/184396
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
index ecc1887..0c80c03 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.cpp
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
@@ -1403,7 +1403,7 @@
     }
 }
 
-void Renderer11::applyShaders(gl::ProgramBinary *programBinary)
+void Renderer11::applyShaders(gl::ProgramBinary *programBinary, bool rasterizerDiscard)
 {
     ShaderExecutable *vertexExe = programBinary->getVertexExecutable();
     ShaderExecutable *pixelExe = programBinary->getPixelExecutable();
@@ -1419,6 +1419,12 @@
         geometryShader = NULL;
     }
 
+    // Skip pixel shader if we're doing rasterizer discard.
+    if (rasterizerDiscard)
+    {
+        pixelShader = NULL;
+    }
+
     bool dirtyUniforms = false;
 
     if (vertexShader != mAppliedVertexShader)