diff --git a/src/virtio/vulkan/vn_command_buffer.c b/src/virtio/vulkan/vn_command_buffer.c index e8ed22e59a0..7edebe6ff60 100644 --- a/src/virtio/vulkan/vn_command_buffer.c +++ b/src/virtio/vulkan/vn_command_buffer.c @@ -696,11 +696,13 @@ vn_CreateCommandPool(VkDevice device, static inline void vn_recycle_query_feedback_cmd(struct vn_command_buffer *cmd) { + simple_mtx_lock(&cmd->linked_query_feedback_cmd->pool->mutex); vn_ResetCommandBuffer( vn_command_buffer_to_handle(cmd->linked_query_feedback_cmd->cmd), 0); list_add(&cmd->linked_query_feedback_cmd->head, &cmd->linked_query_feedback_cmd->pool->free_query_feedback_cmds); cmd->linked_query_feedback_cmd = NULL; + simple_mtx_unlock(&cmd->linked_query_feedback_cmd->pool->mutex); } void diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c index 7d716788e5d..ef9c38a8a53 100644 --- a/src/virtio/vulkan/vn_queue.c +++ b/src/virtio/vulkan/vn_queue.c @@ -999,12 +999,14 @@ vn_queue_submission_cleanup(struct vn_queue_submission *submit) const VkAllocationCallbacks *alloc = &queue->base.base.base.device->alloc; if (submit->recycle_query_feedback_cmd) { + simple_mtx_lock(&submit->recycle_query_feedback_cmd->pool->mutex); vn_ResetCommandBuffer( vn_command_buffer_to_handle(submit->recycle_query_feedback_cmd->cmd), 0); list_add( &submit->recycle_query_feedback_cmd->head, &submit->recycle_query_feedback_cmd->pool->free_query_feedback_cmds); + simple_mtx_unlock(&submit->recycle_query_feedback_cmd->pool->mutex); } /* TODO clean up pending src feedbacks on failure? */