Mesa (gallium-0.1): gallium: only mark back color buffer surfaces as undefined after swapbuffers

Brian Paul brianp at kemper.freedesktop.org
Thu Dec 11 01:11:05 UTC 2008


Module: Mesa
Branch: gallium-0.1
Commit: 8137da952b6f30329adf7d49d2d9e58625534dd4
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8137da952b6f30329adf7d49d2d9e58625534dd4

Author: Brian Paul <brian.paul at tungstengraphics.com>
Date:   Wed Dec 10 18:00:59 2008 -0700

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.

---

 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 6ee1777..7d270a3 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;
    }
 }
 




More information about the mesa-commit mailing list