zink: don't access ctx in submit_queue

this can be executed from a thread

Fixes: 63e17ccc0a ("zink: rework sparse semaphore waits")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36643>
(cherry picked from commit f5f7a5f801)
This commit is contained in:
Mike Blumenkrantz 2025-08-07 09:43:23 -04:00 committed by Eric Engestrom
parent bf77a35016
commit 8476bd5002
2 changed files with 3 additions and 3 deletions

View file

@ -6144,7 +6144,7 @@
"description": "zink: don't access ctx in submit_queue",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "63e17ccc0a2ed5e762aedfa71d9133672e77aa24",
"notes": null

View file

@ -625,7 +625,7 @@ submit_queue(void *data, void *gdata, int thread_index)
for (unsigned i = 0; i < ARRAY_SIZE(si); i++)
si[i].sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
if (bs->sparse_semaphore)
util_dynarray_append(&ctx->bs->acquires, VkSemaphore, bs->sparse_semaphore);
util_dynarray_append(&bs->acquires, VkSemaphore, bs->sparse_semaphore);
si[ZINK_SUBMIT_WAIT_ACQUIRE].waitSemaphoreCount = util_dynarray_num_elements(&bs->acquires, VkSemaphore);
si[ZINK_SUBMIT_WAIT_ACQUIRE].pWaitSemaphores = bs->acquires.data;
while (util_dynarray_num_elements(&bs->acquire_flags, VkPipelineStageFlags) < si[ZINK_SUBMIT_WAIT_ACQUIRE].waitSemaphoreCount) {
@ -784,7 +784,7 @@ submit_queue(void *data, void *gdata, int thread_index)
_mesa_set_clear(&bs->dmabuf_exports, NULL);
if (bs->sparse_semaphore)
(void)util_dynarray_pop(&ctx->bs->acquires, VkSemaphore);
(void)util_dynarray_pop(&bs->acquires, VkSemaphore);
bs->usage.submit_count++;
end: