radeonsi/nir: lower load constants to scalar
authorTimothy Arceri <tarceri@itsqueeze.com>
Fri, 20 Sep 2019 06:54:31 +0000 (16:54 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 25 Sep 2019 02:42:55 +0000 (02:42 +0000)
commit0e1310e59fa2c41efcc173f8a68523dc45432ab9
treeec00bd3745e0693d89be6bae58f6cbb34ef73a55
parente353fd096d6db1b19305cb1a634e25f2026ab8a7
radeonsi/nir: lower load constants to scalar

We call nir_lower_load_const_to_scalar in the state trackers linker
however some later passes can reintroduce constant vectors. Here
we lower these to scalar and perform optimisations. The Intel
drivers do a similar call in their backend..

shader-db results VEGA 64:

Totals from affected shaders:
SGPRS: 152168 -> 151976 (-0.13 %)
VGPRS: 135224 -> 135112 (-0.08 %)
Spilled SGPRs: 4027 -> 4163 (3.38 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 0 -> 0 (0.00 %) dwords per thread
Code Size: 10670028 -> 10654776 (-0.14 %) bytes
LDS: 0 -> 0 (0.00 %) blocks
Max Waves: 13122 -> 13135 (0.10 %)
Wait states: 0 -> 0 (0.00 %)

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_shader_nir.c