diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 710d0c9606d..ae89f5589c7 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -26,6 +26,7 @@ #include "util/u_debug.h" #include "util/macros.h" #include "util/os_file.h" +#include "util/os_time.h" #include "util/xmlconfig.h" #include "vk_device.h" #include "vk_fence.h" @@ -325,6 +326,32 @@ configure_image(const struct wsi_swapchain *chain, } } +#if defined(HAVE_PTHREAD) && !defined(_WIN32) +bool +wsi_init_pthread_cond_monotonic(pthread_cond_t *cond) +{ + pthread_condattr_t condattr; + bool ret = false; + + if (pthread_condattr_init(&condattr) != 0) + goto fail_attr_init; + + if (pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC) != 0) + goto fail_attr_set; + + if (pthread_cond_init(cond, &condattr) != 0) + goto fail_cond_init; + + ret = true; + +fail_cond_init: +fail_attr_set: + pthread_condattr_destroy(&condattr); +fail_attr_init: + return ret; +} +#endif + VkResult wsi_swapchain_init(const struct wsi_device *wsi, struct wsi_swapchain *chain, diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c index 8dd97274258..ba159933064 100644 --- a/src/vulkan/wsi/wsi_common_display.c +++ b/src/vulkan/wsi/wsi_common_display.c @@ -2015,31 +2015,6 @@ fail_init_images: return result; } -static bool -wsi_init_pthread_cond_monotonic(pthread_cond_t *cond) -{ - pthread_condattr_t condattr; - bool ret = false; - - if (pthread_condattr_init(&condattr) != 0) - goto fail_attr_init; - - if (pthread_condattr_setclock(&condattr, CLOCK_MONOTONIC) != 0) - goto fail_attr_set; - - if (pthread_cond_init(cond, &condattr) != 0) - goto fail_cond_init; - - ret = true; - -fail_cond_init: -fail_attr_set: - pthread_condattr_destroy(&condattr); -fail_attr_init: - return ret; -} - - /* * Local version fo the libdrm helper. Added to avoid depending on bleeding * edge version of the library. diff --git a/src/vulkan/wsi/wsi_common_private.h b/src/vulkan/wsi/wsi_common_private.h index 483b313888f..1b1ed138465 100644 --- a/src/vulkan/wsi/wsi_common_private.h +++ b/src/vulkan/wsi/wsi_common_private.h @@ -336,4 +336,9 @@ wsi_display_setup_syncobj_fd(struct wsi_device *wsi_device, VK_DEFINE_NONDISP_HANDLE_CASTS(wsi_swapchain, base, VkSwapchainKHR, VK_OBJECT_TYPE_SWAPCHAIN_KHR) +#if defined(HAVE_PTHREAD) && !defined(_WIN32) +bool +wsi_init_pthread_cond_monotonic(pthread_cond_t *cond); +#endif + #endif /* WSI_COMMON_PRIVATE_H */