etnaviv: move nir texture lowerings into one pass
authorChristian Gmeiner <cgmeiner@igalia.com>
Tue, 11 Jul 2023 11:21:26 +0000 (13:21 +0200)
committerMarge Bot <emma+marge@anholt.net>
Fri, 21 Jul 2023 08:52:03 +0000 (08:52 +0000)
This is just a prep commit to keep all texture related
lowerings in one c file.

Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com>
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24217>

src/gallium/drivers/etnaviv/etnaviv_compiler_nir.c
src/gallium/drivers/etnaviv/etnaviv_nir.h
src/gallium/drivers/etnaviv/etnaviv_nir_lower_texture.c [new file with mode: 0644]
src/gallium/drivers/etnaviv/meson.build

index b70842f..cde517b 100644 (file)
@@ -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) {
index bf7bba2..ddab69b 100644 (file)
@@ -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 (file)
index 0000000..4348e9e
--- /dev/null
@@ -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;
+}
index 26b1047..b84d1be 100644 (file)
@@ -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',