// Copyright (c) 2016-2017 The Khronos Group Inc.
// Copyright notice at https://www.khronos.org/registry/speccopyright.html

[[VK_KHR_descriptor_update_template]]
== VK_KHR_descriptor_update_template

*Name String*::
    +VK_KHR_descriptor_update_template+
*Extension Type*::
    Device extension
*Registered Extension Number*::
    86
*Status*::
    In Work
*Last Modified Date*::
    2016-01-11
*Revision*::
    1
*IP Status*::
    No known IP claims.
*Dependencies*::
  - This extension is written against version 1.0 of the Vulkan API.
  - Interacts with +VK_KHR_push_descriptor+
*Contributors*::
  - Jeff Bolz, NVIDIA
  - Michael Worcester, Imagination Technologies
*Contact*::
  - Markus Tavenrath (matavenrath 'at' nvidia.com)


Applications may wish to update a fixed set of descriptors in a large number
of descriptors sets very frequently, i.e. during initializaton phase or if
it's required to rebuild descriptor sets for each frame.
For those cases it's also not unlikely that all information required to
update a single descriptor set is stored in a single struct.
This extension provides a way to update a fixed set of descriptors in a
single slink:VkDescriptorSet with a pointer to a user defined data structure
which describes the new descriptors.


=== New Object Types

  * slink:VkDescriptorUpdateTemplateKHR

=== New Enum Constants

Extending elink:VkStructureType:

  ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR

=== New Enums

  * elink:VkDescriptorUpdateTemplateCreateFlagsKHR
  * elink:VkDescriptorUpdateTemplateTypeKHR

=== New Structures

  * slink:VkDescriptorUpdateTemplateEntryKHR
  * slink:VkDescriptorUpdateTemplateCreateInfoKHR

=== New Functions

  * flink:vkCreateDescriptorUpdateTemplateKHR
  * flink:vkDestroyDescriptorUpdateTemplateKHR
  * flink:vkUpdateDescriptorSetWithTemplateKHR
  * flink:vkCmdPushDescriptorSetWithTemplateKHR

=== Examples

[source,c++]
----------------------------------------

    // TODO: Write some sample code here.

----------------------------------------

=== Version History

  * Revision 1, 2016-01-11 (Markus Tavenrath)
    - Initial draft
