[Mesa-dev] [PATCH 3/3] radeonsi/nir: call ac_lower_indirect_derefs()

Marek Olšák maraeo at gmail.com
Tue Mar 6 23:22:00 UTC 2018


On Sun, Mar 4, 2018 at 8:09 PM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
> Fixes piglit tests:
> tests/spec/glsl-1.50/execution/variable-indexing/gs-input-array-vec3-index-rd.shader_test
> tests/spec/glsl-1.50/execution/geometry/max-input-components.shader_test
> ---
>  src/gallium/drivers/radeonsi/si_compute.c       | 2 +-
>  src/gallium/drivers/radeonsi/si_shader.h        | 2 +-
>  src/gallium/drivers/radeonsi/si_shader_nir.c    | 4 +++-
>  src/gallium/drivers/radeonsi/si_state_shaders.c | 2 +-
>  4 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c
> index e9b6127115..d135a09add 100644
> --- a/src/gallium/drivers/radeonsi/si_compute.c
> +++ b/src/gallium/drivers/radeonsi/si_compute.c
> @@ -107,7 +107,7 @@ static void si_create_compute_state_async(void *job, int thread_index)
>                 sel.nir = program->ir.nir;
>
>                 si_nir_scan_shader(sel.nir, &sel.info);
> -               si_lower_nir(&sel);
> +               si_lower_nir(&sel, program->compiler_ctx_state.chip_class);

program->screen->chip_class, and patch 2 can be dropped.

>         }
>
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h
> index 28f6e6bc4e..23f9d20e19 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.h
> +++ b/src/gallium/drivers/radeonsi/si_shader.h
> @@ -674,7 +674,7 @@ void si_nir_scan_shader(const struct nir_shader *nir,
>  void si_nir_scan_tess_ctrl(const struct nir_shader *nir,
>                            const struct tgsi_shader_info *info,
>                            struct tgsi_tessctrl_info *out);
> -void si_lower_nir(struct si_shader_selector *sel);
> +void si_lower_nir(struct si_shader_selector *sel, enum chip_class chip_class);
>
>  /* Inline helpers. */
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
> index fc709d8546..3d538be4cf 100644
> --- a/src/gallium/drivers/radeonsi/si_shader_nir.c
> +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
> @@ -665,7 +665,7 @@ void si_nir_scan_shader(const struct nir_shader *nir,
>   * selector is created.
>   */
>  void
> -si_lower_nir(struct si_shader_selector* sel)
> +si_lower_nir(struct si_shader_selector* sel, enum chip_class chip_class)
>  {
>         /* Adjust the driver location of inputs and outputs. The state tracker
>          * interprets them as slots, while the ac/nir backend interprets them
> @@ -715,6 +715,8 @@ si_lower_nir(struct si_shader_selector* sel)
>         };
>         NIR_PASS_V(sel->nir, nir_lower_subgroups, &subgroups_options);
>
> +       ac_lower_indirect_derefs(sel->nir, chip_class);

With sel->screen->chip_class, si_lower_nir doesn't need the chip_class
parameter.

Marek


More information about the mesa-dev mailing list