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)