r300g: cleanup the emission of framebuffer state
authorMarek Olšák <maraeo@gmail.com>
Fri, 12 Feb 2010 03:19:55 +0000 (04:19 +0100)
committerMarek Olšák <maraeo@gmail.com>
Sat, 13 Feb 2010 14:44:43 +0000 (15:44 +0100)
Some emits are not needed anymore.

src/gallium/drivers/r300/r300_emit.c
src/gallium/drivers/r300/r300_state.c

index 324952b9776a22ce03c33dc957cce7fd41ae98bd..7399ab8ef39d0a6889875081329552e3f4d38c8a 100644 (file)
@@ -388,8 +388,7 @@ void r300_emit_fb_state(struct r300_context* r300, void* state)
     int i;
     CS_LOCALS(r300);
 
-    BEGIN_CS((10 * fb->nr_cbufs) + (2 * (4 - fb->nr_cbufs)) +
-             (fb->zsbuf ? 10 : 0) + 6);
+    BEGIN_CS((10 * fb->nr_cbufs) + (fb->zsbuf ? 10 : 0) + 6);
 
     /* Flush and free renderbuffer caches. */
     OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT,
@@ -433,11 +432,6 @@ void r300_emit_fb_state(struct r300_context* r300, void* state)
             r300_translate_out_fmt(surf->format));
     }
 
-    /* Disable unused colorbuffers. */
-    for (; i < 4; i++) {
-        OUT_CS_REG(R300_US_OUT_FMT_0 + (4 * i), R300_US_OUT_FMT_UNUSED);
-    }
-
     /* Set up a zbuffer. */
     if (fb->zsbuf) {
         surf = fb->zsbuf;
index 4d158cff7c78e38ceaa22d636267b46a1f768b72..7fc51cd9a6205e887d470d3fc41accc90e1a595b 100644 (file)
@@ -505,9 +505,6 @@ static void
     unsigned max_width, max_height;
     uint32_t zbuffer_bpp = 0;
 
-    r300->fb_state.size = (10 * state->nr_cbufs) +
-        (2 * (4 - state->nr_cbufs)) +
-        (state->zsbuf ? 10 : 0) + 6;
 
     if (state->nr_cbufs > 4) {
         debug_printf("r300: Implementation error: Too many MRTs in %s, "
@@ -535,7 +532,8 @@ static void
 
     memcpy(r300->fb_state.state, state, sizeof(struct pipe_framebuffer_state));
 
-    /* Don't rely on the order of states being set for the first time. */
+    r300->fb_state.size = (10 * state->nr_cbufs) + (state->zsbuf ? 10 : 0) + 6;
+
     /* XXX wait what */
     r300->blend_state.dirty = TRUE;
     r300->dsa_state.dirty = TRUE;