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)