From 591a894b94dd878b17bf963d07101394a0214888 Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Thu, 24 Jul 2025 15:14:00 +0200 Subject: [PATCH] v3d: Mark DIRTY_ZSA if disable_ez is changed from FS. We need to update the CFG_BITS packet if the early_fragment_test status changed vs previous draw call. But we don't need to update it every time the FS is changed, we only need to update it when disable_ez value is different from previous FS. Part-of: --- src/gallium/drivers/v3d/v3d_program.c | 4 ++++ src/gallium/drivers/v3d/v3dx_emit.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/v3d/v3d_program.c b/src/gallium/drivers/v3d/v3d_program.c index c99c2ad5799..5940b212391 100644 --- a/src/gallium/drivers/v3d/v3d_program.c +++ b/src/gallium/drivers/v3d/v3d_program.c @@ -720,6 +720,10 @@ v3d_update_compiled_fs(struct v3d_context *v3d, uint8_t prim_mode) old_fs->prog_data.fs->centroid_flags) { v3d->dirty |= V3D_DIRTY_CENTROID_FLAGS; } + if (v3d->prog.fs->prog_data.fs->disable_ez != + old_fs->prog_data.fs->disable_ez) { + v3d->dirty |= V3D_DIRTY_ZSA; + } } if (old_fs && memcmp(v3d->prog.fs->prog_data.fs->input_slots, diff --git a/src/gallium/drivers/v3d/v3dx_emit.c b/src/gallium/drivers/v3d/v3dx_emit.c index 0e8194e0f99..3ec0310c563 100644 --- a/src/gallium/drivers/v3d/v3dx_emit.c +++ b/src/gallium/drivers/v3d/v3dx_emit.c @@ -289,8 +289,7 @@ v3dX(emit_state)(struct pipe_context *pctx) if (v3d->dirty & (V3D_DIRTY_RASTERIZER | V3D_DIRTY_ZSA | - V3D_DIRTY_BLEND | - V3D_DIRTY_COMPILED_FS)) { + V3D_DIRTY_BLEND)) { cl_emit(&job->bcl, CFG_BITS, config) { config.enable_forward_facing_primitive = !rasterizer_discard &&