summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2012-07-14 18:15:29 +0200
committerMarek Olšák <maraeo@gmail.com>2012-07-17 21:22:15 +0200
commit7022f49b52cb8b414a3716a08deb741cce9ed75c (patch)
treeb653a026120fcdf26415faa46c2f662d2ee139c4
parent80755ff56317446a8c89e611edc1fdf320d6779b (diff)
r600g: only make constant buffers dirty if there's something to update
-rw-r--r--src/gallium/drivers/r600/r600_state_common.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
index 23adf3b5746..f1d5d57f8d5 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -757,10 +757,12 @@ static void r600_update_alpha_ref(struct r600_context *rctx)
void r600_constant_buffers_dirty(struct r600_context *rctx, struct r600_constbuf_state *state)
{
- r600_inval_shader_cache(rctx);
- state->atom.num_dw = rctx->chip_class >= EVERGREEN ? util_bitcount(state->dirty_mask)*20
- : util_bitcount(state->dirty_mask)*19;
- r600_atom_dirty(rctx, &state->atom);
+ if (state->dirty_mask) {
+ r600_inval_shader_cache(rctx);
+ state->atom.num_dw = rctx->chip_class >= EVERGREEN ? util_bitcount(state->dirty_mask)*20
+ : util_bitcount(state->dirty_mask)*19;
+ r600_atom_dirty(rctx, &state->atom);
+ }
}
void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,