From 87c1e9e19c6baa8c6fb03b0894c72744a07cde63 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Sat, 29 Aug 2015 00:49:40 +0200 Subject: radeonsi: use a bitmask for tracking dirty atoms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This mainly removes the cache misses when checking the dirty flags. Not much else though. Reviewed-by: Alex Deucher Acked-by: Christian König --- src/gallium/drivers/radeonsi/si_pipe.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/gallium/drivers/radeonsi/si_pipe.h') diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 5ca83e7a2d2..35104cf7848 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -155,6 +155,7 @@ struct si_context { struct si_shader_selector *fixed_func_tcs_shader; union si_state_atoms atoms; + unsigned dirty_atoms; /* mask */ struct si_framebuffer framebuffer; struct si_vertex_element *vertex_elements; @@ -339,7 +340,12 @@ static inline void si_set_atom_dirty(struct si_context *sctx, struct r600_atom *atom, bool dirty) { - atom->dirty = dirty; + unsigned bit = 1 << (atom->id - 1); + + if (dirty) + sctx->dirty_atoms |= bit; + else + sctx->dirty_atoms &= ~bit; } static inline void -- cgit v1.2.3