panvk/csf: use DEFERRED_FLUSH for fragment job cache flush

The correct dependence is cs_flush_caches.cs_defer.signal to
signal cs_sync32_set.cs_defer.wait in occulusion query path.

Fixes: 443ddac ("panvk/csf: merge v10 and v11 paths in
issue_fragment_jobs")

Fixed: many random fail cases in VK-GL-CTS 1.4.4.2, eg.
dEQP-VK.query_pool.occlusion_query.get_results_conservative
_size_64_wait_query_without_availability_draw_points_clear_color

Signed-off-by: Ryan Zhang <ryan.zhang@nxp.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
(cherry picked from commit 93b58064f7)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40488>
This commit is contained in:
Ryan Zhang 2026-03-12 19:54:27 +08:00 committed by Eric Engestrom
parent 5bbdfb0da5
commit ae58d184b0
2 changed files with 5 additions and 1 deletions

View file

@ -1044,7 +1044,7 @@
"description": "panvk/csf: use DEFERRED_FLUSH for fragment job cache flush",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "443ddace70695bd490d959d783e22ad49c69ccb2",
"notes": null

View file

@ -3622,12 +3622,16 @@ issue_fragment_jobs(struct panvk_cmd_buffer *cmdbuf)
* indirect mode */
cs_set_state_imm32(b, MALI_CS_SET_STATE_TYPE_SB_SEL_DEFERRED,
SB_ID(DEFERRED_FLUSH));
#else
async = cs_defer(SB_WAIT_ITER(sb_upd_ctx.cur_sb), SB_ID(DEFERRED_FLUSH));
#endif
cs_flush_caches(b, MALI_CS_FLUSH_MODE_CLEAN, MALI_CS_FLUSH_MODE_CLEAN,
MALI_CS_OTHER_FLUSH_MODE_NONE, flush_id, async);
#if PAN_ARCH >= 11
cs_set_state_imm32(b, MALI_CS_SET_STATE_TYPE_SB_SEL_DEFERRED,
SB_ID(DEFERRED_SYNC));
#else
async = cs_defer(SB_WAIT_ITER(sb_upd_ctx.cur_sb), SB_ID(DEFERRED_SYNC));
#endif
cs_load64_to(b, oq_chain, cs_subqueue_ctx_reg(b),