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 ...@@ -165,6 +165,8 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere
bindCopyReadBuffer(0); bindCopyReadBuffer(0);
bindCopyWriteBuffer(0); bindCopyWriteBuffer(0);
bindPixelPackBuffer(0);
bindPixelUnpackBuffer(0);
mState.currentProgram = 0; mState.currentProgram = 0;
mCurrentProgramBinary.set(NULL); mCurrentProgramBinary.set(NULL);
...@@ -270,6 +272,9 @@ Context::~Context() ...@@ -270,6 +272,9 @@ Context::~Context()
mState.copyReadBuffer.set(NULL); mState.copyReadBuffer.set(NULL);
mState.copyWriteBuffer.set(NULL); mState.copyWriteBuffer.set(NULL);
mState.pixelPackBuffer.set(NULL);
mState.pixelUnpackBuffer.set(NULL);
mResourceManager->release(); mResourceManager->release();
} }
...@@ -988,6 +993,20 @@ void Context::bindCopyWriteBuffer(GLuint buffer) ...@@ -988,6 +993,20 @@ void Context::bindCopyWriteBuffer(GLuint buffer)
mState.copyWriteBuffer.set(getBuffer(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) void Context::useProgram(GLuint program)
{ {
GLuint priorProgram = mState.currentProgram; GLuint priorProgram = mState.currentProgram;
...@@ -1261,6 +1280,16 @@ Buffer *Context::getCopyWriteBuffer() ...@@ -1261,6 +1280,16 @@ Buffer *Context::getCopyWriteBuffer()
return mState.copyWriteBuffer.get(); 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) Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type)
{ {
GLuint texid = mState.samplerTexture[type][sampler].id(); GLuint texid = mState.samplerTexture[type][sampler].id();
...@@ -1627,6 +1656,12 @@ bool Context::getIntegerv(GLenum pname, GLint *params) ...@@ -1627,6 +1656,12 @@ bool Context::getIntegerv(GLenum pname, GLint *params)
case GL_COPY_WRITE_BUFFER_BINDING: case GL_COPY_WRITE_BUFFER_BINDING:
*params = mState.copyWriteBuffer.id(); *params = mState.copyWriteBuffer.id();
break; break;
case GL_PIXEL_PACK_BUFFER_BINDING:
*params = mState.pixelPackBuffer.id();
break;
case GL_PIXEL_UNPACK_BUFFER_BINDING:
*params = mState.pixelUnpackBuffer.id();
break;
default: default:
return false; return false;
} }
...@@ -1831,6 +1866,8 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu ...@@ -1831,6 +1866,8 @@ bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *nu
case GL_TRANSFORM_FEEDBACK_BINDING: case GL_TRANSFORM_FEEDBACK_BINDING:
case GL_COPY_READ_BUFFER_BINDING: case GL_COPY_READ_BUFFER_BINDING:
case GL_COPY_WRITE_BUFFER_BINDING: case GL_COPY_WRITE_BUFFER_BINDING:
case GL_PIXEL_PACK_BUFFER_BINDING:
case GL_PIXEL_UNPACK_BUFFER_BINDING:
{ {
*type = GL_INT; *type = GL_INT;
*numParams = 1; *numParams = 1;
......
...@@ -192,6 +192,9 @@ struct State ...@@ -192,6 +192,9 @@ struct State
BindingPointer<Buffer> copyReadBuffer; BindingPointer<Buffer> copyReadBuffer;
BindingPointer<Buffer> copyWriteBuffer; BindingPointer<Buffer> copyWriteBuffer;
BindingPointer<Buffer> pixelPackBuffer;
BindingPointer<Buffer> pixelUnpackBuffer;
GLint unpackAlignment; GLint unpackAlignment;
GLint packAlignment; GLint packAlignment;
bool packReverseRowOrder; bool packReverseRowOrder;
...@@ -342,6 +345,8 @@ class Context ...@@ -342,6 +345,8 @@ class Context
void bindIndexedTransformFeedbackBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size); void bindIndexedTransformFeedbackBuffer(GLuint buffer, GLuint index, GLintptr offset, GLsizeiptr size);
void bindCopyReadBuffer(GLuint buffer); void bindCopyReadBuffer(GLuint buffer);
void bindCopyWriteBuffer(GLuint buffer); void bindCopyWriteBuffer(GLuint buffer);
void bindPixelPackBuffer(GLuint buffer);
void bindPixelUnpackBuffer(GLuint buffer);
void useProgram(GLuint program); void useProgram(GLuint program);
void linkProgram(GLuint program); void linkProgram(GLuint program);
void setProgramBinary(GLuint program, const void *binary, GLint length); void setProgramBinary(GLuint program, const void *binary, GLint length);
...@@ -376,6 +381,8 @@ class Context ...@@ -376,6 +381,8 @@ class Context
Buffer *getGenericTransformFeedbackBuffer(); Buffer *getGenericTransformFeedbackBuffer();
Buffer *getCopyReadBuffer(); Buffer *getCopyReadBuffer();
Buffer *getCopyWriteBuffer(); Buffer *getCopyWriteBuffer();
Buffer *getPixelPackBuffer();
Buffer *getPixelUnpackBuffer();
Texture *getSamplerTexture(unsigned int sampler, TextureType type); Texture *getSamplerTexture(unsigned int sampler, TextureType type);
Framebuffer *getReadFramebuffer(); Framebuffer *getReadFramebuffer();
Framebuffer *getDrawFramebuffer(); Framebuffer *getDrawFramebuffer();
......
...@@ -422,6 +422,8 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer) ...@@ -422,6 +422,8 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer)
{ {
case GL_COPY_READ_BUFFER: case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER: case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER: case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
...@@ -444,6 +446,12 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer) ...@@ -444,6 +446,12 @@ void __stdcall glBindBuffer(GLenum target, GLuint buffer)
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
context->bindCopyWriteBuffer(buffer); context->bindCopyWriteBuffer(buffer);
return; return;
case GL_PIXEL_PACK_BUFFER:
context->bindPixelPackBuffer(buffer);
return;
case GL_PIXEL_UNPACK_BUFFER:
context->bindPixelUnpackBuffer(buffer);
return;
case GL_UNIFORM_BUFFER: case GL_UNIFORM_BUFFER:
context->bindGenericUniformBuffer(buffer); context->bindGenericUniformBuffer(buffer);
return; return;
...@@ -802,6 +810,8 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, ...@@ -802,6 +810,8 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
{ {
case GL_COPY_READ_BUFFER: case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER: case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER: case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
...@@ -826,6 +836,12 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, ...@@ -826,6 +836,12 @@ void __stdcall glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data,
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
buffer = context->getCopyWriteBuffer(); buffer = context->getCopyWriteBuffer();
break; break;
case GL_PIXEL_PACK_BUFFER:
buffer = context->getPixelPackBuffer();
break;
case GL_PIXEL_UNPACK_BUFFER:
buffer = context->getPixelUnpackBuffer();
break;
case GL_TRANSFORM_FEEDBACK_BUFFER: case GL_TRANSFORM_FEEDBACK_BUFFER:
buffer = context->getGenericTransformFeedbackBuffer(); buffer = context->getGenericTransformFeedbackBuffer();
break; break;
...@@ -876,6 +892,8 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, ...@@ -876,6 +892,8 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
{ {
case GL_COPY_READ_BUFFER: case GL_COPY_READ_BUFFER:
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
case GL_PIXEL_PACK_BUFFER:
case GL_PIXEL_UNPACK_BUFFER:
case GL_UNIFORM_BUFFER: case GL_UNIFORM_BUFFER:
case GL_TRANSFORM_FEEDBACK_BUFFER: case GL_TRANSFORM_FEEDBACK_BUFFER:
if (context->getClientVersion() < 3) if (context->getClientVersion() < 3)
...@@ -900,6 +918,12 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, ...@@ -900,6 +918,12 @@ void __stdcall glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
case GL_COPY_WRITE_BUFFER: case GL_COPY_WRITE_BUFFER:
buffer = context->getCopyWriteBuffer(); buffer = context->getCopyWriteBuffer();
break; break;
case GL_PIXEL_PACK_BUFFER:
buffer = context->getPixelPackBuffer();
break;
case GL_PIXEL_UNPACK_BUFFER:
buffer = context->getPixelUnpackBuffer();
break;
case GL_TRANSFORM_FEEDBACK_BUFFER: case GL_TRANSFORM_FEEDBACK_BUFFER:
buffer = context->getGenericTransformFeedbackBuffer(); buffer = context->getGenericTransformFeedbackBuffer();
break; 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