• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1include::meta/VK_EXT_descriptor_indexing.txt[]
2
3*Status*::
4    Complete
5*Last Modified Data*::
6    2017-10-02
7*Contributors*::
8  - Jeff Bolz, NVIDIA
9  - Daniel Rakos, AMD
10  - Slawomir Grajewski, Intel
11  - Tobias Hector, Imagination Technologies
12
13This extension adds several small features which together enable
14applications to create large descriptor sets containing substantially all of
15their resources, and selecting amongst those resources with dynamic
16(non-uniform) indexes in the shader.
17There are feature enables and SPIR-V capabilities for non-uniform descriptor
18indexing in the shader, and non-uniform indexing in the shader requires use
19of a new code:NonUniformEXT decoration defined in the
20+SPV_EXT_descriptor_indexing+ SPIR-V extension.
21There are descriptor set layout binding creation flags enabling several
22features:
23
24  * Descriptors can be updated after they are bound to a command buffer,
25    such that the execution of the command buffer reflects the most recent
26    update to the descriptors.
27  * Descriptors that are not used by any pending command buffers can be
28    updated, which enables writing new descriptors for frame N+1 while frame
29    N is executing.
30  * Relax the requirement that all descriptors in a binding that is
31    "statically used" must be valid, such that descriptors that are not
32    accessed by a submission need not be valid and can be updated while that
33    submission is executing.
34  * The final binding in a descriptor set layout can have a variable size
35    (and unsized arrays of resources are allowed in the
36    +GL_EXT_nonuniform_qualifier+ and +SPV_EXT_descriptor_indexing+
37    extensions).
38
39Note that it is valid for multiple descriptor arrays in a shader to use the
40same set and binding number, as long as they are all compatible with the
41descriptor type in the pipeline layout.
42This means a single array binding in the descriptor set can serve multiple
43texture dimensionalities, or an array of buffer descriptors can be used with
44multiple different block layouts.
45
46There are new descriptor set layout and descriptor pool creation flags that
47are required to opt in to the update-after-bind functionality, and there are
48separate pname:maxPerStage* and pname:maxDescriptorSet* limits that apply to
49these descriptor set layouts which may: be much higher than the pre-existing
50limits.
51The old limits only count descriptors in non-updateAfterBind descriptor set
52layouts, and the new limits count descriptors in all descriptor set layouts
53in the pipeline layout.
54
55=== New Object Types
56
57None.
58
59=== New Enum Constants
60
61  * Extending elink:VkStructureType:
62  ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT
63  ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT
64  ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
65  ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT
66  ** ename:VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT
67
68  * Extending elink:VkDescriptorPoolCreateFlagBits:
69  ** ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
70
71  * Extending elink:VkDescriptorSetLayoutCreateFlagBits:
72  ** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
73
74  * Extending elink:VkResult:
75  ** ename:VK_ERROR_FRAGMENTATION_EXT
76
77=== New Enums
78
79  * elink:VkDescriptorBindingFlagBitsEXT
80
81=== New Structures
82
83  * slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT
84  * slink:VkPhysicalDeviceDescriptorIndexingFeaturesEXT
85  * slink:VkPhysicalDeviceDescriptorIndexingPropertiesEXT
86  * slink:VkDescriptorSetVariableDescriptorCountAllocateInfoEXT
87  * slink:VkDescriptorSetVariableDescriptorCountLayoutSupportEXT
88
89=== New Functions
90
91None.
92
93=== Issues
94
95None.
96
97=== Version History
98
99  * Revision 1, 2017-07-26 (Jeff Bolz)
100    - Internal revisions
101