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<kenn...@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 <bri...@vmware.com>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to