[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