Module: Mesa Branch: main Commit: ac20c70e9da2f3b12131d0d27d7499db1b8752ad URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ac20c70e9da2f3b12131d0d27d7499db1b8752ad
Author: Samuel Pitoiset <[email protected]> Date: Tue Dec 5 18:18:27 2023 +0100 radv: promote EXT_calibrated_timestamps to KHR All functionality are similar. Signed-off-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26596> --- docs/relnotes/new_features.txt | 1 + src/amd/vulkan/radv_device.c | 10 +++++----- src/amd/vulkan/radv_physical_device.c | 27 +++++++++++++++++---------- src/amd/vulkan/radv_sqtt.c | 12 ++++++------ 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/docs/relnotes/new_features.txt b/docs/relnotes/new_features.txt index a920b7b888b..b5acc8181ca 100644 --- a/docs/relnotes/new_features.txt +++ b/docs/relnotes/new_features.txt @@ -16,3 +16,4 @@ GL_ARB_indirect_parameters on Asahi GL_ARB_viewport_array on Asahi GL_ARB_fragment_layer_viewport on Asahi GL_ARB_cull_distance on Asahi +VK_KHR_calibrated_timestamps on RADV diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index e13c6fd38d6..5b5451401e8 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -2172,8 +2172,8 @@ radv_GetMemoryFdPropertiesKHR(VkDevice _device, VkExternalMemoryHandleTypeFlagBi } VKAPI_ATTR VkResult VKAPI_CALL -radv_GetCalibratedTimestampsEXT(VkDevice _device, uint32_t timestampCount, - const VkCalibratedTimestampInfoEXT *pTimestampInfos, uint64_t *pTimestamps, +radv_GetCalibratedTimestampsKHR(VkDevice _device, uint32_t timestampCount, + const VkCalibratedTimestampInfoKHR *pTimestampInfos, uint64_t *pTimestamps, uint64_t *pMaxDeviation) { #ifndef _WIN32 @@ -2191,18 +2191,18 @@ radv_GetCalibratedTimestampsEXT(VkDevice _device, uint32_t timestampCount, for (d = 0; d < timestampCount; d++) { switch (pTimestampInfos[d].timeDomain) { - case VK_TIME_DOMAIN_DEVICE_EXT: + case VK_TIME_DOMAIN_DEVICE_KHR: pTimestamps[d] = device->ws->query_value(device->ws, RADEON_TIMESTAMP); uint64_t device_period = DIV_ROUND_UP(1000000, clock_crystal_freq); max_clock_period = MAX2(max_clock_period, device_period); break; - case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT: + case VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR: pTimestamps[d] = vk_clock_gettime(CLOCK_MONOTONIC); max_clock_period = MAX2(max_clock_period, 1); break; #ifdef CLOCK_MONOTONIC_RAW - case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT: + case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR: pTimestamps[d] = begin; break; #endif diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 7a5253f8b53..038369e5aa5 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -83,6 +83,13 @@ radv_NV_device_generated_commands_enabled(const struct radv_physical_device *dev return driQueryOptionb(&device->instance->dri_options, "radv_dgc"); } +static bool +radv_calibrated_timestamps_enabled(const struct radv_physical_device *pdevice) +{ + return RADV_SUPPORT_CALIBRATED_TIMESTAMPS && + !(pdevice->rad_info.family == CHIP_RAVEN || pdevice->rad_info.family == CHIP_RAVEN2); +} + static bool radv_is_conformant(const struct radv_physical_device *pdevice) { @@ -394,6 +401,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device .KHR_8bit_storage = true, .KHR_16bit_storage = true, .KHR_acceleration_structure = radv_enable_rt(device, false), + .KHR_calibrated_timestamps = radv_calibrated_timestamps_enabled(device), .KHR_cooperative_matrix = device->rad_info.gfx_level >= GFX11 && !device->use_llvm, .KHR_bind_memory2 = true, .KHR_buffer_device_address = true, @@ -482,8 +490,7 @@ radv_physical_device_get_supported_extensions(const struct radv_physical_device .EXT_attachment_feedback_loop_layout = true, .EXT_border_color_swizzle = device->rad_info.gfx_level >= GFX10, .EXT_buffer_device_address = true, - .EXT_calibrated_timestamps = RADV_SUPPORT_CALIBRATED_TIMESTAMPS && - !(device->rad_info.family == CHIP_RAVEN || device->rad_info.family == CHIP_RAVEN2), + .EXT_calibrated_timestamps = radv_calibrated_timestamps_enabled(device), .EXT_color_write_enable = true, .EXT_conditional_rendering = true, .EXT_conservative_rasterization = device->rad_info.gfx_level >= GFX9, @@ -2341,23 +2348,23 @@ radv_GetPhysicalDeviceMemoryProperties2(VkPhysicalDevice physicalDevice, radv_get_memory_budget_properties(physicalDevice, memory_budget); } -static const VkTimeDomainEXT radv_time_domains[] = { - VK_TIME_DOMAIN_DEVICE_EXT, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, +static const VkTimeDomainKHR radv_time_domains[] = { + VK_TIME_DOMAIN_DEVICE_KHR, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR, #ifdef CLOCK_MONOTONIC_RAW - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR, #endif }; VKAPI_ATTR VkResult VKAPI_CALL -radv_GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice, uint32_t *pTimeDomainCount, - VkTimeDomainEXT *pTimeDomains) +radv_GetPhysicalDeviceCalibrateableTimeDomainsKHR(VkPhysicalDevice physicalDevice, uint32_t *pTimeDomainCount, + VkTimeDomainKHR *pTimeDomains) { int d; - VK_OUTARRAY_MAKE_TYPED(VkTimeDomainEXT, out, pTimeDomains, pTimeDomainCount); + VK_OUTARRAY_MAKE_TYPED(VkTimeDomainKHR, out, pTimeDomains, pTimeDomainCount); for (d = 0; d < ARRAY_SIZE(radv_time_domains); d++) { - vk_outarray_append_typed(VkTimeDomainEXT, &out, i) + vk_outarray_append_typed(VkTimeDomainKHR, &out, i) { *i = radv_time_domains[d]; } diff --git a/src/amd/vulkan/radv_sqtt.c b/src/amd/vulkan/radv_sqtt.c index 8c4466de1e1..cafdf607a70 100644 --- a/src/amd/vulkan/radv_sqtt.c +++ b/src/amd/vulkan/radv_sqtt.c @@ -997,17 +997,17 @@ radv_get_calibrated_timestamps(struct radv_device *device, uint64_t *cpu_timesta uint64_t max_deviation; VkResult result; - const VkCalibratedTimestampInfoEXT timestamp_infos[2] = {{ - .sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, - .timeDomain = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, + const VkCalibratedTimestampInfoKHR timestamp_infos[2] = {{ + .sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, + .timeDomain = VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR, }, { - .sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, - .timeDomain = VK_TIME_DOMAIN_DEVICE_EXT, + .sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, + .timeDomain = VK_TIME_DOMAIN_DEVICE_KHR, }}; result = - radv_GetCalibratedTimestampsEXT(radv_device_to_handle(device), 2, timestamp_infos, timestamps, &max_deviation); + radv_GetCalibratedTimestampsKHR(radv_device_to_handle(device), 2, timestamp_infos, timestamps, &max_deviation); if (result != VK_SUCCESS) return result;
