From 65ffa5b0b8066045b657d155d4ef16e5e7f38525 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Tue, 11 Jul 2023 13:21:26 +0200 Subject: [PATCH] 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 Acked-by: Alyssa Rosenzweig Part-of: --- 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(-) create mode 100644 src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c b/src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c index b70842f..cde517b 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 bf7bba2..ddab69b 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_nir.h +++ b/src/gallium/drivers/etnaviv/etnaviv_nir.h @@ -35,6 +35,9 @@ 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); #endif 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 0000000..4348e9e --- /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 26b1047..b84d1be 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', -- 2.7.4