From 44f76d5fc7630913eab7450b70719bc20588e6d7 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 17 Feb 2021 17:19:16 -0800 Subject: [PATCH] lavapipe: use os_time for timing related things drop the use of the Linux code. Reviewed-by: Jesse Natalie Part-of: --- src/gallium/frontends/lavapipe/lvp_device.c | 9 ++------- src/gallium/frontends/lavapipe/lvp_private.h | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c index bbd575b..1839bcc 100644 --- a/src/gallium/frontends/lavapipe/lvp_device.c +++ b/src/gallium/frontends/lavapipe/lvp_device.c @@ -997,13 +997,8 @@ static VkResult queue_wait_idle(struct lvp_queue *queue, uint64_t timeout) while (p_atomic_read(&queue->count)) os_time_sleep(100); else { - struct timespec t, current; - clock_gettime(CLOCK_MONOTONIC, ¤t); - timespec_add_nsec(&t, ¤t, timeout); - bool timedout = false; - while (p_atomic_read(&queue->count) && !(timedout = timespec_passed(CLOCK_MONOTONIC, &t))) - os_time_sleep(10); - if (timedout) + int64_t atime = os_time_get_absolute_timeout(timeout); + if (!os_wait_until_zero_abs_timeout(&queue->count, atime)) return VK_TIMEOUT; } return VK_SUCCESS; diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index 1dd90d7..ac651cf 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -244,7 +244,7 @@ struct lvp_queue { mtx_t m; cnd_t new_work; struct list_head workqueue; - uint32_t count; + volatile int count; }; struct lvp_queue_work { -- 2.7.4