mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-01-28 13:05:02 -08:00
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:
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
@ -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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user