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;