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);
+}
+
}