Mesa (master): intel/nir: Split IO arrays into elements

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Aug 2 01:02:53 UTC 2018


Module: Mesa
Branch: master
Commit: b0bb547f782301199e75dc107ac335faf4eb990c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b0bb547f782301199e75dc107ac335faf4eb990c

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Jul 25 22:52:39 2018 -0700

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 <tarceri at itsqueeze.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/intel/compiler/brw_nir.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
index 17ccfa48af..29ad68fdb2 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);
 




More information about the mesa-commit mailing list