About Social Code
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFaith Ekstrand <faith.ekstrand@collabora.com>2025-11-05 13:59:21 -0500
committerMarge Bot <marge-bot@fdo.invalid>2025-11-06 14:57:30 +0000
commit0fae56e100251d2e31c9715a31f768549dc2934b (patch)
tree5fc833efb5cf2113dd07bc6638b842335316ca52
parentdcb9ca1aa63f02165aaf85ec9c9a2ca658b0f46b (diff)
pan: roll lower_texture() into postprocess()
Every caller of pan_shader_lower_texture() immediatly called pan_shader_postprocess() and every caller of pan_shader_postprocess() lowered textures except blend shaders and those don't texture anyway. Reviewed-by: Olivia Lee <olivia.lee@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38265>
-rw-r--r--src/gallium/drivers/panfrost/pan_fb_preload.c1
-rw-r--r--src/gallium/drivers/panfrost/pan_shader.c2
-rw-r--r--src/panfrost/clc/pan_compile.c1
-rw-r--r--src/panfrost/compiler/bifrost_compile.c2
-rw-r--r--src/panfrost/lib/pan_shader.h9
-rw-r--r--src/panfrost/midgard/midgard_compile.c2
-rw-r--r--src/panfrost/vulkan/panvk_vX_cmd_fb_preload.c1
-rw-r--r--src/panfrost/vulkan/panvk_vX_shader.c1
8 files changed, 4 insertions, 15 deletions
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
@@ -84,15 +84,6 @@ pan_shader_lower_texture_early(nir_shader *nir, unsigned gpu_id)
}
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)