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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36352>
This commit is contained in:
Jose Maria Casanova Crespo 2025-07-24 15:14:00 +02:00 committed by Marge Bot
parent 928c9c618d
commit 591a894b94
2 changed files with 5 additions and 2 deletions

View file

@ -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,

View file

@ -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 &&