Add support for querying gl_DepthRange as an active uniform via GetActiveUniform.
TRAC #22865
Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@2221 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index 9bda365..8e501db 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -844,6 +844,11 @@
out << "#define GL_USES_POINT_SIZE\n";
}
+ if (mUsesDepthRange)
+ {
+ out << "#define GL_USES_DEPTH_RANGE\n";
+ }
+
if (mUsesXor)
{
out << "bool xor(bool p, bool q)\n"
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 03c76f0..27722f1 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1960,6 +1960,14 @@
success = false;
}
+ // special case for gl_DepthRange, the only built-in uniform (also a struct)
+ if (vertexShader->mUsesDepthRange || fragmentShader->mUsesDepthRange)
+ {
+ mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.near", 0));
+ mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.far", 0));
+ mUniforms.push_back(new Uniform(GL_FLOAT, GL_HIGH_FLOAT, "gl_DepthRange.diff", 0));
+ }
+
return success;
}
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index abddab4..437982d 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -304,6 +304,7 @@
mUsesFrontFacing = strstr(mHlsl, "GL_USES_FRONT_FACING") != NULL;
mUsesPointSize = strstr(mHlsl, "GL_USES_POINT_SIZE") != NULL;
mUsesPointCoord = strstr(mHlsl, "GL_USES_POINT_COORD") != NULL;
+ mUsesDepthRange = strstr(mHlsl, "GL_USES_DEPTH_RANGE") != NULL;
}
}
@@ -335,6 +336,7 @@
mUsesFrontFacing = false;
mUsesPointSize = false;
mUsesPointCoord = false;
+ mUsesDepthRange = false;
mActiveUniforms.clear();
}
diff --git a/src/libGLESv2/Shader.h b/src/libGLESv2/Shader.h
index f471968..d622ba7 100644
--- a/src/libGLESv2/Shader.h
+++ b/src/libGLESv2/Shader.h
@@ -105,6 +105,7 @@
bool mUsesFrontFacing;
bool mUsesPointSize;
bool mUsesPointCoord;
+ bool mUsesDepthRange;
static void *mFragmentCompiler;
static void *mVertexCompiler;