From 663d6a0fe31c6e973df3a2827cfb88fe69d88d8a Mon Sep 17 00:00:00 2001 From: Alan Hourihane Date: Fri, 19 Dec 2008 14:59:43 +0000 Subject: gallium: set ST_NEW_FRAMEBUFFER when setting new surfaces --- src/mesa/state_tracker/st_framebuffer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/mesa/state_tracker') diff --git a/src/mesa/state_tracker/st_framebuffer.c b/src/mesa/state_tracker/st_framebuffer.c index aaa7d42ae06..43ac195e67c 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; -- cgit v1.2.3