Implement gl_PointSize point sprite emulation using D3D11 geometry shaders.

TRAC #22412

Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1786 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index e45921d..441f2aa 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -1712,7 +1712,17 @@
 // Applies the fixed-function state (culling, depth test, alpha blending, stenciling, etc) to the Direct3D 9 device
 void Context::applyState(GLenum drawMode)
 {
-    mRenderer->setRasterizerState(mState.rasterizer);
+    // disable face culling for point sprite emulation (done as geometry shader quads)
+    if (getCurrentProgramBinary()->usesPointSpriteEmulation())
+    {
+        RasterizerState rasterizerStateCopy = mState.rasterizer;
+        rasterizerStateCopy.cullFace = false;
+        mRenderer->setRasterizerState(rasterizerStateCopy);
+    }
+    else
+    {
+        mRenderer->setRasterizerState(mState.rasterizer);
+    }
 
     unsigned int mask = 0;
     if (mState.sampleCoverage)