TransformFeedback buffer binding
Added get/set functions for binding
a transform feedback buffer.
Change-Id: I409841a35644ff8d5f99c0a6b4c3a43568676822
Reviewed-on: https://swiftshader-review.googlesource.com/2930
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index e831525..f7164e6 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -461,7 +461,7 @@
case GL_TRANSFORM_FEEDBACK_BUFFER:
if(clientVersion >= 3)
{
- UNIMPLEMENTED();
+ context->bindTransformFeedbackBuffer(buffer);
return;
}
else return error(GL_INVALID_ENUM);
@@ -1777,6 +1777,12 @@
if(context)
{
+ es2::TransformFeedback* transformFeedback = context->getTransformFeedback();
+ if(transformFeedback && transformFeedback->isActive() && (mode != transformFeedback->primitiveMode()))
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
context->drawArrays(mode, first, count);
}
}
@@ -1809,6 +1815,12 @@
if(context)
{
+ es2::TransformFeedback* transformFeedback = context->getTransformFeedback();
+ if(transformFeedback && transformFeedback->isActive() && !transformFeedback->isPaused())
+ {
+ return error(GL_INVALID_OPERATION);
+ }
+
switch(type)
{
case GL_UNSIGNED_BYTE: