# VK_EXT_mutable_descriptor_type(3) Manual Page

## Name

VK_EXT_mutable_descriptor_type - device extension

Loading… please wait.

## Registered Extension Number

495

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_KHR_maintenance3

## Special Use

- D3D support

## Contact

- Joshua Ashton [GitHub]Joshua-Ashton

- Hans-Kristian Arntzen [GitHub]HansKristian-Work

## Extension Proposal

VK_EXT_mutable_descriptor_type

## Other Extension Metadata

Last Modified Date

  2022-08-22

IP Status

  No known IP claims.

Contributors

  - Joshua Ashton, Valve

  - Hans-Kristian Arntzen, Valve

## Description

This extension allows applications to reduce descriptor memory footprint by allowing a descriptor to be able to mutate to a given list of descriptor types depending on which descriptor types are written into, or copied into a descriptor set.

The main use case this extension intends to address is descriptor indexing with `VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT` where the descriptor types are completely generic, as this means applications can allocate one large descriptor set, rather than having one large descriptor set per descriptor type, which significantly bloats descriptor memory usage and causes performance issues.

This extension also adds a mechanism to declare that a descriptor pool, and therefore the descriptor sets that are allocated from it, reside only in host memory; as such these descriptors can only be updated/copied, but not bound.

These features together allow much more efficient emulation of the raw D3D12 binding model. This extension is primarily intended to be useful for API layering efforts.

## New Structures

- VkMutableDescriptorTypeListEXT

- Extending VkDescriptorSetLayoutCreateInfo, VkDescriptorPoolCreateInfo:

  - VkMutableDescriptorTypeCreateInfoEXT

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT

## New Enum Constants

- `VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME`

- `VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION`

- Extending VkDescriptorPoolCreateFlagBits:

  - `VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT`

- Extending VkDescriptorSetLayoutCreateFlagBits:

  - `VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT`

- Extending VkDescriptorType:

  - `VK_DESCRIPTOR_TYPE_MUTABLE_EXT`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT`

## Version History

- Revision 1, 2022-08-22 (Jon Leech)

  - Initial version, promoted from VK_VALVE_mutable_descriptor_type.

## See Also

No cross-references are available

## 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.

## Copyright

Copyright 2014-2024 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0