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 <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8909>
This commit is contained in:
@@ -1698,3 +1698,42 @@ VKAPI_ATTR void VKAPI_CALL lvp_GetPhysicalDeviceExternalSemaphoreProperties(
|
|||||||
pExternalSemaphoreProperties->compatibleHandleTypes = 0;
|
pExternalSemaphoreProperties->compatibleHandleTypes = 0;
|
||||||
pExternalSemaphoreProperties->externalSemaphoreFeatures = 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;
|
||||||
|
}
|
||||||
|
@@ -107,7 +107,7 @@ EXTENSIONS = [
|
|||||||
Extension('VK_KHR_xlib_surface', 6, 'VK_USE_PLATFORM_XLIB_KHR'),
|
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_acquire_xlib_display', 1, 'VK_USE_PLATFORM_XLIB_XRANDR_EXT'),
|
||||||
Extension('VK_EXT_buffer_device_address', 1, False),
|
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_conditional_rendering', 1, True),
|
||||||
Extension('VK_EXT_conservative_rasterization', 1, False),
|
Extension('VK_EXT_conservative_rasterization', 1, False),
|
||||||
Extension('VK_EXT_debug_report', 9, True),
|
Extension('VK_EXT_debug_report', 9, True),
|
||||||
|
Reference in New Issue
Block a user