rearrange things in xmesa_clear() a bit
authorBrian <brian@i915.localnet.net>
Wed, 1 Aug 2007 21:39:19 +0000 (15:39 -0600)
committerBrian <brian@i915.localnet.net>
Wed, 1 Aug 2007 21:39:19 +0000 (15:39 -0600)
src/mesa/drivers/x11/xm_dd.c

index 0aa47d55e46779293d64d0f802498a4f82d74a31..fec4f5d0388e7df907e626c4d62177034dedd679 100644 (file)
@@ -440,10 +440,15 @@ xmesa_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
             GLboolean stencil, GLboolean accum)
 {
    struct softpipe_context *sp = (struct softpipe_context *) pipe;
+
+   /* Clear non-color buffers first.  This will cause softpipe to
+    * re-validate the scissor/surface bounds.
+    */
+   softpipe_clear(pipe, GL_FALSE, depth, stencil, accum);
+
    if (color) {
       GET_CURRENT_CONTEXT(ctx);
       GLuint i;
-      softpipe_update_derived(sp);
       for (i = 0; i < sp->framebuffer.num_cbufs; i++) {
          struct pipe_surface *ps = sp->framebuffer.cbufs[i];
          struct xmesa_renderbuffer *xrb = (struct xmesa_renderbuffer *) ps->rb;
@@ -453,10 +458,8 @@ xmesa_clear(struct pipe_context *pipe, GLboolean color, GLboolean depth,
          const GLint h = sp->cliprect.maxy - y;
          xrb->clearFunc(ctx, xrb, x, y, w, h);
       }
-      color = GL_FALSE;
    }
 
-   softpipe_clear(pipe, color, depth, stencil, accum);
 }