r300: hw clear buffer 0 hopefully
authorDave Airlie <airlied@linux.ie>
Sat, 21 Mar 2009 05:05:34 +0000 (15:05 +1000)
committerDave Airlie <airlied@linux.ie>
Sat, 21 Mar 2009 05:05:34 +0000 (15:05 +1000)
src/mesa/drivers/dri/r300/r300_ioctl.c

index d1cf57959fad2db52dcc510082b4a3f5b860dd07..d4acbd7e997e1cd9cb2683ee2569917c3221790b 100644 (file)
@@ -583,6 +583,11 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask)
                mask &= ~BUFFER_BIT_STENCIL;
        }
 
+       if (mask & BUFFER_BIT_COLOR0) {
+               flags |= BUFFER_BIT_COLOR0;
+               mask &= ~BUFFER_BIT_COLOR0;
+       }
+
        if (mask) {
                if (RADEON_DEBUG & DEBUG_FALLBACKS)
                        fprintf(stderr, "%s: swrast clear, mask: %x\n",
@@ -596,6 +601,12 @@ static void r300Clear(GLcontext * ctx, GLbitfield mask)
                r300EmitClearState(ctx);
        rrbd = (void *)rfb->base.Attachment[BUFFER_DEPTH].Renderbuffer;
 
+       if (flags & BUFFER_BIT_COLOR0) {
+               rrb = (void *)rfb->base.Attachment[BUFFER_COLOR0].Renderbuffer;
+               r300ClearBuffer(r300, CLEARBUFFER_COLOR, rrb, NULL);
+               bits = 0;
+       }
+               
        if (flags & BUFFER_BIT_FRONT_LEFT) {
                rrb = (void *)rfb->base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer;
                r300ClearBuffer(r300, bits | CLEARBUFFER_COLOR, rrb, rrbd);