ir3/ra: Handle huge merge sets
authorConnor Abbott <cwabbott0@gmail.com>
Fri, 23 Jul 2021 09:59:34 +0000 (11:59 +0200)
committerMarge Bot <eric+marge@anholt.net>
Fri, 20 Aug 2021 10:37:36 +0000 (10:37 +0000)
commitefb34d6ee6af4b51fa3f3f32b7536c4b3de47100
tree5520c3d5723c3e4fb739a84a6b89295d4282e605
parent70c22d38945223fbdef699c8af60f8be95b178c8
ir3/ra: Handle huge merge sets

It can happen that we create an enormous merge set, even larger than the
entire register file, in which case find_best_gap() would loop
infinitely. This seems to be triggered more often with
IR3_SHADER_DEBUG=spillall, since it actually happened with a CTS test.
Just bail out in that case.

Fixes: 0ffcb19b9d9 ("ir3: Rewrite register allocation")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12033>
src/freedreno/ir3/ir3_ra.c