glsl: Don't copy propagate elements from SSBO or shared variables either
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 5 Jun 2018 23:02:25 +0000 (16:02 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 14 Jun 2018 18:28:12 +0000 (11:28 -0700)
commit37bd9ccd21b860d2b5ffea7e1f472ec83b68b43b
treee4fd24ef618e4a141b764b206aef9deabad63eb8
parent461a5c899c08064467abb635536381a5a5659280
glsl: Don't copy propagate elements from SSBO or shared variables either

Since SSBOs can be written by a different GPU thread, copy propagating a
read can cause the value to magically change.  SSBO reads are also very
expensive, so doing it twice will be slower.

The same shader was helped by this patch and the previous.

Haswell, Broadwell, and Skylake had similar results. (Skylake shown)
total instructions in shared programs: 14399119 -> 14399113 (<.01%)
instructions in affected programs: 683 -> 677 (-0.88%)
helped: 1
HURT: 0

total cycles in shared programs: 532973113 -> 532971865 (<.01%)
cycles in affected programs: 524666 -> 523418 (-0.24%)
helped: 1
HURT: 0

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Cc: mesa-stable@lists.freedesktop.org
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106774
src/compiler/glsl/opt_copy_propagation_elements.cpp