diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2008-12-10 18:00:59 -0700 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2008-12-10 18:06:38 -0700 |
commit | 8137da952b6f30329adf7d49d2d9e58625534dd4 (patch) | |
tree | 2a2ec6323406f23566964c287218ad36f227d560 /src | |
parent | 99b862cd77fb088d0b2e62c6c15ecef82ec4fb80 (diff) |
gallium: only mark back color buffer surfaces as undefined after swapbuffers
Marking all surfaces as undefined was wrong and cause some glean failures
because glReadPixels was used after SwapBuffers.
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_framebuffer.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/mesa/state_tracker/st_framebuffer.c b/src/mesa/state_tracker/st_framebuffer.c index 6ee1777fb7..7d270a3272 100644 --- a/src/mesa/state_tracker/st_framebuffer.c +++ b/src/mesa/state_tracker/st_framebuffer.c @@ -284,15 +284,17 @@ st_notify_swapbuffers_complete(struct st_framebuffer *stfb) if (ctx && ctx->DrawBuffer == &stfb->Base) { struct st_renderbuffer *strb; - int i; - - for (i = 0; i < BUFFER_COUNT; i++) { - if (stfb->Base.Attachment[i].Renderbuffer) { - strb = st_renderbuffer(stfb->Base.Attachment[i].Renderbuffer); - if (strb->surface) - strb->surface->status = PIPE_SURFACE_STATUS_UNDEFINED; - } - } + + /* Mark back color buffers as undefined */ + strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_BACK_LEFT]. + Renderbuffer); + if (strb && strb->surface) + strb->surface->status = PIPE_SURFACE_STATUS_UNDEFINED; + + strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_BACK_RIGHT]. + Renderbuffer); + if (strb && strb->surface) + strb->surface->status = PIPE_SURFACE_STATUS_UNDEFINED; } } |