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->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_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),
|
||||
|
Reference in New Issue
Block a user