Mesa (gallium-0.2): gallium: set ST_NEW_FRAMEBUFFER when setting new surfaces

Alan Hourihane alanh at kemper.freedesktop.org
Fri Dec 19 15:01:18 UTC 2008


Module: Mesa
Branch: gallium-0.2
Commit: 663d6a0fe31c6e973df3a2827cfb88fe69d88d8a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=663d6a0fe31c6e973df3a2827cfb88fe69d88d8a

Author: Alan Hourihane <alanh at vmware.com>
Date:   Fri Dec 19 14:59:43 2008 +0000

gallium: set ST_NEW_FRAMEBUFFER when setting new surfaces

---

 src/mesa/state_tracker/st_framebuffer.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/mesa/state_tracker/st_framebuffer.c b/src/mesa/state_tracker/st_framebuffer.c
index aaa7d42..43ac195 100644
--- a/src/mesa/state_tracker/st_framebuffer.c
+++ b/src/mesa/state_tracker/st_framebuffer.c
@@ -169,6 +169,8 @@ void
 st_set_framebuffer_surface(struct st_framebuffer *stfb,
                            uint surfIndex, struct pipe_surface *surf)
 {
+   GET_CURRENT_CONTEXT(ctx);
+   struct st_context *st;
    static const GLuint invalid_size = 9999999;
    struct st_renderbuffer *strb;
    GLuint width, height, i;
@@ -184,6 +186,15 @@ st_set_framebuffer_surface(struct st_framebuffer *stfb,
    pipe_surface_reference( &strb->surface, surf );
    pipe_texture_reference( &strb->texture, surf->texture );
 
+   if (ctx) {
+      /* If ctx isn't set, we've likely not made current yet.
+       * But when we do, we need to start setting this dirty bit
+       * to ensure the renderbuffer attachements are up-to-date
+       * via update_framebuffer.
+       */
+      ctx->st->dirty.st |= ST_NEW_FRAMEBUFFER;
+   }
+
    /* update renderbuffer's width/height */
    strb->Base.Width = surf->width;
    strb->Base.Height = surf->height;




More information about the mesa-commit mailing list