From 0df1fcd0b384d4da2e90dbc330c564f74a342762 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 17 Sep 2025 07:57:25 -0400 Subject: [PATCH] zink: call post_submit directly from submit_queue this should all happen as a unit to ensure the batch state is not modified before post_submit mechanics trigger Part-of: --- src/gallium/drivers/zink/zink_batch.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 3655b2111f5..5a4d2414a16 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -603,11 +603,9 @@ zink_start_batch(struct zink_context *ctx) /* common operations to run post submit; split out for clarity */ static void -post_submit(void *data, void *gdata, int thread_index) +post_submit(struct zink_batch_state *bs, struct zink_screen *screen) { MESA_TRACE_FUNC(); - struct zink_batch_state *bs = data; - struct zink_screen *screen = zink_screen(bs->ctx->base.screen); if (bs->is_device_lost) { if (bs->ctx->reset.reset) @@ -822,6 +820,8 @@ submit_queue(void *data, void *gdata, int thread_index) end: cnd_broadcast(&bs->usage.flush); + post_submit(bs, screen); + p_atomic_set(&bs->fence.submitted, true); simple_mtx_lock(&screen->active_batch_states_lock); @@ -930,10 +930,9 @@ zink_end_batch(struct zink_context *ctx) if (screen->threaded_submit) { util_queue_add_job(&screen->flush_queue, bs, &bs->flush_completed, - submit_queue, post_submit, 0); + submit_queue, NULL, 0); } else { submit_queue(bs, NULL, 0); - post_submit(bs, NULL, 0); } if (!(ctx->flags & ZINK_CONTEXT_COPY_ONLY) && screen->renderdoc_capturing && !screen->renderdoc_capture_all &&