[Mesa-dev] [PATCH] meta: Fix GL_RENDERBUFFER binding in decompress_texture_image().
Brian Paul
brianp at vmware.com
Mon Jun 4 23:23:24 CEST 2012
On 06/04/2012 02:50 PM, Kenneth Graunke wrote:
> This isn't saved/restored by _mesa_meta_begin, so we need to do it
> manually (like we do for the read/draw framebuffers). Additionally,
> we neglected to re-bind before the glRenderbufferStorage call.
>
> +13 oglconforms.
>
> NOTE: This is a candidate for stable release branches.
>
> Signed-off-by: Kenneth Graunke<kenneth at whitecape.org>
> ---
> src/mesa/drivers/common/meta.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index a20e419..7978b08 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -3269,6 +3269,7 @@ decompress_texture_image(struct gl_context *ctx,
> };
> struct vertex verts[4];
> GLuint fboDrawSave, fboReadSave;
> + GLuint rbSave;
>
> if (slice> 0) {
> assert(target == GL_TEXTURE_3D ||
> @@ -3285,6 +3286,7 @@ decompress_texture_image(struct gl_context *ctx,
> /* save fbo bindings (not saved by _mesa_meta_begin()) */
> fboDrawSave = ctx->DrawBuffer->Name;
> fboReadSave = ctx->ReadBuffer->Name;
> + rbSave = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
>
> _mesa_meta_begin(ctx, MESA_META_ALL& ~MESA_META_PIXEL_STORE);
>
> @@ -3305,6 +3307,7 @@ decompress_texture_image(struct gl_context *ctx,
>
> /* alloc dest surface */
> if (width> decompress->Width || height> decompress->Height) {
> + _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, decompress->RBO);
> _mesa_RenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA,
> width, height);
> decompress->Width = width;
> @@ -3437,6 +3440,7 @@ decompress_texture_image(struct gl_context *ctx,
> _mesa_BindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, fboDrawSave);
> _mesa_BindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, fboReadSave);
> }
> + _mesa_BindRenderbufferEXT(GL_RENDERBUFFER_EXT, rbSave);
> }
>
>
Reviewed-by: Brian Paul <brianp at vmware.com>
More information about the mesa-dev
mailing list