Module: Mesa Branch: main Commit: 65ffa5b0b8066045b657d155d4ef16e5e7f38525 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=65ffa5b0b8066045b657d155d4ef16e5e7f38525
Author: Christian Gmeiner <[email protected]> Date: Tue Jul 11 13:21:26 2023 +0200 etnaviv: move nir texture lowerings into one pass This is just a prep commit to keep all texture related lowerings in one c file. Signed-off-by: Christian Gmeiner <[email protected]> Acked-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24217> --- src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c | 7 +----- src/gallium/drivers/etnaviv/etnaviv_nir.h | 3 +++ .../drivers/etnaviv/etnaviv_nir_lower_texture.c | 26 ++++++++++++++++++++++ src/gallium/drivers/etnaviv/meson.build | 1 + 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index b70842f1090..cde517bb5c6 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c @@ -1133,12 +1133,7 @@ etna_compile_shader(struct etna_shader_variant *v) NIR_PASS_V(s, nir_lower_vars_to_ssa); NIR_PASS_V(s, nir_lower_indirect_derefs, nir_var_all, UINT32_MAX); - NIR_PASS_V(s, nir_lower_tex, &(struct nir_lower_tex_options) { .lower_txp = ~0u, .lower_invalid_implicit_lod = true, }); - - if (v->key.has_sample_tex_compare) - NIR_PASS_V(s, nir_lower_tex_shadow, v->key.num_texture_states, - v->key.tex_compare_func, - v->key.tex_swizzle); + NIR_PASS_V(s, etna_nir_lower_texture, &v->key); NIR_PASS_V(s, nir_lower_alu_to_scalar, etna_alu_to_scalar_filter_cb, specs); if (c->specs->halti >= 2) { diff --git a/src/gallium/drivers/etnaviv/etnaviv_nir.h b/src/gallium/drivers/etnaviv/etnaviv_nir.h index bf7bba2e6a5..ddab69beebc 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_nir.h +++ b/src/gallium/drivers/etnaviv/etnaviv_nir.h @@ -34,6 +34,9 @@ etna_lower_io(nir_shader *shader, struct etna_shader_variant *v); void etna_lower_alu(nir_shader *shader, bool has_new_transcendentals); +bool +etna_nir_lower_texture(nir_shader *s, struct etna_shader_key *key); + bool etna_nir_lower_ubo_to_uniform(nir_shader *shader); diff --git a/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c b/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c new file mode 100644 index 00000000000..4348e9e32c9 --- /dev/null +++ b/src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c @@ -0,0 +1,26 @@ +/* + * Copyright © 2023 Igalia S.L. + * SPDX-License-Identifier: MIT + */ + +#include "etnaviv_nir.h" + +bool +etna_nir_lower_texture(nir_shader *s, struct etna_shader_key *key) +{ + bool progress = false; + + nir_lower_tex_options lower_tex_options = { + .lower_txp = ~0u, + .lower_invalid_implicit_lod = true, + }; + + NIR_PASS(progress, s, nir_lower_tex, &lower_tex_options); + + if (key->has_sample_tex_compare) + NIR_PASS(progress, s, nir_lower_tex_shadow, key->num_texture_states, + key->tex_compare_func, + key->tex_swizzle); + + return progress; +} diff --git a/src/gallium/drivers/etnaviv/meson.build b/src/gallium/drivers/etnaviv/meson.build index 26b1047e3ae..b84d1be315a 100644 --- a/src/gallium/drivers/etnaviv/meson.build +++ b/src/gallium/drivers/etnaviv/meson.build @@ -57,6 +57,7 @@ files_etnaviv = files( 'etnaviv_format.c', 'etnaviv_format.h', 'etnaviv_internal.h', + 'etnaviv_nir_lower_texture.c', 'etnaviv_nir_lower_ubo_to_uniform.c', 'etnaviv_nir.c', 'etnaviv_nir.h',
