From 71238fb4d81478e7a599dc3268a37d8066d0303e Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Wed, 5 Mar 2025 17:11:51 +0100 Subject: [PATCH] ir3: Detect FS that write only color without other side effects Signed-off-by: Danylo Piliaiev Part-of: --- src/freedreno/ir3/ir3_compiler_nir.c | 3 +++ src/freedreno/ir3/ir3_shader.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 946c4250aa4..328e88323e4 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -6043,6 +6043,9 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler, if (so->type == MESA_SHADER_FRAGMENT) { so->empty = is_empty(ir) && so->num_sampler_prefetch == 0; + so->writes_only_color = !ctx->s->info.writes_memory && !so->has_kill && + !so->writes_pos && !so->writes_smask && + !so->writes_stencilref; } if (gl_shader_stage_is_compute(so->type)) { diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h index 12faf9310da..38b580cd2fd 100644 --- a/src/freedreno/ir3/ir3_shader.h +++ b/src/freedreno/ir3/ir3_shader.h @@ -854,6 +854,8 @@ struct ir3_shader_variant { bool post_depth_coverage; bool empty; + /* Doesn't have side-effects, no kill, no D/S write, etc. */ + bool writes_only_color; /* Are we using split or merged register file? */ bool mergedregs;