Add support for the transpose parameter of the glUniformMatrix family of functions in ES3.
TRAC #22839
Signed-off-by: Geoff Lang
Signed-off-by: Shanon Woods
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2139 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index bd2501a..4a912a1 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -6481,7 +6481,7 @@
try
{
- if (count < 0 || transpose != GL_FALSE)
+ if (count < 0)
{
return gl::error(GL_INVALID_VALUE);
}
@@ -6495,13 +6495,18 @@
if (context)
{
+ if (transpose != GL_FALSE && context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix2fv(location, count, value))
+ if (!programBinary->setUniformMatrix2fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -6520,7 +6525,7 @@
try
{
- if (count < 0 || transpose != GL_FALSE)
+ if (count < 0)
{
return gl::error(GL_INVALID_VALUE);
}
@@ -6534,13 +6539,18 @@
if (context)
{
+ if (transpose != GL_FALSE && context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix3fv(location, count, value))
+ if (!programBinary->setUniformMatrix3fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -6559,7 +6569,7 @@
try
{
- if (count < 0 || transpose != GL_FALSE)
+ if (count < 0)
{
return gl::error(GL_INVALID_VALUE);
}
@@ -6573,13 +6583,18 @@
if (context)
{
+ if (transpose != GL_FALSE && context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_VALUE);
+ }
+
gl::ProgramBinary *programBinary = context->getCurrentProgramBinary();
if (!programBinary)
{
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix4fv(location, count, value))
+ if (!programBinary->setUniformMatrix4fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7436,7 +7451,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix2x3fv(location, count, value))
+ if (!programBinary->setUniformMatrix2x3fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7480,7 +7495,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix3x2fv(location, count, value))
+ if (!programBinary->setUniformMatrix3x2fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7524,7 +7539,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix2x4fv(location, count, value))
+ if (!programBinary->setUniformMatrix2x4fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7568,7 +7583,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix4x2fv(location, count, value))
+ if (!programBinary->setUniformMatrix4x2fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7612,7 +7627,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix3x4fv(location, count, value))
+ if (!programBinary->setUniformMatrix3x4fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}
@@ -7656,7 +7671,7 @@
return gl::error(GL_INVALID_OPERATION);
}
- if (!programBinary->setUniformMatrix4x3fv(location, count, value))
+ if (!programBinary->setUniformMatrix4x3fv(location, count, transpose, value))
{
return gl::error(GL_INVALID_OPERATION);
}