From 3b80d8ed157123aaed0e90550caaa9d94d8e5ef4 Mon Sep 17 00:00:00 2001 From: Cam Mannett Date: Sat, 16 Aug 2025 10:04:00 +0100 Subject: [PATCH] Disable VK_EXT_fragment_density_map2 if no non-sampled image support VK_EXT_fragment_density_map2 and VK_QCOM_fragment_density_map_offset depend on VK_EXT_fragment_density_map, so if RD disables it due to lack of VkPhysicalDeviceFragmentDensityMapFeaturesEXT::fragmentDensityMapNonSubsampledImages support (common on Mali) it needs to disable the others as well. --- renderdoc/driver/vulkan/vk_core.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 4b2246fef..0641f94a7 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -2079,7 +2079,11 @@ VkResult WrappedVulkan::FilterDeviceExtensionProperties(VkPhysicalDevice physDev // extensions with conditional support filtered.removeIf([instDevInfo, physDev](const VkExtensionProperties &ext) { - if(!strcmp(ext.extensionName, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME)) + // Anything that depends on VK_EXT_fragment_density_map will need disabling if the + // fragmentDensityMapNonSubsampledImages feature is not supported + if(!strcmp(ext.extensionName, VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME) || + !strcmp(ext.extensionName, VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME) || + !strcmp(ext.extensionName, VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) { // require GPDP2 if(instDevInfo->ext_KHR_get_physical_device_properties2) @@ -2099,8 +2103,8 @@ VkResult WrappedVulkan::FilterDeviceExtensionProperties(VkPhysicalDevice physDev { RDCWARN( "VkPhysicalDeviceFragmentDensityMapFeaturesEXT." - "fragmentDensityMapNonSubsampledImages is " - "false, can't support capture of VK_EXT_fragment_density_map"); + "fragmentDensityMapNonSubsampledImages is false, can't support capture of %s", + ext.extensionName); } }