Added pixel pack and unpack buffer bindings.

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@2131 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 6524898..58cb5d9 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -165,6 +165,8 @@
 
     bindCopyReadBuffer(0);
     bindCopyWriteBuffer(0);
+    bindPixelPackBuffer(0);
+    bindPixelUnpackBuffer(0);
 
     mState.currentProgram = 0;
     mCurrentProgramBinary.set(NULL);
@@ -270,6 +272,9 @@
     mState.copyReadBuffer.set(NULL);
     mState.copyWriteBuffer.set(NULL);
 
+    mState.pixelPackBuffer.set(NULL);
+    mState.pixelUnpackBuffer.set(NULL);
+
     mResourceManager->release();
 }
 
@@ -988,6 +993,20 @@
     mState.copyWriteBuffer.set(getBuffer(buffer));
 }
 
+void Context::bindPixelPackBuffer(GLuint buffer)
+{
+    mResourceManager->checkBufferAllocation(buffer);
+
+    mState.pixelPackBuffer.set(getBuffer(buffer));
+}
+
+void Context::bindPixelUnpackBuffer(GLuint buffer)
+{
+    mResourceManager->checkBufferAllocation(buffer);
+
+    mState.pixelUnpackBuffer.set(getBuffer(buffer));
+}
+
 void Context::useProgram(GLuint program)
 {
     GLuint priorProgram = mState.currentProgram;
@@ -1261,6 +1280,16 @@
     return mState.copyWriteBuffer.get();
 }
 
+Buffer *Context::getPixelPackBuffer()
+{
+    return mState.pixelPackBuffer.get();
+}
+
+Buffer *Context::getPixelUnpackBuffer()
+{
+    return mState.pixelUnpackBuffer.get();
+}
+
 Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type)
 {
     GLuint texid = mState.samplerTexture[type][sampler].id();
@@ -1627,6 +1656,12 @@
       case GL_COPY_WRITE_BUFFER_BINDING:
         *params = mState.copyWriteBuffer.id();
         break;
+      case GL_PIXEL_PACK_BUFFER_BINDING:
+        *params = mState.pixelPackBuffer.id();
+        break;
+      case GL_PIXEL_UNPACK_BUFFER_BINDING:
+        *params = mState.pixelUnpackBuffer.id();
+        break;
       default:
         return false;
     }
@@ -1831,6 +1866,8 @@
       case GL_TRANSFORM_FEEDBACK_BINDING:
       case GL_COPY_READ_BUFFER_BINDING:
       case GL_COPY_WRITE_BUFFER_BINDING:
+      case GL_PIXEL_PACK_BUFFER_BINDING:
+      case GL_PIXEL_UNPACK_BUFFER_BINDING:
         {
             *type = GL_INT;
             *numParams = 1;