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_waiting_fence *old_fences, *cur_fences = NULL;
|
||||||
struct vkd3d_fence_worker *worker = arg;
|
struct vkd3d_fence_worker *worker = arg;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
bool timeline;
|
||||||
|
|
||||||
vkd3d_set_thread_name("vkd3d_fence");
|
vkd3d_set_thread_name("vkd3d_fence");
|
||||||
|
|
||||||
|
timeline = worker->device->vk_info.KHR_timeline_semaphore;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
vkd3d_mutex_lock(&worker->mutex);
|
vkd3d_mutex_lock(&worker->mutex);
|
||||||
@ -357,7 +360,12 @@ static void *vkd3d_fence_worker_main(void *arg)
|
|||||||
vkd3d_mutex_unlock(&worker->mutex);
|
vkd3d_mutex_unlock(&worker->mutex);
|
||||||
|
|
||||||
for (i = 0; i < cur_fence_count; ++i)
|
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);
|
vkd3d_free(cur_fences);
|
||||||
@ -379,9 +387,6 @@ static HRESULT vkd3d_fence_worker_start(struct vkd3d_fence_worker *worker,
|
|||||||
worker->fences = NULL;
|
worker->fences = NULL;
|
||||||
worker->fences_size = 0;
|
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_mutex_init(&worker->mutex);
|
||||||
|
|
||||||
vkd3d_cond_init(&worker->cond);
|
vkd3d_cond_init(&worker->cond);
|
||||||
|
@ -242,8 +242,6 @@ struct vkd3d_fence_worker
|
|||||||
struct vkd3d_waiting_fence *fences;
|
struct vkd3d_waiting_fence *fences;
|
||||||
size_t fences_size;
|
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 vkd3d_queue *queue;
|
||||||
struct d3d12_device *device;
|
struct d3d12_device *device;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user