Fixed GL_MAX_VERTEX_UNIFORM_VECTORS and GL_MAX_FRAGMENT_UNIFORM_VECTORS to report accurate maximum value.
Change-Id: Ic581e1ef0c6be2bf1ff0092b373b3c480b6fbd8a
Reviewed-on: https://chromium-review.googlesource.com/294755
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Cooper Partin <coopp@microsoft.com>
Tryjob-Request: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index 38b4f5f..0d32a50 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1451,6 +1451,13 @@
const std::vector<sh::Uniform> &vertexUniforms = vertexShader->getUniforms();
const ShaderD3D *vertexShaderD3D = GetImplAs<ShaderD3D>(vertexShader);
+ if (vertexUniforms.size() > caps.maxVertexUniformVectors)
+ {
+ infoLog << "Vertex shader active uniforms exceed GL_MAX_VERTEX_UNIFORM_VECTORS ("
+ << caps.maxVertexUniformVectors << ").";
+ return false;
+ }
+
for (const sh::Uniform &uniform : vertexUniforms)
{
if (uniform.staticUse)
@@ -1465,6 +1472,13 @@
const std::vector<sh::Uniform> &fragmentUniforms = fragmentShader->getUniforms();
const ShaderD3D *fragmentShaderD3D = GetImplAs<ShaderD3D>(fragmentShader);
+ if (fragmentUniforms.size() > caps.maxFragmentUniformVectors)
+ {
+ infoLog << "Vertex shader active uniforms exceed GL_MAX_FRAGMENT_UNIFORM_VECTORS ("
+ << caps.maxFragmentUniformVectors << ").";
+ return false;
+ }
+
for (const sh::Uniform &uniform : fragmentUniforms)
{
if (uniform.staticUse)