diff --git a/docs/behind_scenes/vulkan_support.rst b/docs/behind_scenes/vulkan_support.rst index d917e2170..4f420a44d 100644 --- a/docs/behind_scenes/vulkan_support.rst +++ b/docs/behind_scenes/vulkan_support.rst @@ -35,7 +35,7 @@ RenderDoc has support for Vulkan version 1.1, as well as a number of extensions, * RenderDoc assumes that even if multiple GPUs are present, that only one VkDevice will be created and used. * RenderDoc captures will in general not be portable between different systems, only currently supporting capture and replay on the same or similar enough machines. -* Sparse textures are only supported for non-arrayed 2D textures with no mips. +* Sparse resources are not supported. * Pixel history is not implemented. * Shader debugging is not currently supported. diff --git a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp index ac888c56f..f58223068 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_get_funcs.cpp @@ -45,6 +45,20 @@ void WrappedVulkan::vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures *pFeatures) { ObjDisp(physicalDevice)->GetPhysicalDeviceFeatures(Unwrap(physicalDevice), pFeatures); + + if(pFeatures) + { + // sparse features not supported + pFeatures->sparseBinding = VK_FALSE; + pFeatures->sparseResidencyBuffer = VK_FALSE; + pFeatures->sparseResidencyImage2D = VK_FALSE; + pFeatures->sparseResidencyImage3D = VK_FALSE; + pFeatures->sparseResidency2Samples = VK_FALSE; + pFeatures->sparseResidency4Samples = VK_FALSE; + pFeatures->sparseResidency8Samples = VK_FALSE; + pFeatures->sparseResidency16Samples = VK_FALSE; + pFeatures->sparseResidencyAliased = VK_FALSE; + } } void WrappedVulkan::vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, @@ -509,6 +523,20 @@ void WrappedVulkan::vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice RDCWARN("Forcibly disabling support for protected memory"); protectedMem->protectedMemory = VK_FALSE; } + + if(pFeatures) + { + // sparse features not supported + pFeatures->features.sparseBinding = VK_FALSE; + pFeatures->features.sparseResidencyBuffer = VK_FALSE; + pFeatures->features.sparseResidencyImage2D = VK_FALSE; + pFeatures->features.sparseResidencyImage3D = VK_FALSE; + pFeatures->features.sparseResidency2Samples = VK_FALSE; + pFeatures->features.sparseResidency4Samples = VK_FALSE; + pFeatures->features.sparseResidency8Samples = VK_FALSE; + pFeatures->features.sparseResidency16Samples = VK_FALSE; + pFeatures->features.sparseResidencyAliased = VK_FALSE; + } } void WrappedVulkan::vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,