// Copyright 2020-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_VALVE_mutable_descriptor_type.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2020-12-02
*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 ename: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.

include::{generated}/interfaces/VK_VALVE_mutable_descriptor_type.txt[]

=== Version History

 * Revision 1, 2020-12-01 (Joshua Ashton, Hans-Kristian Arntzen)
   - Initial specification, squashed from public draft.
