anv: use derefs for shared memory access
authorRhys Perry <pendingchaos02@gmail.com>
Wed, 5 Jun 2019 13:14:23 +0000 (14:14 +0100)
committerJason Ekstrand <jason@jlekstrand.net>
Thu, 8 Aug 2019 17:10:39 +0000 (12:10 -0500)
commit024a46a4079f947cd8760577b83af0c861451c42
tree6653cdcacac0414822576f7f01355bce1d7faae3
parentfd73ed1bd7e4d5a6af05d29908d6c4e2cca868b5
anv: use derefs for shared memory access

vkpipeline-db for my Skylake GPU:
total instructions in shared programs: 8847602 -> 8847896 (<.01%)
instructions in affected programs: 10165 -> 10459 (2.89%)
helped: 8
HURT: 2

total cycles in shared programs: 1606273555 -> 1606251634 (<.01%)
cycles in affected programs: 2201803 -> 2179882 (-1.00%)
helped: 7
HURT: 3

The shaders with more instructions is due to a loop over a shared array
in Three Kingdoms being unrolled (and creating a lot of nested ifs). Not sure
if that's good or bad.

One of the shaders with worse cycles is only worse by 0.04% and the other
two are the shaders with loops unrolled.

v2: add patch
v4: don't set spirv_options.shared_addr_format
v4: move comment concerning the shared address format used and NULL
v4: add vkpipeline-db results
v5: rename to nir_lower_vars_to_explicit_types
v5: move setting of total_shared to outside brw_compile_cs
v6: set shared_addr_format
v6: formatting changes

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> (v5)
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/vulkan/anv_pipeline.c