Signed-off-by: Tilman Sauerbeck <til...@code-monkey.de>
---

Any reason why we shouldn't do it like this?

 src/gallium/drivers/r600/evergreen_state.c |   15 ++++-----------
 src/gallium/drivers/r600/r600_state.c      |   18 +++++-------------
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 70799f6..8d84fd2 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -859,13 +859,9 @@ static void evergreen_set_framebuffer_state(struct 
pipe_context *ctx,
                evergreen_db(rctx, rstate, state);
        }
 
-       target_mask = 0x00000000;
-       target_mask = 0xFFFFFFFF;
-       shader_mask = 0;
-       for (int i = 0; i < state->nr_cbufs; i++) {
-               target_mask ^= 0xf << (i * 4);
-               shader_mask |= 0xf << (i * 4);
-       }
+       shader_mask = (1 << (state->nr_cbufs * 4)) - 1;
+       target_mask = ~shader_mask;
+
        tl = S_028240_TL_X(0) | S_028240_TL_Y(0);
        br = S_028244_BR_X(state->width) | S_028244_BR_Y(state->height);
 
@@ -1431,10 +1427,7 @@ void evergreen_draw(struct pipe_context *ctx, const 
struct pipe_draw_info *info)
                evergreen_vs_resource_set(&rctx->ctx, rstate, i);
        }
 
-       mask = 0;
-       for (int i = 0; i < rctx->framebuffer.nr_cbufs; i++) {
-               mask |= (0xF << (i * 4));
-       }
+       mask = (1 << (rctx->framebuffer.nr_cbufs * 4)) - 1;
 
        vgt.id = R600_PIPE_STATE_VGT;
        vgt.nregs = 0;
diff --git a/src/gallium/drivers/r600/r600_state.c 
b/src/gallium/drivers/r600/r600_state.c
index 2814ecc..2ed83d5 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -110,10 +110,7 @@ static void r600_draw_common(struct r600_drawl *draw)
                r600_context_pipe_state_set_vs_resource(&rctx->ctx, rstate, i);
        }
 
-       mask = 0;
-       for (int i = 0; i < rctx->framebuffer.nr_cbufs; i++) {
-               mask |= (0xF << (i * 4));
-       }
+       mask = (1 << (rctx->framebuffer.nr_cbufs * 4)) - 1;
 
        vgt.id = R600_PIPE_STATE_VGT;
        vgt.nregs = 0;
@@ -1055,15 +1052,10 @@ static void r600_set_framebuffer_state(struct 
pipe_context *ctx,
                r600_db(rctx, rstate, state);
        }
 
-       target_mask = 0x00000000;
-       target_mask = 0xFFFFFFFF;
-       shader_mask = 0;
-       shader_control = 0;
-       for (int i = 0; i < state->nr_cbufs; i++) {
-               target_mask ^= 0xf << (i * 4);
-               shader_mask |= 0xf << (i * 4);
-               shader_control |= 1 << i;
-       }
+       shader_mask = (1 << (state->nr_cbufs * 4)) - 1;
+       target_mask = ~shader_mask;
+       shader_control = (1 << state->nr_cbufs) - 1;
+
        tl = S_028240_TL_X(0) | S_028240_TL_Y(0) | 
S_028240_WINDOW_OFFSET_DISABLE(1);
        br = S_028244_BR_X(state->width) | S_028244_BR_Y(state->height);
 
-- 
1.7.3

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to