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: