Implement the API-side logic GetUniformBlockIndex. Functionality depends on shader support.
TRAC #22858
Signed-off-by: Geoff Lang
Signed-off-by: Nicolas Capens
Author: Jamie Madill
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2307 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index e1cf66b..451b73b 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -9684,11 +9684,31 @@
{
if (context->getClientVersion() < 3)
{
- return gl::error(GL_INVALID_OPERATION, 0);
+ return gl::error(GL_INVALID_OPERATION, GL_INVALID_INDEX);
}
- }
- UNIMPLEMENTED();
+ gl::Program *programObject = context->getProgram(program);
+
+ if (!programObject)
+ {
+ if (context->getShader(program))
+ {
+ return gl::error(GL_INVALID_OPERATION, GL_INVALID_INDEX);
+ }
+ else
+ {
+ return gl::error(GL_INVALID_VALUE, GL_INVALID_INDEX);
+ }
+ }
+
+ gl::ProgramBinary *programBinary = programObject->getProgramBinary();
+ if (!programBinary)
+ {
+ return GL_INVALID_INDEX;
+ }
+
+ return programBinary->getUniformBlockIndex(uniformBlockName);
+ }
}
catch(std::bad_alloc&)
{