added a pipe->flush() call in xmesa_clear()
authorBrian <brian.paul@tungstengraphics.com>
Tue, 23 Oct 2007 23:16:38 +0000 (17:16 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Wed, 24 Oct 2007 18:32:41 +0000 (12:32 -0600)
src/mesa/drivers/x11/xm_surface.c

index 42d5d6bbc4072bd78ffd6e71fc33d4204dfdd092..b2ef70ea90d4572052672eef9b0eb95b65ef19cc 100644 (file)
@@ -117,6 +117,12 @@ put_tile(struct pipe_surface *ps,
       xrb->St.Base.PutRow(ctx, &xrb->St.Base, w, x, y - i, tmp, NULL);
       p += w0 * 4;
    }
+#if 0 /* debug: flush */
+   {
+      XMesaContext xm = XMESA_CONTEXT(ctx);
+      XSync(xm->display, 0);
+   }
+#endif
 }
 
 
@@ -208,6 +214,11 @@ xmesa_clear(struct pipe_context *pipe, struct pipe_surface *ps, GLuint value)
 {
    struct xmesa_renderbuffer *xrb = xmesa_rb((struct softpipe_surface *) ps);
 
+   /* XXX actually, we should just discard any cached tiles from this
+    * surface since we don't want to accidentally re-use them after clearing.
+    */
+   pipe->flush(pipe, 0);
+
    if (xrb && xrb->ximage) {
       /* clearing back color buffer */
       GET_CURRENT_CONTEXT(ctx);