Module: Mesa Branch: main Commit: cd18d541de6515497297dad292e4a40a8ac71c68 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cd18d541de6515497297dad292e4a40a8ac71c68
Author: Pavel Ondračka <[email protected]> Date: Wed Jan 11 14:45:16 2023 +0100 ntt: pass ubo_vec4_max nir_opt_offsets flag through ntt options This will be used by the r300 driver in the next commit. Signed-off-by: Pavel Ondračka <[email protected]> Reviewed-by: Emma Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20672> --- src/gallium/auxiliary/nir/nir_to_tgsi.c | 11 ++++++++--- src/gallium/auxiliary/nir/nir_to_tgsi.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.c b/src/gallium/auxiliary/nir/nir_to_tgsi.c index feb10aa88e1..f88f3edad3b 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi.c +++ b/src/gallium/auxiliary/nir/nir_to_tgsi.c @@ -3275,7 +3275,8 @@ ntt_no_indirects_mask(nir_shader *s, struct pipe_screen *screen) } static void -ntt_optimize_nir(struct nir_shader *s, struct pipe_screen *screen) +ntt_optimize_nir(struct nir_shader *s, struct pipe_screen *screen, + const struct nir_to_tgsi_options *options) { bool progress; unsigned pipe_stage = pipe_shader_type_from_mesa(s->info.stage); @@ -3321,7 +3322,7 @@ ntt_optimize_nir(struct nir_shader *s, struct pipe_screen *screen) /* Try to fold addressing math into ubo_vec4's base to avoid load_consts * and ALU ops for it. */ - static const nir_opt_offsets_options offset_options = { + nir_opt_offsets_options offset_options = { .ubo_vec4_max = ~0, /* No const offset in TGSI for shared accesses. */ @@ -3331,6 +3332,10 @@ ntt_optimize_nir(struct nir_shader *s, struct pipe_screen *screen) .uniform_max = 0, .buffer_max = 0, }; + + if (options->ubo_vec4_max) + offset_options.ubo_vec4_max = options->ubo_vec4_max; + NIR_PASS(progress, s, nir_opt_offsets, &offset_options); } while (progress); @@ -3908,7 +3913,7 @@ const void *nir_to_tgsi_options(struct nir_shader *s, if (!screen->get_param(screen, PIPE_CAP_LOAD_CONSTBUF)) NIR_PASS_V(s, nir_lower_ubo_vec4); - ntt_optimize_nir(s, screen); + ntt_optimize_nir(s, screen, options); NIR_PASS_V(s, nir_lower_indirect_derefs, no_indirects_mask, UINT32_MAX); diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi.h b/src/gallium/auxiliary/nir/nir_to_tgsi.h index 531adea99f2..d3366cbf2fa 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi.h +++ b/src/gallium/auxiliary/nir/nir_to_tgsi.h @@ -36,6 +36,7 @@ struct nir_to_tgsi_options { /* Emit MAX(a,-a) instead of abs src modifier) */ bool lower_fabs; bool unoptimized_ra; + uint32_t ubo_vec4_max; }; const void *nir_to_tgsi(struct nir_shader *s,
