freedreno/ir3: separate arrays from groups
[mesa.git] / src / gallium / drivers / freedreno / ir3 / ir3_group.c
index 2719b6459e31978ebfdc32a9be062b9cda38ab0b..961fae5c1e96c645a30d5a16c8ba8086d0277225 100644 (file)
@@ -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))