From e56514f6316e48ee2231841d45695ff2b8f8b4f5 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Tue, 5 Apr 2016 17:38:38 +0200 Subject: [PATCH] radeonsi: update predicate condition for compute dispatches MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Bas Nieuwenhuizen Reviewed-by: Marek Olšák Reviewed-by: Nicolai Hähnle Reviewed-by: Edward O'Callaghan --- src/gallium/drivers/radeonsi/si_compute.c | 6 ++++++ src/gallium/drivers/radeonsi/si_pipe.h | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 1cdaf6c9ecf..e0750314e76 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -450,6 +450,12 @@ static void si_launch_grid( if (!si_switch_compute_shader(sctx, program, &program->shader, info->pc)) return; + if (si_is_atom_dirty(sctx, sctx->atoms.s.render_cond)) { + sctx->atoms.s.render_cond->emit(&sctx->b, + sctx->atoms.s.render_cond); + si_set_atom_dirty(sctx, sctx->atoms.s.render_cond, false); + } + if (program->input_size || program->ir_type == PIPE_SHADER_IR_NATIVE) si_upload_compute_input(sctx, info); diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index ff60dcf67dc..5a5249cd8c6 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -421,6 +421,15 @@ si_set_atom_dirty(struct si_context *sctx, sctx->dirty_atoms &= ~bit; } +static inline bool +si_is_atom_dirty(struct si_context *sctx, + struct r600_atom *atom) +{ + unsigned bit = 1 << (atom->id - 1); + + return sctx->dirty_atoms & bit; +} + static inline void si_mark_atom_dirty(struct si_context *sctx, struct r600_atom *atom) -- 2.30.2