vkd3d: Explicitly call the appropriate waiting function in the fence worker.

Avoid using an indirect call that makes the code less clear for no
real advantage.
This commit is contained in:
Giovanni Mascellani 2025-01-20 21:48:19 +01:00 committed by Henri Verbeet
parent f3f2880261
commit 5b2d62e59a
Notes: Henri Verbeet 2025-01-21 14:14:25 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1353
2 changed files with 9 additions and 6 deletions

View File

@ -327,9 +327,12 @@ static void *vkd3d_fence_worker_main(void *arg)
struct vkd3d_waiting_fence *old_fences, *cur_fences = NULL;
struct vkd3d_fence_worker *worker = arg;
unsigned int i;
bool timeline;
vkd3d_set_thread_name("vkd3d_fence");
timeline = worker->device->vk_info.KHR_timeline_semaphore;
for (;;)
{
vkd3d_mutex_lock(&worker->mutex);
@ -357,7 +360,12 @@ static void *vkd3d_fence_worker_main(void *arg)
vkd3d_mutex_unlock(&worker->mutex);
for (i = 0; i < cur_fence_count; ++i)
worker->wait_for_gpu_fence(worker, &cur_fences[i]);
{
if (timeline)
vkd3d_wait_for_gpu_timeline_semaphore(worker, &cur_fences[i]);
else
vkd3d_wait_for_gpu_fence(worker, &cur_fences[i]);
}
}
vkd3d_free(cur_fences);
@ -379,9 +387,6 @@ static HRESULT vkd3d_fence_worker_start(struct vkd3d_fence_worker *worker,
worker->fences = NULL;
worker->fences_size = 0;
worker->wait_for_gpu_fence = device->vk_info.KHR_timeline_semaphore
? vkd3d_wait_for_gpu_timeline_semaphore : vkd3d_wait_for_gpu_fence;
vkd3d_mutex_init(&worker->mutex);
vkd3d_cond_init(&worker->cond);

View File

@ -242,8 +242,6 @@ struct vkd3d_fence_worker
struct vkd3d_waiting_fence *fences;
size_t fences_size;
void (*wait_for_gpu_fence)(struct vkd3d_fence_worker *worker, const struct vkd3d_waiting_fence *enqueued_fence);
struct vkd3d_queue *queue;
struct d3d12_device *device;
};