From 7022f49b52cb8b414a3716a08deb741cce9ed75c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sat, 14 Jul 2012 18:15:29 +0200 Subject: [PATCH] r600g: only make constant buffers dirty if there's something to update --- src/gallium/drivers/r600/r600_state_common.c | 10 ++++++---- 1 file 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, -- 2.30.2