aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Engestrom <[email protected]>2018-10-28 13:37:26 +0000
committerEric Engestrom <[email protected]>2019-03-11 10:49:36 +0000
commit1ee01d91c7e9bb0922b112c11a374283e2ca454b (patch)
tree18f192f0f8e59b5085474f43ea50cddd415586c3
parent7bb34ecff9833e0b490e90ab04fdaa6342eadc1b (diff)
wsi: deduplicate get_current_time() functions between display and x11
Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
-rw-r--r--src/vulkan/wsi/wsi_common.c9
-rw-r--r--src/vulkan/wsi/wsi_common.h3
-rw-r--r--src/vulkan/wsi/wsi_common_display.c16
-rw-r--r--src/vulkan/wsi/wsi_common_x11.c14
4 files changed, 18 insertions, 24 deletions
diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c
index 783b954a5c5..3cba0a4b06e 100644
--- a/src/vulkan/wsi/wsi_common.c
+++ b/src/vulkan/wsi/wsi_common.c
@@ -26,6 +26,7 @@
#include "util/macros.h"
#include "vk_util.h"
+#include <time.h>
#include <unistd.h>
#include <xf86drm.h>
@@ -1021,3 +1022,11 @@ wsi_common_queue_present(const struct wsi_device *wsi,
return final_result;
}
+
+uint64_t
+wsi_common_get_current_time(void)
+{
+ struct timespec current;
+ clock_gettime(CLOCK_MONOTONIC, &current);
+ return current.tv_nsec + current.tv_sec * 1000000000ull;
+}
diff --git a/src/vulkan/wsi/wsi_common.h b/src/vulkan/wsi/wsi_common.h
index 8851855fa28..e693e2be425 100644
--- a/src/vulkan/wsi/wsi_common.h
+++ b/src/vulkan/wsi/wsi_common.h
@@ -243,4 +243,7 @@ wsi_common_queue_present(const struct wsi_device *wsi,
int queue_family_index,
const VkPresentInfoKHR *pPresentInfo);
+uint64_t
+wsi_common_get_current_time(void);
+
#endif
diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c
index 7ff9d77d88b..987b6dd715a 100644
--- a/src/vulkan/wsi/wsi_common_display.c
+++ b/src/vulkan/wsi/wsi_common_display.c
@@ -171,17 +171,9 @@ wsi_display_mode_refresh(struct wsi_display_mode *wsi)
(double) MAX2(wsi->vscan, 1));
}
-static uint64_t wsi_get_current_monotonic(void)
-{
- struct timespec tv;
-
- clock_gettime(CLOCK_MONOTONIC, &tv);
- return tv.tv_nsec + tv.tv_sec*1000000000ull;
-}
-
static uint64_t wsi_rel_to_abs_time(uint64_t rel_time)
{
- uint64_t current_time = wsi_get_current_monotonic();
+ uint64_t current_time = wsi_common_get_current_time();
/* check for overflow */
if (rel_time > UINT64_MAX - current_time)
@@ -1436,8 +1428,8 @@ wsi_display_fence_wait(struct wsi_fence *fence_wsi, uint64_t timeout)
wsi_display_debug("%9lu wait fence %lu %ld\n",
pthread_self(), fence->sequence,
- (int64_t) (timeout - wsi_get_current_monotonic()));
- wsi_display_debug_code(uint64_t start_ns = wsi_get_current_monotonic());
+ (int64_t) (timeout - wsi_common_get_current_time()));
+ wsi_display_debug_code(uint64_t start_ns = wsi_common_get_current_time());
pthread_mutex_lock(&wsi->wait_mutex);
VkResult result;
@@ -1469,7 +1461,7 @@ wsi_display_fence_wait(struct wsi_fence *fence_wsi, uint64_t timeout)
pthread_mutex_unlock(&wsi->wait_mutex);
wsi_display_debug("%9lu fence wait %f ms\n",
pthread_self(),
- ((int64_t) (wsi_get_current_monotonic() - start_ns)) /
+ ((int64_t) (wsi_common_get_current_time() - start_ns)) /
1.0e6);
return result;
}
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
index 52d820869a8..0aa71ca6f2e 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -835,19 +835,9 @@ x11_handle_dri3_present_event(struct x11_swapchain *chain,
}
-static uint64_t wsi_get_current_time(void)
-{
- uint64_t current_time;
- struct timespec tv;
-
- clock_gettime(CLOCK_MONOTONIC, &tv);
- current_time = tv.tv_nsec + tv.tv_sec*1000000000ull;
- return current_time;
-}
-
static uint64_t wsi_get_absolute_timeout(uint64_t timeout)
{
- uint64_t current_time = wsi_get_current_time();
+ uint64_t current_time = wsi_common_get_current_time();
timeout = MIN2(UINT64_MAX - current_time, timeout);
@@ -898,7 +888,7 @@ x11_acquire_next_image_poll_x11(struct x11_swapchain *chain,
/* If a non-special event happens, the fd will still
* poll. So recalculate the timeout now just in case.
*/
- uint64_t current_time = wsi_get_current_time();
+ uint64_t current_time = wsi_common_get_current_time();
if (atimeout > current_time)
timeout = atimeout - current_time;
else