Refactor Uniform validation to validationES.cpp.

This patch also incidentally fixes some bugged validation in the
new ES3 unsigned int uniform API entry points.

BUG=angle:571

Change-Id: I89bd909467bd9418fe5ce3f246561765cf27a5e9
Reviewed-on: https://chromium-review.googlesource.com/200074
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/validationES.cpp b/src/libGLESv2/validationES.cpp
index 3b649d4..33ed71e 100644
--- a/src/libGLESv2/validationES.cpp
+++ b/src/libGLESv2/validationES.cpp
@@ -946,27 +946,13 @@
     return true;
 }
 
-bool ValidateUniformMatrix(gl::Context *context, GLenum matrixType, GLint location, GLsizei count,
-                           GLboolean transpose)
+static bool ValidateUniformCommonBase(gl::Context *context, GLint location, GLsizei count)
 {
     if (count < 0)
     {
         return gl::error(GL_INVALID_VALUE, false);
     }
 
-    // Check for ES3 uniform entry points
-    int rows = VariableRowCount(matrixType);
-    int cols = VariableColumnCount(matrixType);
-    if (rows != cols && context->getClientVersion() < 3)
-    {
-        return gl::error(GL_INVALID_OPERATION, false);
-    }
-
-    if (transpose != GL_FALSE && context->getClientVersion() < 3)
-    {
-        return gl::error(GL_INVALID_VALUE, false);
-    }
-
     gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
     if (!programBinary)
     {
@@ -982,4 +968,34 @@
     return true;
 }
 
+bool ValidateUniform(gl::Context *context, GLenum uniformType, GLint location, GLsizei count)
+{
+    // Check for ES3 uniform entry points
+    if (UniformComponentType(uniformType) == GL_UNSIGNED_INT && context->getClientVersion() < 3)
+    {
+        return gl::error(GL_INVALID_OPERATION, false);
+    }
+
+    return ValidateUniformCommonBase(context, location, count);
+}
+
+bool ValidateUniformMatrix(gl::Context *context, GLenum matrixType, GLint location, GLsizei count,
+                           GLboolean transpose)
+{
+    // Check for ES3 uniform entry points
+    int rows = VariableRowCount(matrixType);
+    int cols = VariableColumnCount(matrixType);
+    if (rows != cols && context->getClientVersion() < 3)
+    {
+        return gl::error(GL_INVALID_OPERATION, false);
+    }
+
+    if (transpose != GL_FALSE && context->getClientVersion() < 3)
+    {
+        return gl::error(GL_INVALID_VALUE, false);
+    }
+
+    return ValidateUniformCommonBase(context, location, count);
+}
+
 }