intel/nir: Enable nir_opt_find_array_copies
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 24 Jul 2018 05:20:41 +0000 (22:20 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 24 Aug 2018 02:47:51 +0000 (21:47 -0500)
commit8d8222461f9d7f497d657c2c0eff70820986429b
tree431e652e3f96fc721045384c73354e4db94a20de
parent53072582dc9401c76bb8ef72d8f321f684fb0a15
intel/nir: Enable nir_opt_find_array_copies

We have to be a bit careful with this one because we want it to run in
the optimization loop but only in the first brw_nir_optimize call.
Later calls assume that we've lowered away copy_deref instructions and
we don't want to introduce any more.

Shader-db results on Kaby Lake:

    total instructions in shared programs: 15176942 -> 15176942 (0.00%)
    instructions in affected programs: 0 -> 0
    helped: 0
    HURT: 0

In spite of the lack of any shader-db improvement, this patch completely
eliminates spilling in the Batman: Arkham City tessellation shaders.
This is because we are now able to detect that the temporary array
created by DXVK for storing TCS inputs is a copy of the input arrays and
use indirect URB reads instead of making a copy of 4.5 KiB of input data
and then indirecting on it with if-ladders.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/intel/compiler/brw_nir.c
src/intel/compiler/brw_nir.h