From fd55eea2ba7da057bd444cb8b7402fae85b1f247 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 8 Feb 2021 10:58:39 +1000 Subject: [PATCH] lavapipe: add calibrated timestamp support This is a bit of a lie, but it's enough to get zink support for timer queries to work. Acked-By: Mike Blumenkrantz Part-of: --- src/gallium/frontends/lavapipe/lvp_device.c | 39 +++++++++++++++++++ .../frontends/lavapipe/lvp_extensions.py | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c index 1839bcc6448..af130be3c69 100644 --- a/src/gallium/frontends/lavapipe/lvp_device.c +++ b/src/gallium/frontends/lavapipe/lvp_device.c @@ -1698,3 +1698,42 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceExternalSemaphoreProperties( pExternalSemaphoreProperties->compatibleHandleTypes = 0; pExternalSemaphoreProperties->externalSemaphoreFeatures = 0; } + +static const VkTimeDomainEXT lvp_time_domains[] = { + VK_TIME_DOMAIN_DEVICE_EXT, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, +}; + +VKAPI_ATTR VkResult VKAPI_CALL lvp_GetPhysicalDeviceCalibrateableTimeDomainsEXT( + VkPhysicalDevice physicalDevice, + uint32_t *pTimeDomainCount, + VkTimeDomainEXT *pTimeDomains) +{ + int d; + VK_OUTARRAY_MAKE_TYPED(VkTimeDomainEXT, out, pTimeDomains, + pTimeDomainCount); + + for (d = 0; d < ARRAY_SIZE(lvp_time_domains); d++) { + vk_outarray_append_typed(VkTimeDomainEXT, &out, i) { + *i = lvp_time_domains[d]; + } + } + + return vk_outarray_status(&out); +} + +VKAPI_ATTR VkResult VKAPI_CALL lvp_GetCalibratedTimestampsEXT( + VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoEXT *pTimestampInfos, + uint64_t *pTimestamps, + uint64_t *pMaxDeviation) +{ + *pMaxDeviation = 1; + + uint64_t now = os_time_get_nano(); + for (unsigned i = 0; i < timestampCount; i++) { + pTimestamps[i] = now; + } + return VK_SUCCESS; +} diff --git a/src/gallium/frontends/lavapipe/lvp_extensions.py b/src/gallium/frontends/lavapipe/lvp_extensions.py index b20e9ba2cd6..54b38cf8df9 100644 --- a/src/gallium/frontends/lavapipe/lvp_extensions.py +++ b/src/gallium/frontends/lavapipe/lvp_extensions.py @@ -107,7 +107,7 @@ EXTENSIONS = [ Extension('VK_KHR_xlib_surface', 6, 'VK_USE_PLATFORM_XLIB_KHR'), Extension('VK_EXT_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'), Extension('VK_EXT_buffer_device_address', 1, False), - Extension('VK_EXT_calibrated_timestamps', 1, False), + Extension('VK_EXT_calibrated_timestamps', 1, True), Extension('VK_EXT_conditional_rendering', 1, True), Extension('VK_EXT_conservative_rasterization', 1, False), Extension('VK_EXT_debug_report', 9, True),