radeonsi: update predicate condition for compute dispatches

Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
This commit is contained in:
Bas Nieuwenhuizen
2016-04-05 17:38:38 +02:00
parent c3083d841e
commit e56514f631
2 changed files with 15 additions and 0 deletions
@@ -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);
+9
View File
@@ -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)