r600g: fix targetmask to work correctly.
authorDave Airlie <airlied@redhat.com>
Fri, 6 Aug 2010 04:54:24 +0000 (14:54 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 6 Aug 2010 04:54:24 +0000 (14:54 +1000)
At least this seems to fix the glean maskedClear test.

src/gallium/drivers/r600/r600_state.c

index b8d50452e66710e945ea7ee733e90a6ed2ab9077..e43e4afe55e842fe37f2f4f6701bb4779b2d278c 100644 (file)
@@ -1179,12 +1179,11 @@ static int r600_cb_cntl(struct r600_context *rctx, struct radeon_state *rstate)
        } else
                color_control |= (0xcc << 16);
 
-       target_mask |= (pbs->rt[0].colormask);
        for (i = 0; i < 8; i++) {
                if (pbs->rt[i].blend_enable) {
                        color_control |= S_028808_TARGET_BLEND_ENABLE(1 << i);
-                       target_mask |= (pbs->rt[0].colormask << (4 * i));
                }
+               target_mask |= (pbs->rt[i].colormask << (4 * i));
        }
        r = radeon_state_init(rstate, rscreen->rw, R600_CB_CNTL_TYPE, R600_CB_CNTL);
        if (r)