diff options
author | Jason Ekstrand <[email protected]> | 2018-07-25 22:52:39 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2018-08-01 18:02:28 -0700 |
commit | b0bb547f782301199e75dc107ac335faf4eb990c (patch) | |
tree | 6e0795924af3755e7275da9f3fc15fcb8e1983d6 | |
parent | 57804efa885074866e1388191b5f48680c6151da (diff) |
intel/nir: Split IO arrays into elements
The NIR nir_lower_io_arrays_to_elements pass attempts to split I/O
variables which are arrays or matrices into a sequence of separate
variables. This can help link-time optimization by allowing us to
remove varyings at a more granular level.
Shader-db results on Kaby Lake:
total instructions in shared programs: 15177645 -> 15168494 (-0.06%)
instructions in affected programs: 79857 -> 70706 (-11.46%)
helped: 392
HURT: 0
Reviewed-by: Timothy Arceri <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r-- | src/intel/compiler/brw_nir.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index 17ccfa48af6..29ad68fdb2a 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -709,6 +709,10 @@ void brw_nir_link_shaders(const struct brw_compiler *compiler, nir_shader **producer, nir_shader **consumer) { + nir_lower_io_arrays_to_elements(*producer, *consumer); + nir_validate_shader(*producer); + nir_validate_shader(*consumer); + NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out); NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in); |