From 76cae1c4e6743746f184598b6ada4ef4bdced983 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Thu, 20 Jun 2024 14:47:39 +0200 Subject: [PATCH] Vulkan: Dynamic rendering unused attachments Add support for VK_EXT_dynamic_rendering_unused_attachments. Although this is required, it needs to be registered optional for now due to lacking support when using renderdoc. Pull Request: https://projects.blender.org/blender/blender/pulls/123483 --- intern/ghost/intern/GHOST_ContextVK.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/intern/ghost/intern/GHOST_ContextVK.cc b/intern/ghost/intern/GHOST_ContextVK.cc index eef0ebbf2bb..5ef305a5765 100644 --- a/intern/ghost/intern/GHOST_ContextVK.cc +++ b/intern/ghost/intern/GHOST_ContextVK.cc @@ -260,6 +260,14 @@ class GHOST_DeviceVK { dynamic_rendering.pNext = device_create_info_p_next; device_create_info_p_next = &dynamic_rendering; + VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + dynamic_rendering_unused_attachments = {}; + dynamic_rendering_unused_attachments.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT; + dynamic_rendering_unused_attachments.dynamicRenderingUnusedAttachments = VK_TRUE; + dynamic_rendering_unused_attachments.pNext = device_create_info_p_next; + device_create_info_p_next = &dynamic_rendering_unused_attachments; + /* Query for Mainenance4 (core in Vulkan 1.3). */ VkPhysicalDeviceMaintenance4FeaturesKHR maintenance_4 = {}; maintenance_4.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR; @@ -942,6 +950,10 @@ GHOST_TSuccess GHOST_ContextVK::initializeDrawingContext() required_device_extensions.push_back(VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME); required_device_extensions.push_back(VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME); required_device_extensions.push_back(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME); + /* NOTE: marking this as an optional extension, but is actually required. Renderdoc doesn't + * create a device with this extension, but seems to work when not requesting the extension. + */ + optional_device_extensions.push_back(VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME); optional_device_extensions.push_back(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME); /* Enable MoltenVK required instance extensions. */