diff --git a/src/gallium/drivers/panfrost/pan_fb_preload.c b/src/gallium/drivers/panfrost/pan_fb_preload.c index d94be7c8b13..d45b06b6c8b 100644 --- a/src/gallium/drivers/panfrost/pan_fb_preload.c +++ b/src/gallium/drivers/panfrost/pan_fb_preload.c @@ -562,7 +562,6 @@ pan_preload_get_shader(struct pan_fb_preload_cache *cache, pan_shader_preprocess(b.shader, inputs.gpu_id); pan_shader_lower_texture_early(b.shader, inputs.gpu_id); - pan_shader_lower_texture(b.shader, inputs.gpu_id); pan_shader_postprocess(b.shader, inputs.gpu_id); if (PAN_ARCH == 4) { diff --git a/src/gallium/drivers/panfrost/pan_shader.c b/src/gallium/drivers/panfrost/pan_shader.c index 7392505960e..733b2c9c374 100644 --- a/src/gallium/drivers/panfrost/pan_shader.c +++ b/src/gallium/drivers/panfrost/pan_shader.c @@ -139,7 +139,6 @@ panfrost_shader_compile(struct panfrost_screen *screen, const nir_shader *ir, if (mesa_shader_stage_is_compute(s->info.stage)) { pan_shader_preprocess(s, panfrost_device_gpu_id(dev)); pan_shader_lower_texture_early(s, panfrost_device_gpu_id(dev)); - pan_shader_lower_texture(s, panfrost_device_gpu_id(dev)); pan_shader_postprocess(s, panfrost_device_gpu_id(dev)); } @@ -526,7 +525,6 @@ panfrost_create_shader_state(struct pipe_context *pctx, */ NIR_PASS(_, nir, nir_opt_constant_folding); - pan_shader_lower_texture(nir, panfrost_device_gpu_id(dev)); pan_shader_postprocess(nir, panfrost_device_gpu_id(dev)); if (nir->info.stage == MESA_SHADER_FRAGMENT) diff --git a/src/panfrost/clc/pan_compile.c b/src/panfrost/clc/pan_compile.c index 8d4cbf5907f..76f4be52de1 100644 --- a/src/panfrost/clc/pan_compile.c +++ b/src/panfrost/clc/pan_compile.c @@ -425,7 +425,6 @@ main(int argc, const char **argv) pan_shader_preprocess(s, inputs.gpu_id); pan_shader_lower_texture_early(s, inputs.gpu_id); - pan_shader_lower_texture(s, inputs.gpu_id); pan_shader_postprocess(s, inputs.gpu_id); NIR_PASS(_, s, nir_opt_deref); diff --git a/src/panfrost/compiler/bifrost_compile.c b/src/panfrost/compiler/bifrost_compile.c index 7ab8225be0e..9de6adbc411 100644 --- a/src/panfrost/compiler/bifrost_compile.c +++ b/src/panfrost/compiler/bifrost_compile.c @@ -5997,6 +5997,8 @@ bifrost_postprocess_nir(nir_shader *nir, unsigned gpu_id) { MESA_TRACE_FUNC(); + bifrost_lower_texture_nir(nir, gpu_id); + if (nir->info.stage == MESA_SHADER_FRAGMENT) { NIR_PASS(_, nir, nir_lower_mediump_io, nir_var_shader_in | nir_var_shader_out, diff --git a/src/panfrost/lib/pan_shader.h b/src/panfrost/lib/pan_shader.h index 1c55e4f1d1a..410f5995934 100644 --- a/src/panfrost/lib/pan_shader.h +++ b/src/panfrost/lib/pan_shader.h @@ -83,15 +83,6 @@ pan_shader_lower_texture_early(nir_shader *nir, unsigned gpu_id) NIR_PASS(_, nir, nir_lower_tex, &lower_tex_options); } -static inline void -pan_shader_lower_texture(nir_shader *nir, unsigned gpu_id) -{ - if (pan_arch(gpu_id) >= 6) - bifrost_lower_texture_nir(nir, gpu_id); - else - midgard_lower_texture_nir(nir, gpu_id); -} - static inline void pan_shader_disassemble(FILE *fp, const void *code, size_t size, unsigned gpu_id, bool verbose) diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 6c282293639..6e8a332eea6 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -395,6 +395,8 @@ midgard_preprocess_nir(nir_shader *nir, UNUSED unsigned gpu_id) void midgard_postprocess_nir(nir_shader *nir, UNUSED unsigned gpu_id) { + midgard_lower_texture_nir(nir, gpu_id); + if (nir->info.stage == MESA_SHADER_VERTEX) { /* nir_lower[_explicit]_io is lazy and emits mul+add chains even * for offsets it could figure out are constant. Do some diff --git a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c b/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c index 50c339f5a17..b8964bd141a 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c @@ -155,7 +155,6 @@ get_preload_shader(struct panvk_device *dev, pan_shader_preprocess(nir, inputs.gpu_id); pan_shader_lower_texture_early(nir, inputs.gpu_id); - pan_shader_lower_texture(nir, inputs.gpu_id); pan_shader_postprocess(nir, inputs.gpu_id); VkResult result = panvk_per_arch(create_internal_shader)( diff --git a/src/panfrost/vulkan/panvk_vX_shader.c b/src/panfrost/vulkan/panvk_vX_shader.c index f5e669cdcc7..ca1e2e0bd0f 100644 --- a/src/panfrost/vulkan/panvk_vX_shader.c +++ b/src/panfrost/vulkan/panvk_vX_shader.c @@ -933,7 +933,6 @@ panvk_lower_nir(struct panvk_device *dev, nir_shader *nir, */ NIR_PASS(_, nir, nir_opt_constant_folding); - pan_shader_lower_texture(nir, compile_input->gpu_id); pan_shader_postprocess(nir, compile_input->gpu_id); if (stage == MESA_SHADER_VERTEX)