broadcom/vc5: Add support for register spilling.
authorEric Anholt <eric@anholt.net>
Tue, 13 Mar 2018 22:13:00 +0000 (15:13 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 19 Mar 2018 23:44:06 +0000 (16:44 -0700)
commitfacc3c6f58de88ac3707a1b8435b7fc655d13124
tree3ee173fba5a0eb858346a9cf2b02cda0b0c7dfb1
parent271fc58ba1b9e6a0245c7ab262834705f2e20372
broadcom/vc5: Add support for register spilling.

Our register spilling support is nice to have since vc4 couldn't at all,
but we're still very restricted due to needing to not spill during a TMU
operation, or during the last segment of the program (which would be nice
to spill a value of, when there's a long-lived value being passed through
with little modification from the start to the end).

We could do better by emitting unspills for the last-segment values just
before the last thrsw, since the last segment is probably not the maximum
interference area.

Fixes GTF uniform_buffer_object_arrays_of_all_valid_basic_types and 3
others.
src/broadcom/compiler/nir_to_vir.c
src/broadcom/compiler/v3d_compiler.h
src/broadcom/compiler/vir.c
src/broadcom/compiler/vir_register_allocate.c
src/gallium/drivers/vc5/vc5_context.h
src/gallium/drivers/vc5/vc5_program.c
src/gallium/drivers/vc5/vc5_uniforms.c