From f01c67263bcb2291ee38564985795aab53fd533d Mon Sep 17 00:00:00 2001 From: Thomas Hellstrom Date: Thu, 7 Jul 2011 14:36:52 +0200 Subject: [PATCH] mesa/st: Fix piglit read-front with new drawable invalidation When the state tracker adds a front buffer, nothing triggers a validate drawable call, since the state tracker manager is never notified. Force a validate drawable call by invalidating the framebuffer's stamp, so that the window system's renderbuffer (if any) is picked up. This fixes bug 38988 https://bugs.freedesktop.org/show_bug.cgi?id=38988 Signed-off-by: Thomas Hellstrom --- src/mesa/state_tracker/st_manager.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-) diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index a8c4b5c..d04db8b 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -196,7 +196,7 @@ st_framebuffer_validate(struct st_framebuffer *stfb, stfb->iface_stamp = new_stamp; new_stamp = p_atomic_read(&stfb->iface->stamp); - } while(stfb->iface_stamp != new_stamp); + } while(0); width = stfb->Base.Width; height = stfb->Base.Height; @@ -918,6 +918,15 @@ st_manager_add_color_renderbuffer(struct st_context *st, return FALSE; st_framebuffer_update_attachments(stfb); + + /* + * Force a call to the state tracker manager to validate the + * new renderbuffer. It might be that there is a window system + * renderbuffer available. + */ + if(stfb->iface) + stfb->iface_stamp = p_atomic_read(&stfb->iface_stamp) - 1; + st_invalidate_state(st->ctx, _NEW_BUFFERS); return TRUE; -- 1.6.2.5