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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user