intel/fs: Implement performance analysis-based SIMD32 heuristic for fragment shaders.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 3 Apr 2020 00:30:06 +0000 (17:30 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 29 Apr 2020 06:01:27 +0000 (23:01 -0700)
commit14f0a5cf64f6b8725ebe8ae68b19b096995ea0fe
treeee5af7db13ef0c86a65a8999b9d05c1d792dc256
parentd6aa0c261f2d9ccacaa6579432c16c61ca4cb073
intel/fs: Implement performance analysis-based SIMD32 heuristic for fragment shaders.

The heuristic enables the SIMD32 fragment shader based on whether the
IR performance modeling pass predicts it to have greater throughput
than the SIMD16 and SIMD8 variants of the same shader.  It would be
straightforward to do the same thing in order to control whether
SIMD16 dispatch is enabled, but it's pending additional performance
evaluation.

The INTEL_DEBUG=do32 option is left around in order to force the
SIMD32 shader to be used regardless of the result of the heuristic,
since it's useful as a debugging aid e.g. in order to identify
SIMD32-specific codegen issues which may be masked by the SIMD32
heuristic, or cases where the heuristic is incorrectly disabling
SIMD32 shaders that offer a performance advantage.

Currently this is only enabled on Gen6+, since SIMD32 codegen support
is incomplete on earlier platforms.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/intel/compiler/brw_fs.cpp