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) {
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
--- /dev/null
+/*
+ * 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;
+}
'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',