Added binding points for the copy read and copy write 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@2130 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index dd03bab..6524898 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -163,6 +163,9 @@
         bindIndexedTransformFeedbackBuffer(0, i, 0, -1);
     }
 
+    bindCopyReadBuffer(0);
+    bindCopyWriteBuffer(0);
+
     mState.currentProgram = 0;
     mCurrentProgramBinary.set(NULL);
 
@@ -264,6 +267,9 @@
         mState.transformFeedbackBuffers[i].set(NULL);
     }
 
+    mState.copyReadBuffer.set(NULL);
+    mState.copyWriteBuffer.set(NULL);
+
     mResourceManager->release();
 }
 
@@ -968,6 +974,20 @@
     mState.transformFeedbackBuffers[index].set(getBuffer(buffer), offset, size);
 }
 
+void Context::bindCopyReadBuffer(GLuint buffer)
+{
+    mResourceManager->checkBufferAllocation(buffer);
+
+    mState.copyReadBuffer.set(getBuffer(buffer));
+}
+
+void Context::bindCopyWriteBuffer(GLuint buffer)
+{
+    mResourceManager->checkBufferAllocation(buffer);
+
+    mState.copyWriteBuffer.set(getBuffer(buffer));
+}
+
 void Context::useProgram(GLuint program)
 {
     GLuint priorProgram = mState.currentProgram;
@@ -1231,6 +1251,16 @@
     return mState.genericTransformFeedbackBuffer.get();
 }
 
+Buffer *Context::getCopyReadBuffer()
+{
+    return mState.copyReadBuffer.get();
+}
+
+Buffer *Context::getCopyWriteBuffer()
+{
+    return mState.copyWriteBuffer.get();
+}
+
 Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type)
 {
     GLuint texid = mState.samplerTexture[type][sampler].id();
@@ -1591,6 +1621,12 @@
       case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
         *params = mState.genericTransformFeedbackBuffer.id();
         break;
+      case GL_COPY_READ_BUFFER_BINDING:
+        *params = mState.copyReadBuffer.id();
+        break;
+      case GL_COPY_WRITE_BUFFER_BINDING:
+        *params = mState.copyWriteBuffer.id();
+        break;
       default:
         return false;
     }
@@ -1793,6 +1829,8 @@
     {
       case GL_UNIFORM_BUFFER_BINDING:
       case GL_TRANSFORM_FEEDBACK_BINDING:
+      case GL_COPY_READ_BUFFER_BINDING:
+      case GL_COPY_WRITE_BUFFER_BINDING:
         {
             *type = GL_INT;
             *numParams = 1;