From: Dave Airlie Date: Thu, 18 Feb 2021 01:19:16 +0000 (-0800) Subject: lavapipe: use os_time for timing related things X-Git-Tag: upstream/21.2.3~7575 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=44f76d5fc7630913eab7450b70719bc20588e6d7;p=platform%2Fupstream%2Fmesa.git lavapipe: use os_time for timing related things drop the use of the Linux code. Reviewed-by: Jesse Natalie Part-of: --- 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 {