Merge 'Set present timing feature false if timestamp querying is not supported' into 'main'

See merge request mesa/vulkan-wsi-layer!155
This commit is contained in:
Dennis Tsiang 2025-05-15 12:36:48 +00:00
commit c3b192ac2f

View file

@ -469,10 +469,10 @@ VWL_VKAPI_EXPORT wsi_layer_vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLay
} }
VWL_VKAPI_CALL(void) VWL_VKAPI_CALL(void)
wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physical_device,
VkPhysicalDeviceFeatures2 *pFeatures) VWL_API_POST VkPhysicalDeviceFeatures2 *pFeatures) VWL_API_POST
{ {
auto &instance = layer::instance_private_data::get(physicalDevice); auto &instance = layer::instance_private_data::get(physical_device);
auto *swapchain_maintenance1_features = util::find_extension<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT>( auto *swapchain_maintenance1_features = util::find_extension<VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT>(
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT, pFeatures->pNext); VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT, pFeatures->pNext);
@ -490,7 +490,7 @@ wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
} }
#endif #endif
instance.disp.GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures); instance.disp.GetPhysicalDeviceFeatures2KHR(physical_device, pFeatures);
auto *image_compression_control_swapchain_features = auto *image_compression_control_swapchain_features =
util::find_extension<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>( util::find_extension<VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>(
@ -498,7 +498,7 @@ wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
if (image_compression_control_swapchain_features != nullptr) if (image_compression_control_swapchain_features != nullptr)
{ {
image_compression_control_swapchain_features->imageCompressionControlSwapchain = image_compression_control_swapchain_features->imageCompressionControlSwapchain =
instance.has_image_compression_support(physicalDevice); instance.has_image_compression_support(physical_device);
} }
auto *present_id_features = util::find_extension<VkPhysicalDevicePresentIdFeaturesKHR>( auto *present_id_features = util::find_extension<VkPhysicalDevicePresentIdFeaturesKHR>(
@ -508,7 +508,7 @@ wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
present_id_features->presentId = VK_TRUE; present_id_features->presentId = VK_TRUE;
} }
wsi::set_swapchain_maintenance1_state(physicalDevice, swapchain_maintenance1_features); wsi::set_swapchain_maintenance1_state(physical_device, swapchain_maintenance1_features);
#if VULKAN_WSI_LAYER_EXPERIMENTAL #if VULKAN_WSI_LAYER_EXPERIMENTAL
if (present_wait_features != nullptr) if (present_wait_features != nullptr)
@ -524,7 +524,14 @@ wsi_layer_vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, pFeatures->pNext); VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, pFeatures->pNext);
if (present_timing_features != nullptr) if (present_timing_features != nullptr)
{ {
present_timing_features->presentTiming = VK_TRUE; VkPhysicalDeviceProperties physical_device_properties = {};
instance.disp.GetPhysicalDeviceProperties(physical_device, &physical_device_properties);
/* The presentTimingSupported is set based on whether the device can support timestamp queries
* and the graphics, compute pipelines can support time stamps. Only the graphics and compute pipelines
* are checked here which means queue present if happens on a different queue family,
* the time stamps might not be supported. */
present_timing_features->presentTiming = ((physical_device_properties.limits.timestampPeriod != 0) &&
physical_device_properties.limits.timestampComputeAndGraphics);
present_timing_features->presentAtAbsoluteTime = VK_TRUE; present_timing_features->presentAtAbsoluteTime = VK_TRUE;
present_timing_features->presentAtRelativeTime = VK_TRUE; present_timing_features->presentAtRelativeTime = VK_TRUE;
} }