diff --git a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c index cb288fefa5b..200542ce394 100644 --- a/src/imagination/rogue/passes/rogue_schedule_instr_groups.c +++ b/src/imagination/rogue/passes/rogue_schedule_instr_groups.c @@ -174,9 +174,11 @@ static inline void rogue_instr_group_put(rogue_instr *instr, group->instrs[phase] = instr; group->header.phases |= BITFIELD_BIT(phase); + /* Ensure we're not mixing and matching repeats! */ + assert(group->header.repeat == 0 || group->header.repeat == instr->repeat); + /* Update repeat count. */ group->header.repeat = instr->repeat; - instr->repeat = 0; /* Set end flag. */ group->header.end = instr->end; diff --git a/src/imagination/rogue/rogue.c b/src/imagination/rogue/rogue.c index 3ba5aec62ae..7d062baf724 100644 --- a/src/imagination/rogue/rogue.c +++ b/src/imagination/rogue/rogue.c @@ -559,6 +559,7 @@ static inline void rogue_instr_init(rogue_instr *instr, rogue_block *block) { instr->type = type; + instr->repeat = 1; instr->index = block->shader->next_instr++; instr->block = block; } diff --git a/src/imagination/rogue/rogue_encode.c b/src/imagination/rogue/rogue_encode.c index e932d5219b8..17f781a87b0 100644 --- a/src/imagination/rogue/rogue_encode.c +++ b/src/imagination/rogue/rogue_encode.c @@ -171,7 +171,7 @@ static void rogue_encode_instr_group_header(rogue_instr_group *group, h.end = group->header.end; /* h.crel = ; */ /* Unused for now */ /* h.atom = ; */ /* Unused for now */ - h.rpt = group->header.repeat ? group->header.repeat - 1 : 0; + h.rpt = group->header.repeat - 1; } util_dynarray_append_mem(binary, group->size.header, &h);