diff options
author | Rob Clark <[email protected]> | 2018-01-29 12:32:24 -0500 |
---|---|---|
committer | Rob Clark <[email protected]> | 2018-02-10 14:54:58 -0500 |
commit | 0a6ddf964fb90e4520501868ff00fed66e7814f3 (patch) | |
tree | 16b21b840cea98b7fedf1ce2c02d9cecd6213364 | |
parent | 55f14a1ac4553eb14656540404cf9a6a9abc34fc (diff) |
freedreno/ir3: separate arrays from groups
Signed-off-by: Rob Clark <[email protected]>
-rw-r--r-- | src/gallium/drivers/freedreno/ir3/ir3_group.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_group.c b/src/gallium/drivers/freedreno/ir3/ir3_group.c index 2719b6459e3..961fae5c1e9 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_group.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_group.c @@ -137,6 +137,14 @@ restart: if (instr->opc == OPC_META_PHI) conflict = true; + /* Mixing array elements and higher register classes + * (ie. groups) doesn't really work out in RA. See: + * + * https://trello.com/c/DqeDkeVf/156-bug-with-stk-70frag + */ + if (instr->regs[0]->flags & IR3_REG_ARRAY) + conflict = true; + /* we also can't have an instr twice in the group: */ for (j = i + 1; (j < n) && !conflict; j++) if (in_neighbor_list(ops->get(arr, j), instr, i)) |