[PATCH vkd3d 2/4] vkd3d: Create one fence worker thread per command queue.
Henri Verbeet
hverbeet at gmail.com
Thu Apr 28 11:06:48 CDT 2022
On Tue, 26 Apr 2022 at 15:48, Conor McCarthy <cmccarthy at codeweavers.com> wrote:
> @@ -525,25 +427,15 @@ HRESULT vkd3d_fence_worker_start(struct vkd3d_fence_worker *worker,
> TRACE("worker %p.\n", worker);
>
> worker->should_exit = false;
> + worker->queue = queue;
> worker->device = device;
>
> - worker->enqueued_fence_count = 0;
> - worker->enqueued_fences = NULL;
> - worker->enqueued_fences_size = 0;
> -
> worker->fence_count = 0;
> -
> - worker->vk_fences = NULL;
> - worker->vk_fences_size = 0;
> worker->fences = NULL;
> worker->fences_size = 0;
> - worker->vk_semaphores = NULL;
> - worker->vk_semaphores_size = 0;
> - worker->semaphore_wait_values = NULL;
> - worker->semaphore_wait_values_size = 0;
>
> - worker->wait_for_gpu_fences = device->use_timeline_semaphores
> - ? vkd3d_wait_for_gpu_timeline_semaphores : vkd3d_wait_for_gpu_fences;
> + worker->wait_for_gpu_fence = device->vk_info.KHR_timeline_semaphore
> + ? vkd3d_wait_for_gpu_timeline_semaphore : vkd3d_wait_for_gpu_fence;
I think the original "device->use_timeline_semaphores" check was
correct. As-is, this will try to use
vkd3d_wait_for_gpu_timeline_semaphore() on fences without a timeline
semaphore for me, with predictable results.
More information about the wine-devel
mailing list