VK_EXT_custom_resolve
Other Extension Metadata
Last Modified Date
2025-05-13
IP Status
No known IP claims.
Interactions and External Dependencies
- This extension interacts with VK_KHR_dynamic_rendering
- This extension interacts with VK_EXT_dynamic_rendering_unused_attachments
- This extension interacts with VK_EXT_fragment_density_map
- This extension interacts with VK_EXT_graphics_pipeline_library
- This extension interacts with VK_EXT_shader_object
Contributors
- Mike Blumenkrantz, Valve
- Connor Abbott, Valve
- Samuel Pitoiset, Valve
- Matthew Netsch, Qualcomm
- Jan-Harald Fredriksen, ARM
- Ting Wei, ARM
- Ricardo Garcia, Igalia
- Spencer Fricke, LunarG
- Piers Daniell, Nvidia
Description
This extension provides functionality for using shaders to resolve multisample rendering attachments.
It builds upon mechanics introduced by VK_QCOM_render_pass_shader_resolve, additionally adding support for dynamic rendering.
New Commands
If VK_KHR_dynamic_rendering or Vulkan Version 1.3 is supported:
New Structures
If VK_KHR_dynamic_rendering or Vulkan Version 1.3 is supported:
- VkBeginCustomResolveInfoEXT
- Extending VkGraphicsPipelineCreateInfo, VkCommandBufferInheritanceInfo, VkShaderCreateInfoEXT:
New Enum Constants
VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAMEVK_EXT_CUSTOM_RESOLVE_SPEC_VERSION- Extending VkStructureType:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT
- Extending VkSubpassDescriptionFlagBits:
VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXTVK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT
If VK_KHR_dynamic_rendering or Vulkan Version 1.3 is supported:
- Extending VkRenderingFlagBits:
VK_RENDERING_CUSTOM_RESOLVE_BIT_EXTVK_RENDERING_FRAGMENT_REGION_BIT_EXT
- Extending VkResolveModeFlagBits:
VK_RESOLVE_MODE_CUSTOM_BIT_EXT
- Extending VkStructureType:
VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXTVK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT
Issues
1) How will this work with shader objects?
Some vendors emit an epilog at the end of the FS that stores each color/depth/stencil attachment to the appropriate tilebuffer location, and to do that they need to know the layout of the tilebuffer which depends on the attachment formats/sample counts. We agreed that for shader object the FS epilog is emitted dynamically when the draw happens.
Version History
- Revision 1, 2025-05-13 (Mike Blumenkrantz)
- Initial draft