API Interactions
-
Interacts with VK_ARM_tensors
-
Interacts with VK_EXT_custom_border_color
-
Interacts with VK_EXT_device_generated_commands
-
Interacts with VK_EXT_fragment_density_map
-
Interacts with VK_EXT_shader_object
-
Interacts with VK_KHR_ray_tracing_pipeline
-
Interacts with VK_NV_device_generated_commands
-
Interacts with VK_NV_ray_tracing
Contact
-
Tobias Hector [GitHub]tobski
Other Extension Metadata
- Last Modified Date
-
2024-06-12
- IP Status
-
No known IP claims.
- Contributors
-
-
Tobias Hector, AMD
-
Jan-Harald Fredriksen, Arm
-
Daniel Story, Nintendo
-
Connor Abbot, Valve
-
Hans-Kristian Arntzen, Valve
-
Matthew Netsch, Qualcomm
-
Jeff Bolz, NVIDIA
-
Alyssa Rosenzweig, Valve
-
Lionel Landerwerlin, Intel
-
Baldur Karlsson, Valve
-
Faith Ekstrand, Collabora
-
Slawomir Grajewski, Intel
-
Mike Blumenkrantz, Valve
-
Yiwei Zhang, Google
-
Stu Smith, AMD
-
Piers Daniell, NVIDIA
-
Jon Leech, Khronos
-
Rodrigo Locatti, NVIDIA
-
Krzysztof Niski, NVIDIA
-
Alan Baker, Google
-
James Fitzpatrick, Imagination
-
Samuel (Sheng-Wen) Huang, Mediatek
-
Hai Nguyen, Google
-
Jeff Leger, Qualcomm
-
Marty Johnson, Khronos
-
Tom Olson, Arm
-
Chris Glover, Google
-
Daniel Koch, NVIDIA
-
Robert Simpson, Qualcomm
-
Dan Ginsburg, Valve
-
Andreas Süßenbach, NVIDIA
-
Anna Maniscalco, Valve
-
Artem Kharytoniuk, LunarG
-
Younggwan Kim, Arm
-
Konstantin Seurer, Valve
-
Catarina Shablia, Collabora
-
Spencer Fricke, LunarG
-
Chris Bieneman, Microsoft
-
Ting Wei, Arm
-
Boris Zanin, AMD
-
Samuel Pitoiset, Valve
-
Erik Hogeman, Arm
-
Jesse Natalie, Microsoft
-
Guang Xu, AMD
-
Embla Flatlandsmo, Arm
-
- Interactions and External Dependencies
-
-
VK_KHR_shader_untyped_pointers must be supported, but it does not need to be enabled for applications using only the binding interface.
-
Description
This extension allows explicit management of descriptors, and the memory used to store descriptors, conceptualised as descriptor heaps. Descriptor heap memory can be accessed as any other memory, enabling management of descriptors on both CPU and the GPU.
This extension was developed based on issues discovered with VK_EXT_descriptor_buffer. There are more constraints on how it is implemented, to provide more portable guarantees and more predictable performance characteristics. For instance, rather than an arbitrary number of sampler or resource buffers, there is exactly one sampler heap and exactly one resource heap.
This extension also eliminates descriptor sets and pipeline layouts completely; instead applications can look descriptors up solely by their offset into a heap. Shaders still using descriptor set and binding decorations can still be mapped to heaps through an API that maps set and binding decorations to heap offsets, either as constants or through push data. This new mapping API also enables a much more straightforward mapping to HLSL shaders using the root signature and descriptor table interfaces.
The push constant API has also been replaced with the push data interface, which aims to provide much more clarity about how data is passed to the shader, without requiring any mapping information to be provided during pipeline or shader creation. Mappings are still available for shaders written for the legacy interface.
There is also a much clearer path for mapping shader constant data, with two recommended options for mapping constant data through push data; either directly in push data, or through a device address stored in push data, both of which can be mapped to shaders with set and binding interfaces.
New Commands
New Structures
-
Extending VkCommandBufferInheritanceInfo:
-
Extending VkImageCreateInfo, VkTensorCreateInfoARM:
-
Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
-
Extending VkPhysicalDeviceProperties2:
-
Extending VkPipelineShaderStageCreateInfo, VkShaderCreateInfoEXT:
If VK_ARM_tensors is supported:
If VK_EXT_custom_border_color is supported:
If VK_EXT_fragment_density_map is supported:
If VK_NV_device_generated_commands is supported:
New Enum Constants
-
VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME -
VK_EXT_DESCRIPTOR_HEAP_SPEC_VERSION -
Extending VkAccessFlagBits2:
-
Extending VkBufferUsageFlagBits:
-
Extending VkBufferUsageFlagBits2:
-
Extending VkImageCreateFlagBits:
-
Extending VkPipelineCreateFlagBits2:
-
Extending VkStructureType:
If VK_ARM_tensors is supported:
-
Extending VkSpirvResourceTypeFlagBitsEXT:
-
Extending VkStructureType:
-
Extending VkTensorCreateFlagBitsARM:
If VK_EXT_custom_border_color is supported:
If VK_EXT_device_generated_commands is supported:
-
Extending VkIndirectCommandsTokenTypeEXT:
If VK_EXT_fragment_density_map is supported:
If VK_EXT_shader_object is supported:
If VK_KHR_ray_tracing_pipeline or VK_NV_ray_tracing is supported:
-
Extending VkDescriptorMappingSourceEXT:
-
Extending VkSpirvResourceTypeFlagBitsEXT:
If VK_NV_device_generated_commands is supported:
Document Notes
For more information, see the Vulkan Specification.
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.