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/renderer/ShaderExecutable11.cpp b/src/libGLESv2/renderer/ShaderExecutable11.cpp
index d0903be..4a944fe 100644
--- a/src/libGLESv2/renderer/ShaderExecutable11.cpp
+++ b/src/libGLESv2/renderer/ShaderExecutable11.cpp
@@ -19,6 +19,7 @@
 {
     mPixelExecutable = executable;
     mVertexExecutable = NULL;
+    mGeometryExecutable = NULL;
 
     mConstantBuffer = NULL;
 }
@@ -28,6 +29,17 @@
 {
     mVertexExecutable = executable;
     mPixelExecutable = NULL;
+    mGeometryExecutable = NULL;
+
+    mConstantBuffer = NULL;
+}
+
+ShaderExecutable11::ShaderExecutable11(const void *function, size_t length, ID3D11GeometryShader *executable)
+    : ShaderExecutable(function, length)
+{
+    mGeometryExecutable = executable;
+    mVertexExecutable = NULL;
+    mPixelExecutable = NULL;
 
     mConstantBuffer = NULL;
 }
@@ -42,6 +54,10 @@
     {
         mPixelExecutable->Release();
     }
+    if (mGeometryExecutable)
+    {
+        mGeometryExecutable->Release();
+    }
     
     if (mConstantBuffer)
     {
@@ -65,6 +81,11 @@
     return mPixelExecutable;
 }
 
+ID3D11GeometryShader *ShaderExecutable11::getGeometryShader() const
+{
+    return mGeometryExecutable;
+}
+
 ID3D11Buffer *ShaderExecutable11::getConstantBuffer(ID3D11Device *device, unsigned int registerCount)
 {
     if (!mConstantBuffer && registerCount > 0)