[Mesa-dev] [PATCH] Revert "intel/nir: Call nir_lower_io_to_scalar_early"

Mark Janes mark.a.janes at intel.com
Wed Aug 15 22:49:15 UTC 2018


This corrects all of the performance regressions that I can see on our
perf CI.

Please make sure to add the fixes tag before pushing.

Tested-by: Mark Janes <mark.a.janes at intel.com>

Jason Ekstrand <jason at jlekstrand.net> writes:

> Commit 4434591bf56a6b0 caused substantially more URB messages in
> geometry and tessellation shaders.  Before we can really enable this
> sort of optimization,  We either need some way of combining them back
> together into vectors or we need to do cross-stage vector element
> elimination without splitting everything into scalars.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107510
> ---
>  src/intel/compiler/brw_nir.c | 17 +++++------------
>  1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
> index 31ffbe613ec..29ad68fdb2a 100644
> --- a/src/intel/compiler/brw_nir.c
> +++ b/src/intel/compiler/brw_nir.c
> @@ -713,18 +713,6 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
>     nir_validate_shader(*producer);
>     nir_validate_shader(*consumer);
>  
> -   const bool p_is_scalar =
> -      compiler->scalar_stage[(*producer)->info.stage];
> -   const bool c_is_scalar =
> -      compiler->scalar_stage[(*consumer)->info.stage];
> -
> -   if (p_is_scalar && c_is_scalar) {
> -      NIR_PASS_V(*producer, nir_lower_io_to_scalar_early, nir_var_shader_out);
> -      NIR_PASS_V(*consumer, nir_lower_io_to_scalar_early, nir_var_shader_in);
> -      *producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
> -      *consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
> -   }
> -
>     NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out);
>     NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in);
>  
> @@ -741,7 +729,12 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
>        NIR_PASS_V(*consumer, nir_lower_indirect_derefs,
>                   brw_nir_no_indirect_mask(compiler, (*consumer)->info.stage));
>  
> +      const bool p_is_scalar =
> +         compiler->scalar_stage[(*producer)->info.stage];
>        *producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
> +
> +      const bool c_is_scalar =
> +         compiler->scalar_stage[(*consumer)->info.stage];
>        *consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
>     }
>  }
> -- 
> 2.17.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list