Added methods to Context to get and set the current (non-indexed) bound uniform and transform feedback buffers.
TRAC #22811
Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Geoff Lang
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2129 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 8eb8e91..1baba69 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -417,6 +417,17 @@
if (context)
{
+ // Check ES3 specific targets
+ switch (target)
+ {
+ case GL_UNIFORM_BUFFER:
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ if (context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+ }
+
switch (target)
{
case GL_ARRAY_BUFFER:
@@ -425,6 +436,12 @@
case GL_ELEMENT_ARRAY_BUFFER:
context->bindElementArrayBuffer(buffer);
return;
+ case GL_UNIFORM_BUFFER:
+ context->bindGenericUniformBuffer(buffer);
+ return;
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ context->bindGenericUniformBuffer(buffer);
+ return;
default:
return gl::error(GL_INVALID_ENUM);
}
@@ -772,6 +789,17 @@
if (context)
{
+ // Check ES3 specific targets
+ switch (target)
+ {
+ case GL_UNIFORM_BUFFER:
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ if (context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+ }
+
gl::Buffer *buffer;
switch (target)
@@ -782,6 +810,12 @@
case GL_ELEMENT_ARRAY_BUFFER:
buffer = context->getElementArrayBuffer();
break;
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ buffer = context->getGenericTransformFeedbackBuffer();
+ break;
+ case GL_UNIFORM_BUFFER:
+ buffer = context->getGenericUniformBuffer();
+ break;
default:
return gl::error(GL_INVALID_ENUM);
}
@@ -821,6 +855,17 @@
if (context)
{
+ // Check ES3 specific targets
+ switch (target)
+ {
+ case GL_UNIFORM_BUFFER:
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ if (context->getClientVersion() < 3)
+ {
+ return gl::error(GL_INVALID_ENUM);
+ }
+ }
+
gl::Buffer *buffer;
switch (target)
@@ -831,6 +876,12 @@
case GL_ELEMENT_ARRAY_BUFFER:
buffer = context->getElementArrayBuffer();
break;
+ case GL_TRANSFORM_FEEDBACK_BUFFER:
+ buffer = context->getGenericTransformFeedbackBuffer();
+ break;
+ case GL_UNIFORM_BUFFER:
+ buffer = context->getGenericUniformBuffer();
+ break;
default:
return gl::error(GL_INVALID_ENUM);
}
@@ -7804,11 +7855,13 @@
switch (target)
{
case GL_TRANSFORM_FEEDBACK_BUFFER:
- context->bindTransformFeedbackBuffer(buffer, index, offset, size);
+ context->bindIndexedTransformFeedbackBuffer(buffer, index, offset, size);
+ context->bindGenericTransformFeedbackBuffer(buffer);
break;
case GL_UNIFORM_BUFFER:
- context->bindUniformBuffer(buffer, index, offset, size);
+ context->bindIndexedUniformBuffer(buffer, index, offset, size);
+ context->bindGenericUniformBuffer(buffer);
break;
default:
@@ -7868,11 +7921,13 @@
switch (target)
{
case GL_TRANSFORM_FEEDBACK_BUFFER:
- context->bindTransformFeedbackBuffer(buffer, index, 0, -1);
+ context->bindIndexedTransformFeedbackBuffer(buffer, index, 0, -1);
+ context->bindGenericTransformFeedbackBuffer(buffer);
break;
case GL_UNIFORM_BUFFER:
- context->bindUniformBuffer(buffer, index, 0, -1);
+ context->bindIndexedUniformBuffer(buffer, index, 0, -1);
+ context->bindGenericUniformBuffer(buffer);
break;
default: