mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 13:40:11 +01:00
freedreno/ir3: workaround bug/feature
Seems like in certain cases, we cannot use c<a0.x+0> as the third src to cat3 instructions. This may be slightly conservative, we may only have this restriction when the first src is also const. This fixes, for example, +24/-0 of the variable-indexing piglit tests. Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
ebd3a1fc17
commit
ddede497b8
1 changed files with 9 additions and 0 deletions
|
|
@ -288,6 +288,15 @@ reg_cp(struct ir3_instruction *instr, struct ir3_register *reg, unsigned n)
|
|||
conflicts(instr->address, reg->instr->address))
|
||||
return;
|
||||
|
||||
/* This seems to be a hw bug, or something where the timings
|
||||
* just somehow don't work out. This restriction may only
|
||||
* apply if the first src is also CONST.
|
||||
*/
|
||||
if ((instr->category == 3) && (n == 2) &&
|
||||
(src_reg->flags & IR3_REG_RELATIV) &&
|
||||
(src_reg->array.offset == 0))
|
||||
return;
|
||||
|
||||
src_reg = ir3_reg_clone(instr->block->shader, src_reg);
|
||||
src_reg->flags = new_flags;
|
||||
instr->regs[n+1] = src_reg;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue