v3d: Stop scalarizing our uniform loads.
authorEric Anholt <eric@anholt.net>
Thu, 3 Jan 2019 19:38:57 +0000 (11:38 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 4 Jan 2019 23:41:23 +0000 (15:41 -0800)
commit81b9361b683d43cceb91490ac28a2cbaffdeedf9
treeb0f3d8c3d9c9ee86bc1079af68ed9537ddecf554
parentf8a8de8b9a69fc6f4a8fc86a71f81c168cdd18b0
v3d: Stop scalarizing our uniform loads.

We can pull a whole vector in a single indirect load.  This saves a bunch
of round-trips to the TMU, instructions for setting up multiple loads,
references to the UBO base in the uniforms, and apparently manages to
reduce register pressure as well.

instructions in affected programs: 3086665 -> 2454967 (-20.47%)
uniforms in affected programs: 919581 -> 721039 (-21.59%)
threads in affected programs: 1710 -> 3420 (100.00%)
spills in affected programs: 596 -> 522 (-12.42%)
fills in affected programs: 680 -> 562 (-17.35%)

Improves 3dmmes performance by 2.29312% +/- 0.139825% (n=5)
src/broadcom/compiler/nir_to_vir.c
src/broadcom/compiler/v3d_nir_lower_io.c