[Mesa-dev] [PATCH] radeonsi/nir: disable GLSL IR loop unrolling

Marek Olšák maraeo at gmail.com
Wed Feb 21 18:52:22 UTC 2018


Nice.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Wed, Feb 21, 2018 at 2:35 AM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
> Delaying unrolling and allowing NIR to do it instead has been shown
> to result in better code in drivers such as i965. shader-db results
> appear to should the same is true for radeonsi.
>
> The other advantage is that using NIR unrolling improves compile
> times significantly.
>
> Totals from affected shaders:
> SGPRS: 9624 -> 10016 (4.07 %)
> VGPRS: 6800 -> 6464 (-4.94 %)
> Spilled SGPRs: 0 -> 2 (0.00 %)
> Spilled VGPRs: 0 -> 0 (0.00 %)
> Private memory VGPRs: 0 -> 0 (0.00 %)
> Scratch size: 0 -> 0 (0.00 %) dwords per thread
> Code Size: 359176 -> 332264 (-7.49 %) bytes
> LDS: 0 -> 0 (0.00 %) blocks
> Max Waves: 1355 -> 1432 (5.68 %)
> Wait states: 0 -> 0 (0.00 %)
> ---
>  src/gallium/drivers/radeonsi/si_get.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
> index ef03a962d1..18d9cec414 100644
> --- a/src/gallium/drivers/radeonsi/si_get.c
> +++ b/src/gallium/drivers/radeonsi/si_get.c
> @@ -437,6 +437,8 @@ static int si_get_shader_param(struct pipe_screen* pscreen,
>         case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
>                 return SI_NUM_IMAGES;
>         case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
> +               if (sscreen->debug_flags & DBG(NIR))
> +                       return 0;
>                 return 32;
>         case PIPE_SHADER_CAP_PREFERRED_IR:
>                 if (sscreen->debug_flags & DBG(NIR))
> --
> 2.14.3
>
> _______________________________________________
> 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