From 53484dc64afb46a2a99a0410a3bf9be77dd47c29 Mon Sep 17 00:00:00 2001 From: Ella Stanforth Date: Fri, 21 Mar 2025 10:05:44 +0000 Subject: [PATCH] v3d: Fix fbfetch with discards. We can't do earlyz_with_discard when using fbfetch as we can have TLB reads that occur before the discard. This can result in implicit Z writes which make the setmsf instruction emitted as a result of the discard invalid. Fixes: 332b313547f ("v3d: enable framebuffer fetch") Reviewed-by: Jose Maria Casanova Crespo Reviewed-by: Iago Toral Quiroga Part-of: --- src/gallium/drivers/v3d/v3d_program.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gallium/drivers/v3d/v3d_program.c b/src/gallium/drivers/v3d/v3d_program.c index fc59dbd7705..a0136fffff5 100644 --- a/src/gallium/drivers/v3d/v3d_program.c +++ b/src/gallium/drivers/v3d/v3d_program.c @@ -675,6 +675,7 @@ v3d_update_compiled_fs(struct v3d_context *v3d, uint8_t prim_mode) key->swap_color_rb = v3d->swap_color_rb; key->can_earlyz_with_discard = s->info.fs.uses_discard && + !s->info.fs.uses_fbfetch_output && (!v3d->zsa || !job->zsbuf || !v3d->zsa->base.depth_enabled || !v3d->zsa->base.depth_writemask) && !(v3d->active_queries && v3d->current_oq);