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
parent 5117188c
......@@ -165,6 +165,8 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere
bindCopyReadBuffer(0);
bindCopyWriteBuffer(0);
bindPixelPackBuffer(0);
bindPixelUnpackBuffer(0);
mState.currentProgram = 0;
mCurrentProgramBinary.set(NULL);
......@@ -270,6 +272,9 @@ Context::~Context()
mState.copyReadBuffer.set(NULL);
mState.copyWriteBuffer.set(NULL);
mState.pixelPackBuffer.set(NULL);
mState.pixelUnpackBuffer.set(NULL);
mResourceManager->release();
}
......@@ -988,6 +993,20 @@ void Context::bindCopyWriteBuffer(GLuint buffer)
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 @@ Buffer *Context::getCopyWriteBuffer()
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 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
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 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
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;
......
......@@ -192,6 +192,9 @@ struct State
BindingPointer<Buffer> copyReadBuffer;
BindingPointer<Buffer> copyWriteBuffer;
BindingPointer<Buffer> pixelPackBuffer;
BindingPointer<Buffer> pixelUnpackBuffer;
GLint unpackAlignment;
GLint packAlignment;
bool packReverseRowOrder;
......@@ -342,6 +345,8 @@ class Context
void bindIndexedTransformFeedbackBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size);
void bindCopyReadBuffer(GLuint buffer);
void bindCopyWriteBuffer(GLuint buffer);
void bindPixelPackBuffer(GLuint buffer);
void bindPixelUnpackBuffer(GLuint buffer);
void useProgram(GLuint program);
void linkProgram(GLuint program);
void setProgramBinary(GLuint program, const void *binary, GLint length);
......@@ -376,6 +381,8 @@ class Context
Buffer *getGenericTransformFeedbackBuffer();
Buffer *getCopyReadBuffer();
Buffer *getCopyWriteBuffer();
Buffer *getPixelPackBuffer();
Buffer *getPixelUnpackBuffer();
Texture *getSamplerTexture(unsigned int sampler, TextureType type);
Framebuffer *getReadFramebuffer();
Framebuffer *getDrawFramebuffer();
......
......@@ -422,6 +422,8 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer)
{
case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3)
......@@ -444,6 +446,12 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer)
case GL_COPY_WRITE_BUFFER:
context->bindCopyWriteBuffer(buffer);
return;
case GL_PIXEL_PACK_BUFFER:
context->bindPixelPackBuffer(buffer);
return;
case GL_PIXEL_UNPACK_BUFFER:
context->bindPixelUnpackBuffer(buffer);
return;
case GL_UNIFORM_BUFFER:
context->bindGenericUniformBuffer(buffer);
return;
......@@ -802,6 +810,8 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
{
case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3)
......@@ -826,6 +836,12 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
case GL_COPY_WRITE_BUFFER:
buffer = context->getCopyWriteBuffer();
break;
case GL_PIXEL_PACK_BUFFER:
buffer = context->getPixelPackBuffer();
break;
case GL_PIXEL_UNPACK_BUFFER:
buffer = context->getPixelUnpackBuffer();
break;
case GL_TRANSFORM_FEEDBACK_BUFFER:
buffer = context->getGenericTransformFeedbackBuffer();
break;
......@@ -876,6 +892,8 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
{
case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3)
......@@ -900,6 +918,12 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
case GL_COPY_WRITE_BUFFER:
buffer = context->getCopyWriteBuffer();
break;
case GL_PIXEL_PACK_BUFFER:
buffer = context->getPixelPackBuffer();
break;
case GL_PIXEL_UNPACK_BUFFER:
buffer = context->getPixelUnpackBuffer();
break;
case GL_TRANSFORM_FEEDBACK_BUFFER:
buffer = context->getGenericTransformFeedbackBuffer();
break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment