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',

Reply via email to