• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2022 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5// This text fragment is used many times in the Features chapter.
6ifdef::hidden[]
7// tag::features[]
8If the sname:{refpage} structure is included in the pname:pNext chain of the
9slink:VkPhysicalDeviceFeatures2 structure passed to
10flink:vkGetPhysicalDeviceFeatures2, it is filled in to indicate whether each
11corresponding feature is supported.
12sname:{refpage} can: also be used in the pname:pNext chain of
13slink:VkDeviceCreateInfo to selectively enable these features.
14// end::features[]
15endif::hidden[]
16
17
18[[features]]
19= Features
20
21_Features_ describe functionality which is not supported on all
22implementations.
23Features are properties of the physical device.
24Features are optional:, and must: be explicitly enabled before use.
25Support for features is reported and enabled on a per-feature basis.
26
27ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
28[NOTE]
29.Note
30====
31Features are reported via the basic slink:VkPhysicalDeviceFeatures
32structure, as well as the extensible structure
33sname:VkPhysicalDeviceFeatures2, which was added in the
34`apiext:VK_KHR_get_physical_device_properties2` extension and included in
35Vulkan 1.1.
36When new features are added in future Vulkan versions or extensions, each
37extension should: introduce one new feature structure, if needed.
38This structure can: be added to the pname:pNext chain of the
39sname:VkPhysicalDeviceFeatures2 structure.
40====
41endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
42
43For convenience, new core versions of Vulkan may: introduce new unified
44feature structures for features promoted from extensions.
45At the same time, the extension's original feature structure (if any) is
46also promoted to the core API, and is an alias of the extension's structure.
47This results in multiple names for the same feature: in the original
48extension's feature structure and the promoted structure alias, in the
49unified feature structure.
50When a feature was implicitly supported and enabled in the extension, but an
51explicit name was added during promotion, then the extension itself acts as
52an alias for the feature as listed in the table below.
53
54All aliases of the same feature in the core API must: be reported
55consistently: either all must: be reported as supported, or none of them.
56When a promoted extension is available, any corresponding feature aliases
57must: be supported.
58
59[[features-extension-aliases]]
60.Extension Feature Aliases
61
62// Jon 1.3 TBD - add any appropriate extensions promoted to 1.3
63[width="100%",options="header"]
64|====
65| Extension                                    | Feature(s)
66ifdef::VK_VERSION_1_2[]
67ifdef::VK_KHR_shader_draw_parameters[]
68| `apiext:VK_KHR_shader_draw_parameters`       | <<features-shaderDrawParameters, pname:shaderDrawParameters>>
69endif::VK_KHR_shader_draw_parameters[]
70ifdef::VK_KHR_draw_indirect_count[]
71| `apiext:VK_KHR_draw_indirect_count`          | <<features-drawIndirectCount, pname:drawIndirectCount>>
72endif::VK_KHR_draw_indirect_count[]
73ifdef::VK_KHR_sampler_mirror_clamp_to_edge[]
74| `apiext:VK_KHR_sampler_mirror_clamp_to_edge` | <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>
75endif::VK_KHR_sampler_mirror_clamp_to_edge[]
76ifdef::VK_EXT_descriptor_indexing[]
77| `apiext:VK_EXT_descriptor_indexing`          | <<features-descriptorIndexing, pname:descriptorIndexing>>
78endif::VK_EXT_descriptor_indexing[]
79ifdef::VK_EXT_sampler_filter_minmax[]
80| `apiext:VK_EXT_sampler_filter_minmax`        | <<features-samplerFilterMinmax, pname:samplerFilterMinmax>>
81endif::VK_EXT_sampler_filter_minmax[]
82ifdef::VK_EXT_shader_viewport_index_layer[]
83| `apiext:VK_EXT_shader_viewport_index_layer`  | <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>>, <<features-shaderOutputLayer, pname:shaderOutputLayer>>
84endif::VK_EXT_shader_viewport_index_layer[]
85endif::VK_VERSION_1_2[]
86|====
87
88[open,refpage='vkGetPhysicalDeviceFeatures',desc='Reports capabilities of a physical device',type='protos']
89--
90To query supported features, call:
91
92include::{generated}/api/protos/vkGetPhysicalDeviceFeatures.adoc[]
93
94  * pname:physicalDevice is the physical device from which to query the
95    supported features.
96  * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures
97    structure in which the physical device features are returned.
98    For each feature, a value of ename:VK_TRUE specifies that the feature is
99    supported on this physical device, and ename:VK_FALSE specifies that the
100    feature is not supported.
101
102include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures.adoc[]
103--
104
105Fine-grained features used by a logical device must: be enabled at
106sname:VkDevice creation time.
107If a feature is enabled that the physical device does not support,
108sname:VkDevice creation will fail and return
109ename:VK_ERROR_FEATURE_NOT_PRESENT.
110
111The fine-grained features are enabled by passing a pointer to the
112sname:VkPhysicalDeviceFeatures structure via the pname:pEnabledFeatures
113member of the slink:VkDeviceCreateInfo structure that is passed into the
114fname:vkCreateDevice call.
115If a member of pname:pEnabledFeatures is set to ename:VK_TRUE or
116ename:VK_FALSE, then the device will be created with the indicated feature
117enabled or disabled, respectively.
118ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
119Features can: also be enabled by using the slink:VkPhysicalDeviceFeatures2
120structure.
121endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
122
123If an application wishes to enable all features supported by a device, it
124can: simply pass in the sname:VkPhysicalDeviceFeatures structure that was
125previously returned by fname:vkGetPhysicalDeviceFeatures.
126To disable an individual feature, the application can: set the desired
127member to ename:VK_FALSE in the same structure.
128Setting pname:pEnabledFeatures to `NULL`
129ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
130and not including a slink:VkPhysicalDeviceFeatures2 in the pname:pNext chain
131of slink:VkDeviceCreateInfo
132endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
133is equivalent to setting all members of the structure to ename:VK_FALSE.
134
135[NOTE]
136.Note
137====
138Some features, such as pname:robustBufferAccess, may: incur a runtime
139performance cost.
140Application writers should: carefully consider the implications of enabling
141all supported features.
142====
143
144ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
145[open,refpage='vkGetPhysicalDeviceFeatures2',desc='Reports capabilities of a physical device',type='protos']
146--
147To query supported features defined by the core or extensions, call:
148
149ifdef::VK_VERSION_1_1[]
150include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2.adoc[]
151endif::VK_VERSION_1_1[]
152
153ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command]
154
155ifdef::VK_KHR_get_physical_device_properties2[]
156include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2KHR.adoc[]
157endif::VK_KHR_get_physical_device_properties2[]
158
159  * pname:physicalDevice is the physical device from which to query the
160    supported features.
161  * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures2
162    structure in which the physical device features are returned.
163
164Each structure in pname:pFeatures and its pname:pNext chain contains members
165corresponding to fine-grained features.
166fname:vkGetPhysicalDeviceFeatures2 writes each member to a boolean value
167indicating whether that feature is supported.
168
169include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures2.adoc[]
170--
171
172[open,refpage='VkPhysicalDeviceFeatures2',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs']
173--
174The sname:VkPhysicalDeviceFeatures2 structure is defined as:
175
176include::{generated}/api/structs/VkPhysicalDeviceFeatures2.adoc[]
177
178ifdef::VK_KHR_get_physical_device_properties2[]
179or the equivalent
180
181include::{generated}/api/structs/VkPhysicalDeviceFeatures2KHR.adoc[]
182endif::VK_KHR_get_physical_device_properties2[]
183
184  * pname:sType is the type of this structure.
185  * pname:pNext is `NULL` or a pointer to a structure extending this
186    structure.
187  * pname:features is a slink:VkPhysicalDeviceFeatures structure describing
188    the fine-grained features of the Vulkan 1.0 API.
189
190The pname:pNext chain of this structure is used to extend the structure with
191features defined by extensions.
192This structure can: be used in flink:vkGetPhysicalDeviceFeatures2 or can: be
193included in the pname:pNext chain of a slink:VkDeviceCreateInfo structure,
194in which case it controls which features are enabled on the device in lieu
195of pname:pEnabledFeatures.
196
197include::{generated}/validity/structs/VkPhysicalDeviceFeatures2.adoc[]
198--
199endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
200
201[open,refpage='VkPhysicalDeviceFeatures',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs']
202--
203The sname:VkPhysicalDeviceFeatures structure is defined as:
204
205include::{generated}/api/structs/VkPhysicalDeviceFeatures.adoc[]
206
207This structure describes the following features:
208
209  * [[features-robustBufferAccess]] pname:robustBufferAccess specifies that
210    accesses to buffers are bounds-checked against the range of the buffer
211    descriptor (as determined by sname:VkDescriptorBufferInfo::pname:range,
212    slink:VkBufferViewCreateInfo::pname:range, or the size of the buffer).
213    Out of bounds accesses must: not cause application termination, and the
214    effects of shader loads, stores, and atomics must: conform to an
215    implementation-dependent behavior as described below.
216  ** A buffer access is considered to be out of bounds if any of the
217     following are true:
218  *** The pointer was formed by code:OpImageTexelPointer and the coordinate
219      is less than zero or greater than or equal to the number of whole
220      elements in the bound range.
221  *** The pointer was not formed by code:OpImageTexelPointer and the object
222      pointed to is not wholly contained within the bound range.
223ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
224      This includes accesses performed via _variable pointers_ where the
225      buffer descriptor being accessed cannot be statically determined.
226      Uninitialized pointers and pointers equal to code:OpConstantNull are
227      treated as pointing to a zero-sized object, so all accesses through
228      such pointers are considered to be out of bounds.
229endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
230ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
231      Buffer accesses through buffer device addresses are not
232      bounds-checked.
233endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
234ifdef::VK_NV_cooperative_matrix[]
235      If the <<features-cooperativeMatrixRobustBufferAccess,
236      pname:cooperativeMatrixRobustBufferAccess>> feature is not enabled,
237      then accesses using code:OpCooperativeMatrixLoadNV and
238      code:OpCooperativeMatrixStoreNV may: not be bounds-checked.
239endif::VK_NV_cooperative_matrix[]
240+
241[NOTE]
242.Note
243====
244If a SPIR-V code:OpLoad instruction loads a structure and the tail end of
245the structure is out of bounds, then all members of the structure are
246considered out of bounds even if the members at the end are not statically
247used.
248====
249
250  *** If
251ifdef::VK_EXT_robustness2[]
252      <<features-robustBufferAccess2, pname:robustBufferAccess2>> is not
253      enabled and
254endif::VK_EXT_robustness2[]
255      any buffer access is determined to be out of bounds, then any other
256      access of the same type (load, store, or atomic) to the same buffer
257      that accesses an address less than 16 bytes away from the out of
258      bounds address may: also be considered out of bounds.
259  *** If the access is a load that reads from the same memory locations as a
260      prior store in the same shader invocation, with no other intervening
261      accesses to the same memory locations in that shader invocation, then
262      the result of the load may: be the value stored by the store
263      instruction, even if the access is out of bounds.
264      If the load is code:Volatile, then an out of bounds load must: return
265      the appropriate out of bounds value.
266ifdef::VK_EXT_robustness2[]
267  ** Accesses to descriptors written with a dlink:VK_NULL_HANDLE resource or
268     view are not considered to be out of bounds.
269     Instead, each type of descriptor access defines a specific behavior for
270     accesses to a null descriptor.
271endif::VK_EXT_robustness2[]
272  ** Out-of-bounds buffer loads will return any of the following values:
273ifdef::VK_EXT_robustness2[]
274  *** If the access is to a uniform buffer and
275      <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
276      enabled, loads of offsets between the end of the descriptor range and
277      the end of the descriptor range rounded up to a multiple of
278      <<limits-robustUniformBufferAccessSizeAlignment,
279      pname:robustUniformBufferAccessSizeAlignment>> bytes must: return
280      either zero values or the contents of the memory at the offset being
281      loaded.
282      Loads of offsets past the descriptor range rounded up to a multiple of
283      <<limits-robustUniformBufferAccessSizeAlignment,
284      pname:robustUniformBufferAccessSizeAlignment>> bytes must: return zero
285      values.
286  *** If the access is to a storage buffer and
287      <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
288      enabled, loads of offsets between the end of the descriptor range and
289      the end of the descriptor range rounded up to a multiple of
290      <<limits-robustStorageBufferAccessSizeAlignment,
291      pname:robustStorageBufferAccessSizeAlignment>> bytes must: return
292      either zero values or the contents of the memory at the offset being
293      loaded.
294      Loads of offsets past the descriptor range rounded up to a multiple of
295      <<limits-robustStorageBufferAccessSizeAlignment,
296      pname:robustStorageBufferAccessSizeAlignment>> bytes must: return zero
297      values.
298      Similarly, stores to addresses between the end of the descriptor range
299      and the end of the descriptor range rounded up to a multiple of
300      <<limits-robustStorageBufferAccessSizeAlignment,
301      pname:robustStorageBufferAccessSizeAlignment>> bytes may: be
302      discarded.
303  *** Non-atomic accesses to storage buffers that are a multiple of 32 bits
304      may: be decomposed into 32-bit accesses that are individually
305      bounds-checked.
306  *** If the access is to an index buffer and
307      <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
308      enabled, zero values must: be returned.
309  *** If the access is to a uniform texel buffer or storage texel buffer and
310      <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
311      enabled, zero values must: be returned, and then
312      <<textures-conversion-to-rgba,Conversion to RGBA>> is applied based on
313      the buffer view's format.
314endif::VK_EXT_robustness2[]
315  *** Values from anywhere within the memory range(s) bound to the buffer
316      (possibly including bytes of memory past the end of the buffer, up to
317      the end of the bound range).
318  *** Zero values, or [eq]#(0,0,0,x)# vectors for vector reads where x is a
319      valid value represented in the type of the vector components and may:
320      be any of:
321  **** 0, 1, or the maximum representable positive integer value, for signed
322       or unsigned integer components
323  **** 0.0 or 1.0, for floating-point components
324  ** Out-of-bounds writes may: modify values within the memory range(s)
325     bound to the buffer, but must: not modify any other memory.
326ifdef::VK_EXT_robustness2[]
327  *** If <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
328      enabled, out of bounds writes must: not modify any memory.
329endif::VK_EXT_robustness2[]
330  ** Out-of-bounds atomics may: modify values within the memory range(s)
331     bound to the buffer, but must: not modify any other memory, and return
332     an undefined: value.
333ifdef::VK_EXT_robustness2[]
334  *** If <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
335      enabled, out of bounds atomics must: not modify any memory, and return
336      an undefined: value.
337  ** If <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
338     disabled, vertex
339endif::VK_EXT_robustness2[]
340ifndef::VK_EXT_robustness2[]
341  ** Vertex
342endif::VK_EXT_robustness2[]
343     input attributes are considered out of bounds if the offset of the
344     attribute in the bound vertex buffer range plus the size of the
345     attribute is greater than either:
346+
347  *** code:vertexBufferRangeSize, if [eq]#code:bindingStride == 0#; or
348  *** [eq]#(code:vertexBufferRangeSize - (code:vertexBufferRangeSize %
349      code:bindingStride))#
350+
351where code:vertexBufferRangeSize is the byte size of the memory range bound
352to the vertex buffer binding and code:bindingStride is the byte stride of
353the corresponding vertex input binding.
354Further, if any vertex input attribute using a specific vertex input binding
355is out of bounds, then all vertex input attributes using that vertex input
356binding for that vertex shader invocation are considered out of bounds.
357  *** If a vertex input attribute is out of bounds, it will be assigned one
358      of the following values:
359  **** Values from anywhere within the memory range(s) bound to the buffer,
360       converted according to the format of the attribute.
361  **** Zero values, format converted according to the format of the
362       attribute.
363  **** Zero values, or [eq]#(0,0,0,x)# vectors, as described above.
364ifdef::VK_EXT_robustness2[]
365  ** If <<features-robustBufferAccess2, pname:robustBufferAccess2>> is
366     enabled, vertex input attributes are considered out of bounds if the
367     offset of the attribute in the bound vertex buffer range plus the size
368     of the attribute is greater than the byte size of the memory range
369     bound to the vertex buffer binding.
370  *** If a vertex input attribute is out of bounds, the
371      <<fxvertex-input-extraction,raw data>> extracted are zero values, and
372      missing G, B, or A components are <<fxvertex-input-extraction,filled
373      with [eq]#(0,0,1)#>>.
374endif::VK_EXT_robustness2[]
375  ** If pname:robustBufferAccess is not enabled, applications must: not
376     perform out of bounds accesses
377ifdef::VK_EXT_pipeline_robustness[]
378     except under the conditions enabled by the
379     <<features-pipelineRobustness, pname:pipelineRobustness>> feature
380endif::VK_EXT_pipeline_robustness[]
381     .
382  * [[features-fullDrawIndexUint32]] pname:fullDrawIndexUint32 specifies the
383    full 32-bit range of indices is supported for indexed draw calls when
384    using a elink:VkIndexType of ename:VK_INDEX_TYPE_UINT32.
385    pname:maxDrawIndexedIndexValue is the maximum index value that may: be
386    used (aside from the primitive restart index, which is always 2^32^-1
387    when the elink:VkIndexType is ename:VK_INDEX_TYPE_UINT32).
388    If this feature is supported, pname:maxDrawIndexedIndexValue must: be
389    2^32^-1; otherwise it must: be no smaller than 2^24^-1.
390    See <<limits-maxDrawIndexedIndexValue, pname:maxDrawIndexedIndexValue>>.
391  * [[features-imageCubeArray]] pname:imageCubeArray specifies whether image
392    views with a elink:VkImageViewType of
393    ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the
394    corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V
395    capabilities can: be used in shader code.
396  * [[features-independentBlend]] pname:independentBlend specifies whether
397    the sname:VkPipelineColorBlendAttachmentState settings are controlled
398    independently per-attachment.
399    If this feature is not enabled, the
400    sname:VkPipelineColorBlendAttachmentState settings for all color
401    attachments must: be identical.
402    Otherwise, a different sname:VkPipelineColorBlendAttachmentState can: be
403    provided for each bound color attachment.
404  * [[features-geometryShader]] pname:geometryShader specifies whether
405    geometry shaders are supported.
406    If this feature is not enabled, the ename:VK_SHADER_STAGE_GEOMETRY_BIT
407    and ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT enum values must: not be
408    used.
409    This also specifies whether shader modules can: declare the
410    code:Geometry capability.
411  * [[features-tessellationShader]] pname:tessellationShader specifies
412    whether tessellation control and evaluation shaders are supported.
413    If this feature is not enabled, the
414    ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
415    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
416    ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
417    ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, and
418    ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO enum
419    values must: not be used.
420    This also specifies whether shader modules can: declare the
421    code:Tessellation capability.
422  * [[features-sampleRateShading]] pname:sampleRateShading specifies whether
423    <<primsrast-sampleshading,Sample Shading>> and multisample interpolation
424    are supported.
425    If this feature is not enabled, the pname:sampleShadingEnable member of
426    the slink:VkPipelineMultisampleStateCreateInfo structure must: be set to
427    ename:VK_FALSE and the pname:minSampleShading member is ignored.
428    This also specifies whether shader modules can: declare the
429    code:SampleRateShading capability.
430  * [[features-dualSrcBlend]] pname:dualSrcBlend specifies whether blend
431    operations which take two sources are supported.
432    If this feature is not enabled, the ename:VK_BLEND_FACTOR_SRC1_COLOR,
433    ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
434    ename:VK_BLEND_FACTOR_SRC1_ALPHA, and
435    ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA enum values must: not be used
436    as source or destination blending factors.
437    See <<framebuffer-dsb>>.
438  * [[features-logicOp]] pname:logicOp specifies whether logic operations
439    are supported.
440    If this feature is not enabled, the pname:logicOpEnable member of the
441    slink:VkPipelineColorBlendStateCreateInfo structure must: be set to
442    ename:VK_FALSE, and the pname:logicOp member is ignored.
443  * [[features-multiDrawIndirect]] pname:multiDrawIndirect specifies whether
444    multiple draw indirect is supported.
445    If this feature is not enabled, the pname:drawCount parameter to the
446    fname:vkCmdDrawIndirect and fname:vkCmdDrawIndexedIndirect commands
447    must: be 0 or 1.
448    The pname:maxDrawIndirectCount member of the
449    sname:VkPhysicalDeviceLimits structure must: also be 1 if this feature
450    is not supported.
451    See <<limits-maxDrawIndirectCount, pname:maxDrawIndirectCount>>.
452  * [[features-drawIndirectFirstInstance]] pname:drawIndirectFirstInstance
453    specifies whether indirect drawing calls support the pname:firstInstance
454    parameter.
455    If this feature is not enabled, the pname:firstInstance member of all
456    sname:VkDrawIndirectCommand and sname:VkDrawIndexedIndirectCommand
457    structures that are provided to the fname:vkCmdDrawIndirect and
458    fname:vkCmdDrawIndexedIndirect commands must: be 0.
459  * [[features-depthClamp]] pname:depthClamp specifies whether depth
460    clamping is supported.
461    If this feature is not enabled, the pname:depthClampEnable member of the
462    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
463    ename:VK_FALSE.
464    Otherwise, setting pname:depthClampEnable to ename:VK_TRUE will enable
465    depth clamping.
466  * [[features-depthBiasClamp]] pname:depthBiasClamp specifies whether depth
467    bias clamping is supported.
468    If this feature is not enabled, the pname:depthBiasClamp member of the
469    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
470    0.0 unless the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is
471    enabled, and the pname:depthBiasClamp parameter to
472    fname:vkCmdSetDepthBias must: be set to 0.0.
473  * [[features-fillModeNonSolid]] pname:fillModeNonSolid specifies whether
474    point and wireframe fill modes are supported.
475    If this feature is not enabled, the ename:VK_POLYGON_MODE_POINT and
476    ename:VK_POLYGON_MODE_LINE enum values must: not be used.
477  * [[features-depthBounds]] pname:depthBounds specifies whether depth
478    bounds tests are supported.
479    If this feature is not enabled, the pname:depthBoundsTestEnable member
480    of the slink:VkPipelineDepthStencilStateCreateInfo structure must: be
481    set to ename:VK_FALSE.
482    When pname:depthBoundsTestEnable is set to ename:VK_FALSE, the
483    pname:minDepthBounds and pname:maxDepthBounds members of the
484    slink:VkPipelineDepthStencilStateCreateInfo structure are ignored.
485  * [[features-wideLines]] pname:wideLines specifies whether lines with
486    width other than 1.0 are supported.
487    If this feature is not enabled, the pname:lineWidth member of the
488    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
489    1.0 unless the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is
490    enabled, and the pname:lineWidth parameter to fname:vkCmdSetLineWidth
491    must: be set to 1.0.
492    When this feature is supported, the range and granularity of supported
493    line widths are indicated by the pname:lineWidthRange and
494    pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits
495    structure, respectively.
496  * [[features-largePoints]] pname:largePoints specifies whether points with
497    size greater than 1.0 are supported.
498    If this feature is not enabled, only a point size of 1.0 written by a
499    shader is supported.
500    The range and granularity of supported point sizes are indicated by the
501    pname:pointSizeRange and pname:pointSizeGranularity members of the
502    sname:VkPhysicalDeviceLimits structure, respectively.
503  * [[features-alphaToOne]] pname:alphaToOne specifies whether the
504    implementation is able to replace the alpha value of the fragment shader
505    color output in the <<fragops-covg, Multisample Coverage>> fragment
506    operation.
507    If this feature is not enabled, then the pname:alphaToOneEnable member
508    of the slink:VkPipelineMultisampleStateCreateInfo structure must: be set
509    to ename:VK_FALSE.
510    Otherwise setting pname:alphaToOneEnable to ename:VK_TRUE will enable
511    alpha-to-one behavior.
512  * [[features-multiViewport]] pname:multiViewport specifies whether more
513    than one viewport is supported.
514    If this feature is not enabled:
515  ** The pname:viewportCount and pname:scissorCount members of the
516     slink:VkPipelineViewportStateCreateInfo structure must: be set to 1.
517  ** The pname:firstViewport and pname:viewportCount parameters to the
518     fname:vkCmdSetViewport command must: be set to 0 and 1, respectively.
519  ** The pname:firstScissor and pname:scissorCount parameters to the
520     fname:vkCmdSetScissor command must: be set to 0 and 1, respectively.
521ifdef::VK_NV_scissor_exclusive[]
522  ** The pname:exclusiveScissorCount member of the
523     slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure
524     must: be set to 0 or 1.
525  ** The pname:firstExclusiveScissor and pname:exclusiveScissorCount
526     parameters to the fname:vkCmdSetExclusiveScissorNV command must: be set
527     to 0 and 1, respectively.
528endif::VK_NV_scissor_exclusive[]
529  * [[features-samplerAnisotropy]] pname:samplerAnisotropy specifies whether
530    anisotropic filtering is supported.
531    If this feature is not enabled, the pname:anisotropyEnable member of the
532    slink:VkSamplerCreateInfo structure must: be ename:VK_FALSE.
533  * [[features-textureCompressionETC2]] pname:textureCompressionETC2
534    specifies whether all of the ETC2 and EAC compressed texture formats are
535    supported.
536    If this feature is enabled, then the
537    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
538    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
539    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
540    be supported in pname:optimalTilingFeatures for the following formats:
541+
542  ** ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
543  ** ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
544  ** ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
545  ** ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
546  ** ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
547  ** ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
548  ** ename:VK_FORMAT_EAC_R11_UNORM_BLOCK
549  ** ename:VK_FORMAT_EAC_R11_SNORM_BLOCK
550  ** ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK
551  ** ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK
552+
553To query for additional properties, or if the feature is not enabled,
554flink:vkGetPhysicalDeviceFormatProperties and
555flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
556supported properties of individual formats as normal.
557
558  * [[features-textureCompressionASTC_LDR]] pname:textureCompressionASTC_LDR
559    specifies whether all of the ASTC LDR compressed texture formats are
560    supported.
561    If this feature is enabled, then the
562    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
563    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
564    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
565    be supported in pname:optimalTilingFeatures for the following formats:
566+
567  ** ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK
568  ** ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK
569  ** ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK
570  ** ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK
571  ** ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK
572  ** ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK
573  ** ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK
574  ** ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK
575  ** ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK
576  ** ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK
577  ** ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK
578  ** ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK
579  ** ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK
580  ** ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK
581  ** ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK
582  ** ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK
583  ** ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK
584  ** ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK
585  ** ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK
586  ** ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK
587  ** ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK
588  ** ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK
589  ** ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK
590  ** ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK
591  ** ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK
592  ** ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK
593  ** ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK
594  ** ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK
595+
596To query for additional properties, or if the feature is not enabled,
597flink:vkGetPhysicalDeviceFormatProperties and
598flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
599supported properties of individual formats as normal.
600
601  * [[features-textureCompressionBC]] pname:textureCompressionBC specifies
602    whether all of the BC compressed texture formats are supported.
603    If this feature is enabled, then the
604    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
605    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
606    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
607    be supported in pname:optimalTilingFeatures for the following formats:
608+
609  ** ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK
610  ** ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK
611  ** ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK
612  ** ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK
613  ** ename:VK_FORMAT_BC2_UNORM_BLOCK
614  ** ename:VK_FORMAT_BC2_SRGB_BLOCK
615  ** ename:VK_FORMAT_BC3_UNORM_BLOCK
616  ** ename:VK_FORMAT_BC3_SRGB_BLOCK
617  ** ename:VK_FORMAT_BC4_UNORM_BLOCK
618  ** ename:VK_FORMAT_BC4_SNORM_BLOCK
619  ** ename:VK_FORMAT_BC5_UNORM_BLOCK
620  ** ename:VK_FORMAT_BC5_SNORM_BLOCK
621  ** ename:VK_FORMAT_BC6H_UFLOAT_BLOCK
622  ** ename:VK_FORMAT_BC6H_SFLOAT_BLOCK
623  ** ename:VK_FORMAT_BC7_UNORM_BLOCK
624  ** ename:VK_FORMAT_BC7_SRGB_BLOCK
625+
626To query for additional properties, or if the feature is not enabled,
627flink:vkGetPhysicalDeviceFormatProperties and
628flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
629supported properties of individual formats as normal.
630
631  * [[features-occlusionQueryPrecise]] pname:occlusionQueryPrecise specifies
632    whether occlusion queries returning actual sample counts are supported.
633    Occlusion queries are created in a sname:VkQueryPool by specifying the
634    pname:queryType of ename:VK_QUERY_TYPE_OCCLUSION in the
635    slink:VkQueryPoolCreateInfo structure which is passed to
636    fname:vkCreateQueryPool.
637    If this feature is enabled, queries of this type can: enable
638    ename:VK_QUERY_CONTROL_PRECISE_BIT in the pname:flags parameter to
639    fname:vkCmdBeginQuery.
640    If this feature is not supported, the implementation supports only
641    boolean occlusion queries.
642    When any samples are passed, boolean queries will return a non-zero
643    result value, otherwise a result value of zero is returned.
644    When this feature is enabled and ename:VK_QUERY_CONTROL_PRECISE_BIT is
645    set, occlusion queries will report the actual number of samples passed.
646  * [[features-pipelineStatisticsQuery]] pname:pipelineStatisticsQuery
647    specifies whether the pipeline statistics queries are supported.
648    If this feature is not enabled, queries of type
649    ename:VK_QUERY_TYPE_PIPELINE_STATISTICS cannot: be created, and none of
650    the elink:VkQueryPipelineStatisticFlagBits bits can: be set in the
651    pname:pipelineStatistics member of the slink:VkQueryPoolCreateInfo
652    structure.
653  * [[features-vertexPipelineStoresAndAtomics]]
654    pname:vertexPipelineStoresAndAtomics specifies whether storage buffers
655    and images support stores and atomic operations in the vertex,
656    tessellation, and geometry shader stages.
657    If this feature is not enabled, all storage image, storage texel buffer,
658    and storage buffer variables used by these stages in shader modules
659    must: be decorated with the code:NonWritable decoration (or the
660    code:readonly memory qualifier in GLSL).
661  * [[features-fragmentStoresAndAtomics]] pname:fragmentStoresAndAtomics
662    specifies whether storage buffers and images support stores and atomic
663    operations in the fragment shader stage.
664    If this feature is not enabled, all storage image, storage texel buffer,
665    and storage buffer variables used by the fragment stage in shader
666    modules must: be decorated with the code:NonWritable decoration (or the
667    code:readonly memory qualifier in GLSL).
668  * [[features-shaderTessellationAndGeometryPointSize]]
669    pname:shaderTessellationAndGeometryPointSize specifies whether the
670    code:PointSize built-in decoration is available in the tessellation
671    control, tessellation evaluation, and geometry shader stages.
672    If this feature is not enabled, members decorated with the
673    code:PointSize built-in decoration must: not be read from or written to
674    and all points written from a tessellation or geometry shader will have
675    a size of 1.0.
676    This also specifies whether shader modules can: declare the
677    code:TessellationPointSize capability for tessellation control and
678    evaluation shaders, or if the shader modules can: declare the
679    code:GeometryPointSize capability for geometry shaders.
680    An implementation supporting this feature must: also support one or both
681    of the <<features-tessellationShader, pname:tessellationShader>> or
682    <<features-geometryShader, pname:geometryShader>> features.
683  * [[features-shaderImageGatherExtended]] pname:shaderImageGatherExtended
684    specifies whether the extended set of image gather instructions are
685    available in shader code.
686    If this feature is not enabled, the code:OpImage*Gather instructions do
687    not support the code:Offset and code:ConstOffsets operands.
688    This also specifies whether shader modules can: declare the
689    code:ImageGatherExtended capability.
690  * [[features-shaderStorageImageExtendedFormats]]
691    pname:shaderStorageImageExtendedFormats specifies whether all the
692    "`storage image extended formats`" below are supported; if this feature
693    is supported, then the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT must:
694    be supported in pname:optimalTilingFeatures for the following formats:
695+
696  ** ename:VK_FORMAT_R16G16_SFLOAT
697  ** ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32
698  ** ename:VK_FORMAT_R16_SFLOAT
699  ** ename:VK_FORMAT_R16G16B16A16_UNORM
700  ** ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32
701  ** ename:VK_FORMAT_R16G16_UNORM
702  ** ename:VK_FORMAT_R8G8_UNORM
703  ** ename:VK_FORMAT_R16_UNORM
704  ** ename:VK_FORMAT_R8_UNORM
705  ** ename:VK_FORMAT_R16G16B16A16_SNORM
706  ** ename:VK_FORMAT_R16G16_SNORM
707  ** ename:VK_FORMAT_R8G8_SNORM
708  ** ename:VK_FORMAT_R16_SNORM
709  ** ename:VK_FORMAT_R8_SNORM
710  ** ename:VK_FORMAT_R16G16_SINT
711  ** ename:VK_FORMAT_R8G8_SINT
712  ** ename:VK_FORMAT_R16_SINT
713  ** ename:VK_FORMAT_R8_SINT
714  ** ename:VK_FORMAT_A2B10G10R10_UINT_PACK32
715  ** ename:VK_FORMAT_R16G16_UINT
716  ** ename:VK_FORMAT_R8G8_UINT
717  ** ename:VK_FORMAT_R16_UINT
718  ** ename:VK_FORMAT_R8_UINT
719+
720[NOTE]
721.Note
722====
723pname:shaderStorageImageExtendedFormats feature only adds a guarantee of
724format support, which is specified for the whole physical device.
725Therefore enabling or disabling the feature via flink:vkCreateDevice has no
726practical effect.
727
728To query for additional properties, or if the feature is not supported,
729flink:vkGetPhysicalDeviceFormatProperties and
730flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
731supported properties of individual formats, as usual rules allow.
732
733ename:VK_FORMAT_R32G32_UINT, ename:VK_FORMAT_R32G32_SINT, and
734ename:VK_FORMAT_R32G32_SFLOAT from code:StorageImageExtendedFormats SPIR-V
735capability, are already covered by core Vulkan
736<<formats-mandatory-features-32bit,mandatory format support>>.
737====
738
739  * [[features-shaderStorageImageMultisample]]
740    pname:shaderStorageImageMultisample specifies whether multisampled
741    storage images are supported.
742    If this feature is not enabled, images that are created with a
743    pname:usage that includes ename:VK_IMAGE_USAGE_STORAGE_BIT must: be
744    created with pname:samples equal to ename:VK_SAMPLE_COUNT_1_BIT.
745    This also specifies whether shader modules can: declare the
746    code:StorageImageMultisample and code:ImageMSArray capabilities.
747  * [[features-shaderStorageImageReadWithoutFormat]]
748    pname:shaderStorageImageReadWithoutFormat specifies whether storage
749    images require a format qualifier to be specified when reading.
750ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[]
751    pname:shaderStorageImageReadWithoutFormat applies only to formats listed
752    in the <<formats-without-shader-storage-format,storage without format>>
753    list.
754endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[]
755  * [[features-shaderStorageImageWriteWithoutFormat]]
756    pname:shaderStorageImageWriteWithoutFormat specifies whether storage
757    images require a format qualifier to be specified when writing.
758ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[]
759    pname:shaderStorageImageWriteWithoutFormat applies only to formats
760    listed in the <<formats-without-shader-storage-format,storage without
761    format>> list.
762endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[]
763  * [[features-shaderUniformBufferArrayDynamicIndexing]]
764    pname:shaderUniformBufferArrayDynamicIndexing specifies whether arrays
765    of uniform buffers can: be indexed by _dynamically uniform_ integer
766    expressions in shader code.
767    If this feature is not enabled, resources with a descriptor type of
768    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
769    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: be indexed only by
770    constant integral expressions when aggregated into arrays in shader
771    code.
772    This also specifies whether shader modules can: declare the
773    code:UniformBufferArrayDynamicIndexing capability.
774  * [[features-shaderSampledImageArrayDynamicIndexing]]
775    pname:shaderSampledImageArrayDynamicIndexing specifies whether arrays of
776    samplers or sampled images can: be indexed by dynamically uniform
777    integer expressions in shader code.
778    If this feature is not enabled, resources with a descriptor type of
779    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
780    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
781    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: be indexed only by constant
782    integral expressions when aggregated into arrays in shader code.
783    This also specifies whether shader modules can: declare the
784    code:SampledImageArrayDynamicIndexing capability.
785  * [[features-shaderStorageBufferArrayDynamicIndexing]]
786    pname:shaderStorageBufferArrayDynamicIndexing specifies whether arrays
787    of storage buffers can: be indexed by dynamically uniform integer
788    expressions in shader code.
789    If this feature is not enabled, resources with a descriptor type of
790    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
791    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: be indexed only by
792    constant integral expressions when aggregated into arrays in shader
793    code.
794    This also specifies whether shader modules can: declare the
795    code:StorageBufferArrayDynamicIndexing capability.
796  * [[features-shaderStorageImageArrayDynamicIndexing]]
797    pname:shaderStorageImageArrayDynamicIndexing specifies whether arrays of
798    storage images can: be indexed by dynamically uniform integer
799    expressions in shader code.
800    If this feature is not enabled, resources with a descriptor type of
801    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: be indexed only by constant
802    integral expressions when aggregated into arrays in shader code.
803    This also specifies whether shader modules can: declare the
804    code:StorageImageArrayDynamicIndexing capability.
805  * [[features-shaderClipDistance]] pname:shaderClipDistance specifies
806    whether clip distances are supported in shader code.
807    If this feature is not enabled, any members decorated with the
808    code:ClipDistance built-in decoration must: not be read from or written
809    to in shader modules.
810    This also specifies whether shader modules can: declare the
811    code:ClipDistance capability.
812  * [[features-shaderCullDistance]] pname:shaderCullDistance specifies
813    whether cull distances are supported in shader code.
814    If this feature is not enabled, any members decorated with the
815    code:CullDistance built-in decoration must: not be read from or written
816    to in shader modules.
817    This also specifies whether shader modules can: declare the
818    code:CullDistance capability.
819  * [[features-shaderFloat64]] pname:shaderFloat64 specifies whether 64-bit
820    floats (doubles) are supported in shader code.
821    If this feature is not enabled, 64-bit floating-point types must: not be
822    used in shader code.
823    This also specifies whether shader modules can: declare the code:Float64
824    capability.
825    Declaring and using 64-bit floats is enabled for all storage classes
826    that SPIR-V allows with the code:Float64 capability.
827  * [[features-shaderInt64]] pname:shaderInt64 specifies whether 64-bit
828    integers (signed and unsigned) are supported in shader code.
829    If this feature is not enabled, 64-bit integer types must: not be used
830    in shader code.
831    This also specifies whether shader modules can: declare the code:Int64
832    capability.
833    Declaring and using 64-bit integers is enabled for all storage classes
834    that SPIR-V allows with the code:Int64 capability.
835  * [[features-shaderInt16]] pname:shaderInt16 specifies whether 16-bit
836    integers (signed and unsigned) are supported in shader code.
837    If this feature is not enabled, 16-bit integer types must: not be used
838    in shader code.
839    This also specifies whether shader modules can: declare the code:Int16
840    capability.
841    However, this only enables a subset of the storage classes that SPIR-V
842    allows for the code:Int16 SPIR-V capability: Declaring and using 16-bit
843    integers in the code:Private,
844ifndef::VK_KHR_workgroup_memory_explicit_layout[]
845    code:Workgroup,
846endif::VK_KHR_workgroup_memory_explicit_layout[]
847ifdef::VK_KHR_workgroup_memory_explicit_layout[]
848    code:Workgroup (for non-Block variables),
849endif::VK_KHR_workgroup_memory_explicit_layout[]
850    and code:Function storage classes is enabled, while declaring them in
851    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
852    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
853    not enabled.
854  * [[features-shaderResourceResidency]] pname:shaderResourceResidency
855    specifies whether image operations that return resource residency
856    information are supported in shader code.
857    If this feature is not enabled, the code:OpImageSparse* instructions
858    must: not be used in shader code.
859    This also specifies whether shader modules can: declare the
860    code:SparseResidency capability.
861    The feature requires at least one of the ptext:sparseResidency* features
862    to be supported.
863  * [[features-shaderResourceMinLod]] pname:shaderResourceMinLod specifies
864    whether image operations specifying the minimum resource LOD are
865    supported in shader code.
866    If this feature is not enabled, the code:MinLod image operand must: not
867    be used in shader code.
868    This also specifies whether shader modules can: declare the code:MinLod
869    capability.
870  * [[features-sparseBinding]] pname:sparseBinding specifies whether
871    resource memory can: be managed at opaque sparse block level instead of
872    at the object level.
873    If this feature is not enabled, resource memory must: be bound only on a
874    per-object basis using the fname:vkBindBufferMemory and
875    fname:vkBindImageMemory commands.
876    In this case, buffers and images must: not be created with
877    ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and
878    ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in the pname:flags member
879    of the slink:VkBufferCreateInfo and slink:VkImageCreateInfo structures,
880    respectively.
881    Otherwise resource memory can: be managed as described in
882    <<sparsememory-sparseresourcefeatures,Sparse Resource Features>>.
883  * [[features-sparseResidencyBuffer]] pname:sparseResidencyBuffer specifies
884    whether the device can: access partially resident buffers.
885    If this feature is not enabled, buffers must: not be created with
886    ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags
887    member of the slink:VkBufferCreateInfo structure.
888  * [[features-sparseResidencyImage2D]] pname:sparseResidencyImage2D
889    specifies whether the device can: access partially resident 2D images
890    with 1 sample per pixel.
891    If this feature is not enabled, images with an pname:imageType of
892    ename:VK_IMAGE_TYPE_2D and pname:samples set to
893    ename:VK_SAMPLE_COUNT_1_BIT must: not be created with
894    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
895    of the slink:VkImageCreateInfo structure.
896  * [[features-sparseResidencyImage3D]] pname:sparseResidencyImage3D
897    specifies whether the device can: access partially resident 3D images.
898    If this feature is not enabled, images with an pname:imageType of
899    ename:VK_IMAGE_TYPE_3D must: not be created with
900    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
901    of the slink:VkImageCreateInfo structure.
902  * [[features-sparseResidency2Samples]] pname:sparseResidency2Samples
903    specifies whether the physical device can: access partially resident 2D
904    images with 2 samples per pixel.
905    If this feature is not enabled, images with an pname:imageType of
906    ename:VK_IMAGE_TYPE_2D and pname:samples set to
907    ename:VK_SAMPLE_COUNT_2_BIT must: not be created with
908    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
909    of the slink:VkImageCreateInfo structure.
910  * [[features-sparseResidency4Samples]] pname:sparseResidency4Samples
911    specifies whether the physical device can: access partially resident 2D
912    images with 4 samples per pixel.
913    If this feature is not enabled, images with an pname:imageType of
914    ename:VK_IMAGE_TYPE_2D and pname:samples set to
915    ename:VK_SAMPLE_COUNT_4_BIT must: not be created with
916    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
917    of the slink:VkImageCreateInfo structure.
918  * [[features-sparseResidency8Samples]] pname:sparseResidency8Samples
919    specifies whether the physical device can: access partially resident 2D
920    images with 8 samples per pixel.
921    If this feature is not enabled, images with an pname:imageType of
922    ename:VK_IMAGE_TYPE_2D and pname:samples set to
923    ename:VK_SAMPLE_COUNT_8_BIT must: not be created with
924    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
925    of the slink:VkImageCreateInfo structure.
926  * [[features-sparseResidency16Samples]] pname:sparseResidency16Samples
927    specifies whether the physical device can: access partially resident 2D
928    images with 16 samples per pixel.
929    If this feature is not enabled, images with an pname:imageType of
930    ename:VK_IMAGE_TYPE_2D and pname:samples set to
931    ename:VK_SAMPLE_COUNT_16_BIT must: not be created with
932    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
933    of the slink:VkImageCreateInfo structure.
934  * [[features-sparseResidencyAliased]] pname:sparseResidencyAliased
935    specifies whether the physical device can: correctly access data aliased
936    into multiple locations.
937    If this feature is not enabled, the
938    ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT and
939    ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT enum values must: not be used
940    in pname:flags members of the slink:VkBufferCreateInfo and
941    slink:VkImageCreateInfo structures, respectively.
942  * [[features-variableMultisampleRate]] pname:variableMultisampleRate
943    specifies whether all pipelines that will be bound to a command buffer
944    during a <<renderpass-noattachments, subpass which uses no attachments>>
945    must: have the same value for
946    slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
947    If set to ename:VK_TRUE, the implementation supports variable
948    multisample rates in a subpass which uses no attachments.
949    If set to ename:VK_FALSE, then all pipelines bound in such a subpass
950    must: have the same multisample rate.
951    This has no effect in situations where a subpass uses any attachments.
952  * [[features-inheritedQueries]] pname:inheritedQueries specifies whether a
953    secondary command buffer may: be executed while a query is active.
954
955include::{generated}/validity/structs/VkPhysicalDeviceFeatures.adoc[]
956--
957
958ifdef::VK_VERSION_1_2[]
959[open,refpage='VkPhysicalDeviceVulkan11Features',desc='Structure describing the Vulkan 1.1 features that can be supported by an implementation',type='structs']
960--
961The sname:VkPhysicalDeviceVulkan11Features structure is defined as:
962
963include::{generated}/api/structs/VkPhysicalDeviceVulkan11Features.adoc[]
964
965This structure describes the following features:
966
967  * pname:sType is the type of this structure.
968  * pname:pNext is `NULL` or a pointer to a structure extending this
969    structure.
970
971:anchor-prefix:
972include::{chapters}/features.adoc[tag=VK_KHR_16bit_storage-features]
973include::{chapters}/features.adoc[tag=VK_KHR_multiview-features]
974include::{chapters}/features.adoc[tag=VK_KHR_variable_pointers-features]
975include::{chapters}/features.adoc[tag=VK_KHR_protected_memory-features]
976include::{chapters}/features.adoc[tag=VK_KHR_sampler_ycbcr_conversion-features]
977include::{chapters}/features.adoc[tag=VK_KHR_shader_draw_parameters-features]
978
979:refpage: VkPhysicalDeviceVulkan11Features
980include::{chapters}/features.adoc[tag=features]
981
982include::{generated}/validity/structs/VkPhysicalDeviceVulkan11Features.adoc[]
983--
984
985[open,refpage='VkPhysicalDeviceVulkan12Features',desc='Structure describing the Vulkan 1.2 features that can be supported by an implementation',type='structs']
986--
987The sname:VkPhysicalDeviceVulkan12Features structure is defined as:
988
989include::{generated}/api/structs/VkPhysicalDeviceVulkan12Features.adoc[]
990
991This structure describes the following features:
992
993  * pname:sType is the type of this structure.
994  * pname:pNext is `NULL` or a pointer to a structure extending this
995    structure.
996
997:anchor-prefix:
998  * [[features-samplerMirrorClampToEdge]] pname:samplerMirrorClampToEdge
999    indicates whether the implementation supports the
1000    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.
1001    If this feature is not enabled, the
1002    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode
1003    must: not be used.
1004  * [[features-drawIndirectCount]] pname:drawIndirectCount indicates whether
1005    the implementation supports the flink:vkCmdDrawIndirectCount and
1006    flink:vkCmdDrawIndexedIndirectCount functions.
1007    If this feature is not enabled, these functions must: not be used.
1008include::{chapters}/features.adoc[tag=VK_KHR_8bit_storage-features]
1009include::{chapters}/features.adoc[tag=VK_KHR_shader_atomic_int64-features]
1010include::{chapters}/features.adoc[tag=VK_KHR_shader_float16_int8-features]
1011  * [[features-descriptorIndexing]] pname:descriptorIndexing indicates
1012    whether the implementation supports the minimum set of descriptor
1013    indexing features as described in the <<features-requirements, Feature
1014    Requirements>> section.
1015    Enabling the pname:descriptorIndexing member when flink:vkCreateDevice
1016    is called does not imply the other minimum descriptor indexing features
1017    are also enabled.
1018    Those other descriptor indexing features must: be enabled individually
1019    as needed by the application.
1020include::{chapters}/features.adoc[tag=VK_EXT_descriptor_indexing-features]
1021  * [[features-samplerFilterMinmax]] pname:samplerFilterMinmax indicates
1022    whether the implementation supports a minimum set of required formats
1023    supporting min/max filtering as defined by the
1024    <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,
1025    pname:filterMinmaxSingleComponentFormats>> property minimum
1026    requirements.
1027    If this feature is not enabled, then
1028    slink:VkSamplerReductionModeCreateInfo must: only use
1029    ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE.
1030include::{chapters}/features.adoc[tag=VK_EXT_scalar_block_layout-features]
1031include::{chapters}/features.adoc[tag=VK_KHR_imageless_framebuffer-features]
1032include::{chapters}/features.adoc[tag=VK_KHR_uniform_buffer_standard_layout-features]
1033include::{chapters}/features.adoc[tag=VK_KHR_shader_subgroup_extended_types-features]
1034include::{chapters}/features.adoc[tag=VK_KHR_separate_depth_stencil_layouts-features]
1035include::{chapters}/features.adoc[tag=VK_EXT_host_query_reset-features]
1036include::{chapters}/features.adoc[tag=VK_KHR_timeline_semaphore-features]
1037include::{chapters}/features.adoc[tag=VK_EXT_buffer_device_address-features]
1038include::{chapters}/features.adoc[tag=VK_KHR_vulkan_memory_model-features]
1039  * [[features-shaderOutputViewportIndex]] pname:shaderOutputViewportIndex
1040    indicates whether the implementation supports the
1041    code:ShaderViewportIndex SPIR-V capability enabling variables decorated
1042    with the code:ViewportIndex built-in to be exported from
1043ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[mesh,]
1044    vertex or tessellation evaluation shaders.
1045    If this feature is not enabled, the code:ViewportIndex built-in
1046    decoration must: not be used on outputs in
1047ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[mesh,]
1048    vertex or tessellation evaluation shaders.
1049  * [[features-shaderOutputLayer]] pname:shaderOutputLayer indicates whether
1050    the implementation supports the code:ShaderLayer SPIR-V capability
1051    enabling variables decorated with the code:Layer built-in to be exported
1052    from
1053ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[mesh,]
1054    vertex or tessellation evaluation shaders.
1055    If this feature is not enabled, the code:Layer built-in decoration must:
1056    not be used on outputs in
1057ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[mesh,]
1058    vertex or tessellation evaluation shaders.
1059  * [[features-subgroupBroadcastDynamicId]] If
1060    pname:subgroupBroadcastDynamicId is ename:VK_TRUE, the "`Id`" operand of
1061    code:OpGroupNonUniformBroadcast can: be dynamically uniform within a
1062    subgroup, and the "`Index`" operand of
1063    code:OpGroupNonUniformQuadBroadcast can: be dynamically uniform within
1064    the derivative group.
1065    If it is ename:VK_FALSE, these operands must: be constants.
1066
1067:refpage: VkPhysicalDeviceVulkan12Features
1068include::{chapters}/features.adoc[tag=features]
1069
1070include::{generated}/validity/structs/VkPhysicalDeviceVulkan12Features.adoc[]
1071--
1072endif::VK_VERSION_1_2[]
1073
1074ifdef::VK_VERSION_1_3[]
1075[open,refpage='VkPhysicalDeviceVulkan13Features',desc='Structure describing the Vulkan 1.3 features that can be supported by an implementation',type='structs']
1076--
1077The sname:VkPhysicalDeviceVulkan13Features structure is defined as:
1078
1079include::{generated}/api/structs/VkPhysicalDeviceVulkan13Features.adoc[]
1080
1081This structure describes the following features:
1082
1083  * pname:sType is the type of this structure.
1084  * pname:pNext is `NULL` or a pointer to a structure extending this
1085    structure.
1086
1087:anchor-prefix:
1088include::{chapters}/features.adoc[tag=VK_EXT_image_robustness-features]
1089include::{chapters}/features.adoc[tag=VK_EXT_inline_uniform_block-features]
1090include::{chapters}/features.adoc[tag=VK_EXT_pipeline_creation_cache_control-features]
1091include::{chapters}/features.adoc[tag=VK_EXT_private_data-features]
1092include::{chapters}/features.adoc[tag=VK_EXT_shader_demote_to_helper_invocation-features]
1093include::{chapters}/features.adoc[tag=VK_KHR_shader_terminate_invocation-features]
1094include::{chapters}/features.adoc[tag=VK_EXT_subgroup_size_control-features]
1095include::{chapters}/features.adoc[tag=VK_KHR_synchronization2-features]
1096include::{chapters}/features.adoc[tag=VK_EXT_texture_compression_astc_hdr-features]
1097include::{chapters}/features.adoc[tag=VK_KHR_zero_initialize_workgroup_memory-features]
1098include::{chapters}/features.adoc[tag=VK_KHR_dynamic_rendering-features]
1099include::{chapters}/features.adoc[tag=VK_KHR_shader_integer_dot_product-features]
1100include::{chapters}/features.adoc[tag=VK_KHR_maintenance4-features]
1101
1102:refpage: VkPhysicalDeviceVulkan13Features
1103include::{chapters}/features.adoc[tag=features]
1104
1105include::{generated}/validity/structs/VkPhysicalDeviceVulkan13Features.adoc[]
1106--
1107endif::VK_VERSION_1_3[]
1108
1109ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
1110[open,refpage='VkPhysicalDeviceVariablePointersFeatures',desc='Structure describing variable pointers features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointersFeaturesKHR VkPhysicalDeviceVariablePointerFeaturesKHR']
1111--
1112The sname:VkPhysicalDeviceVariablePointersFeatures structure is defined as:
1113
1114include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeatures.adoc[]
1115
1116ifdef::VK_VERSION_1_1[]
1117include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeatures.adoc[]
1118endif::VK_VERSION_1_1[]
1119
1120ifdef::VK_KHR_variable_pointers[]
1121or the equivalent
1122
1123include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeaturesKHR.adoc[]
1124
1125include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeaturesKHR.adoc[]
1126endif::VK_KHR_variable_pointers[]
1127
1128This structure describes the following features:
1129
1130  * pname:sType is the type of this structure.
1131  * pname:pNext is `NULL` or a pointer to a structure extending this
1132    structure.
1133
1134// Must have preceding whitespace
1135ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1136ifndef::VK_VERSION_1_2[:anchor-prefix:]
1137// tag::VK_KHR_variable_pointers-features[]
1138  * [[{anchor-prefix}features-variablePointersStorageBuffer]]
1139    pname:variablePointersStorageBuffer specifies whether the implementation
1140    supports the SPIR-V code:VariablePointersStorageBuffer capability.
1141    When this feature is not enabled, shader modules must: not declare the
1142    `SPV_KHR_variable_pointers` extension or the
1143    code:VariablePointersStorageBuffer capability.
1144  * [[{anchor-prefix}features-variablePointers]] pname:variablePointers
1145    specifies whether the implementation supports the SPIR-V
1146    code:VariablePointers capability.
1147    When this feature is not enabled, shader modules must: not declare the
1148    code:VariablePointers capability.
1149// end::VK_KHR_variable_pointers-features[]
1150
1151:refpage: VkPhysicalDeviceVariablePointersFeatures
1152include::{chapters}/features.adoc[tag=features]
1153
1154.Valid Usage
1155****
1156  * [[VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431]]
1157    If pname:variablePointers is enabled then
1158    pname:variablePointersStorageBuffer must: also be enabled
1159****
1160
1161include::{generated}/validity/structs/VkPhysicalDeviceVariablePointersFeatures.adoc[]
1162--
1163endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
1164
1165ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1166[open,refpage='VkPhysicalDeviceMultiviewFeatures',desc='Structure describing multiview features that can be supported by an implementation',type='structs']
1167--
1168The sname:VkPhysicalDeviceMultiviewFeatures structure is defined as:
1169
1170include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeatures.adoc[]
1171
1172ifdef::VK_KHR_multiview[]
1173or the equivalent
1174
1175include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeaturesKHR.adoc[]
1176endif::VK_KHR_multiview[]
1177
1178This structure describes the following features:
1179
1180  * pname:sType is the type of this structure.
1181  * pname:pNext is `NULL` or a pointer to a structure extending this
1182    structure.
1183
1184// Must have preceding whitespace
1185ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1186ifndef::VK_VERSION_1_2[:anchor-prefix:]
1187// tag::VK_KHR_multiview-features[]
1188  * [[{anchor-prefix}features-multiview]] pname:multiview specifies whether
1189    the implementation supports multiview rendering within a render pass.
1190    If this feature is not enabled, the view mask of each subpass must:
1191    always be zero.
1192  * [[{anchor-prefix}features-multiview-gs]] pname:multiviewGeometryShader
1193    specifies whether the implementation supports multiview rendering within
1194    a render pass, with <<geometry,geometry shaders>>.
1195    If this feature is not enabled, then a pipeline compiled against a
1196    subpass with a non-zero view mask must: not include a geometry shader.
1197  * [[{anchor-prefix}features-multiview-tess]]
1198    pname:multiviewTessellationShader specifies whether the implementation
1199    supports multiview rendering within a render pass, with
1200    <<tessellation,tessellation shaders>>.
1201    If this feature is not enabled, then a pipeline compiled against a
1202    subpass with a non-zero view mask must: not include any tessellation
1203    shaders.
1204// end::VK_KHR_multiview-features[]
1205
1206:refpage: VkPhysicalDeviceMultiviewFeatures
1207include::{chapters}/features.adoc[tag=features]
1208
1209.Valid Usage
1210****
1211  * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580]]
1212    If pname:multiviewGeometryShader is enabled then pname:multiview must:
1213    also be enabled
1214  * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581]]
1215    If pname:multiviewTessellationShader is enabled then pname:multiview
1216    must: also be enabled
1217****
1218
1219include::{generated}/validity/structs/VkPhysicalDeviceMultiviewFeatures.adoc[]
1220--
1221endif::VK_VERSION_1_1,VK_KHR_multiview[]
1222
1223ifdef::VK_EXT_shader_atomic_float[]
1224[open,refpage='VkPhysicalDeviceShaderAtomicFloatFeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float',type='structs']
1225--
1226The slink:VkPhysicalDeviceShaderAtomicFloatFeaturesEXT structure is defined
1227as:
1228
1229include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.adoc[]
1230
1231This structure describes the following features:
1232
1233  * pname:sType is the type of this structure.
1234  * pname:pNext is `NULL` or a pointer to a structure extending this
1235    structure.
1236
1237// tag::VK_EXT_shader_atomic_float-features[]
1238  * [[features-shaderBufferFloat32Atomics]] pname:shaderBufferFloat32Atomics
1239    indicates whether shaders can: perform 32-bit floating-point load, store
1240    and exchange atomic operations on storage buffers.
1241  * [[features-shaderBufferFloat32AtomicAdd]]
1242    pname:shaderBufferFloat32AtomicAdd indicates whether shaders can:
1243    perform 32-bit floating-point add atomic operations on storage buffers.
1244  * [[features-shaderBufferFloat64Atomics]] pname:shaderBufferFloat64Atomics
1245    indicates whether shaders can: perform 64-bit floating-point load, store
1246    and exchange atomic operations on storage buffers.
1247  * [[features-shaderBufferFloat64AtomicAdd]]
1248    pname:shaderBufferFloat64AtomicAdd indicates whether shaders can:
1249    perform 64-bit floating-point add atomic operations on storage buffers.
1250  * [[features-shaderSharedFloat32Atomics]] pname:shaderSharedFloat32Atomics
1251    indicates whether shaders can: perform 32-bit floating-point load, store
1252    and exchange atomic operations on shared
1253ifdef::VK_EXT_mesh_shader[]
1254    and payload
1255endif::VK_EXT_mesh_shader[]
1256    memory.
1257  * [[features-shaderSharedFloat32AtomicAdd]]
1258    pname:shaderSharedFloat32AtomicAdd indicates whether shaders can:
1259    perform 32-bit floating-point add atomic operations on shared
1260ifdef::VK_EXT_mesh_shader[]
1261    and payload
1262endif::VK_EXT_mesh_shader[]
1263    memory.
1264  * [[features-shaderSharedFloat64Atomics]] pname:shaderSharedFloat64Atomics
1265    indicates whether shaders can: perform 64-bit floating-point load, store
1266    and exchange atomic operations on shared
1267ifdef::VK_EXT_mesh_shader[]
1268    and payload
1269endif::VK_EXT_mesh_shader[]
1270    memory.
1271  * [[features-shaderSharedFloat64AtomicAdd]]
1272    pname:shaderSharedFloat64AtomicAdd indicates whether shaders can:
1273    perform 64-bit floating-point add atomic operations on shared
1274ifdef::VK_EXT_mesh_shader[]
1275    and payload
1276endif::VK_EXT_mesh_shader[]
1277    memory.
1278  * [[features-shaderImageFloat32Atomics]] pname:shaderImageFloat32Atomics
1279    indicates whether shaders can: perform 32-bit floating-point load, store
1280    and exchange atomic image operations.
1281  * [[features-shaderImageFloat32AtomicAdd]]
1282    pname:shaderImageFloat32AtomicAdd indicates whether shaders can: perform
1283    32-bit floating-point add atomic image operations.
1284  * [[features-sparseImageFloat32Atomics]] pname:sparseImageFloat32Atomics
1285    indicates whether 32-bit floating-point load, store and exchange atomic
1286    operations can: be used on sparse images.
1287  * [[features-sparseImageFloat32AtomicAdd]]
1288    pname:sparseImageFloat32AtomicAdd indicates whether 32-bit
1289    floating-point add atomic operations can: be used on sparse images.
1290// end::VK_EXT_shader_atomic_float-features[]
1291
1292:refpage: VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
1293include::{chapters}/features.adoc[tag=features]
1294
1295include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.adoc[]
1296--
1297endif::VK_EXT_shader_atomic_float[]
1298
1299ifdef::VK_EXT_shader_atomic_float2[]
1300[open,refpage='VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float2',type='structs']
1301--
1302The slink:VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT structure is defined
1303as:
1304
1305include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.adoc[]
1306
1307This structure describes the following features:
1308
1309  * pname:sType is the type of this structure.
1310  * pname:pNext is `NULL` or a pointer to a structure extending this
1311    structure.
1312
1313// tag::VK_EXT_shader_atomic_float2-features[]
1314  * [[features-shaderBufferFloat16Atomics]] pname:shaderBufferFloat16Atomics
1315    indicates whether shaders can: perform 16-bit floating-point load,
1316    store, and exchange atomic operations on storage buffers.
1317  * [[features-shaderBufferFloat16AtomicAdd]]
1318    pname:shaderBufferFloat16AtomicAdd indicates whether shaders can:
1319    perform 16-bit floating-point add atomic operations on storage buffers.
1320  * [[features-shaderBufferFloat16AtomicMinMax]]
1321    pname:shaderBufferFloat16AtomicMinMax indicates whether shaders can:
1322    perform 16-bit floating-point min and max atomic operations on storage
1323    buffers.
1324  * [[features-shaderBufferFloat32AtomicMinMax]]
1325    pname:shaderBufferFloat32AtomicMinMax indicates whether shaders can:
1326    perform 32-bit floating-point min and max atomic operations on storage
1327    buffers.
1328  * [[features-shaderBufferFloat64AtomicMinMax]]
1329    pname:shaderBufferFloat64AtomicMinMax indicates whether shaders can:
1330    perform 64-bit floating-point min and max atomic operations on storage
1331    buffers.
1332  * [[features-shaderSharedFloat16Atomics]] pname:shaderSharedFloat16Atomics
1333    indicates whether shaders can: perform 16-bit floating-point load, store
1334    and exchange atomic operations on shared
1335ifdef::VK_EXT_mesh_shader[]
1336    and payload
1337endif::VK_EXT_mesh_shader[]
1338    memory.
1339  * [[features-shaderSharedFloat16AtomicAdd]]
1340    pname:shaderSharedFloat16AtomicAdd indicates whether shaders can:
1341    perform 16-bit floating-point add atomic operations on shared
1342ifdef::VK_EXT_mesh_shader[]
1343    and payload
1344endif::VK_EXT_mesh_shader[]
1345    memory.
1346  * [[features-shaderSharedFloat16AtomicMinMax]]
1347    pname:shaderSharedFloat16AtomicMinMax indicates whether shaders can:
1348    perform 16-bit floating-point min and max atomic operations on shared
1349ifdef::VK_EXT_mesh_shader[]
1350    and payload
1351endif::VK_EXT_mesh_shader[]
1352    memory.
1353  * [[features-shaderSharedFloat32AtomicMinMax]]
1354    pname:shaderSharedFloat32AtomicMinMax indicates whether shaders can:
1355    perform 32-bit floating-point min and max atomic operations on shared
1356ifdef::VK_EXT_mesh_shader[]
1357    and payload
1358endif::VK_EXT_mesh_shader[]
1359    memory.
1360  * [[features-shaderSharedFloat64AtomicMinMax]]
1361    pname:shaderSharedFloat64AtomicMinMax indicates whether shaders can:
1362    perform 64-bit floating-point min and max atomic operations on shared
1363ifdef::VK_EXT_mesh_shader[]
1364    and payload
1365endif::VK_EXT_mesh_shader[]
1366    memory.
1367  * [[features-shaderImageFloat32AtomicMinMax]]
1368    pname:shaderImageFloat32AtomicMinMax indicates whether shaders can:
1369    perform 32-bit floating-point min and max atomic image operations.
1370  * [[features-sparseImageFloat32AtomicMinMax]]
1371    pname:sparseImageFloat32AtomicMinMax indicates whether 32-bit
1372    floating-point min and max atomic operations can: be used on sparse
1373    images.
1374// end::VK_EXT_shader_atomic_float2-features[]
1375
1376:refpage: VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
1377include::{chapters}/features.adoc[tag=features]
1378
1379include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.adoc[]
1380--
1381endif::VK_EXT_shader_atomic_float2[]
1382
1383ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
1384[open,refpage='VkPhysicalDeviceShaderAtomicInt64Features',desc='Structure describing features supported by VK_KHR_shader_atomic_int64',type='structs',alias='VkPhysicalDeviceShaderAtomicInt64FeaturesKHR']
1385--
1386The slink:VkPhysicalDeviceShaderAtomicInt64Features structure is defined as:
1387
1388include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64Features.adoc[]
1389
1390ifdef::VK_KHR_shader_atomic_int64[]
1391or the equivalent
1392
1393include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.adoc[]
1394endif::VK_KHR_shader_atomic_int64[]
1395
1396This structure describes the following features:
1397
1398  * pname:sType is the type of this structure.
1399  * pname:pNext is `NULL` or a pointer to a structure extending this
1400    structure.
1401
1402// Must have preceding whitespace
1403ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1404ifndef::VK_VERSION_1_2[:anchor-prefix:]
1405// tag::VK_KHR_shader_atomic_int64-features[]
1406  * [[{anchor-prefix}features-shaderBufferInt64Atomics]]
1407    pname:shaderBufferInt64Atomics indicates whether shaders can: perform
1408    64-bit unsigned and signed integer atomic operations on buffers.
1409  * [[{anchor-prefix}features-shaderSharedInt64Atomics]]
1410    pname:shaderSharedInt64Atomics indicates whether shaders can: perform
1411    64-bit unsigned and signed integer atomic operations on shared
1412ifdef::VK_EXT_mesh_shader[]
1413    and payload
1414endif::VK_EXT_mesh_shader[]
1415    memory.
1416// end::VK_KHR_shader_atomic_int64-features[]
1417
1418:refpage: VkPhysicalDeviceShaderAtomicInt64Features
1419include::{chapters}/features.adoc[tag=features]
1420
1421include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicInt64Features.adoc[]
1422--
1423endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
1424
1425ifdef::VK_EXT_shader_image_atomic_int64[]
1426[open,refpage='VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_image_atomic_int64',type='structs']
1427--
1428The slink:VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT structure is
1429defined as:
1430
1431include::{generated}/api/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.adoc[]
1432
1433This structure describes the following features:
1434
1435  * pname:sType is the type of this structure.
1436  * pname:pNext is `NULL` or a pointer to a structure extending this
1437    structure.
1438  * [[features-shaderImageInt64Atomics]] pname:shaderImageInt64Atomics
1439    indicates whether shaders can: support 64-bit unsigned and signed
1440    integer atomic operations on images.
1441  * [[features-sparseImageInt64Atomics]] pname:sparseImageInt64Atomics
1442    indicates whether 64-bit integer atomics can: be used on sparse images.
1443
1444:refpage: VkPhysicalDeviceShaderAtomicInt64FeaturesEXT
1445include::{chapters}/features.adoc[tag=features]
1446
1447include::{generated}/validity/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.adoc[]
1448--
1449endif::VK_EXT_shader_image_atomic_int64[]
1450
1451ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[]
1452[open,refpage='VkPhysicalDevice8BitStorageFeatures',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs',alias='VkPhysicalDevice8BitStorageFeaturesKHR']
1453--
1454The slink:VkPhysicalDevice8BitStorageFeatures structure is defined as:
1455
1456include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeatures.adoc[]
1457
1458ifdef::VK_KHR_8bit_storage[]
1459or the equivalent
1460
1461include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeaturesKHR.adoc[]
1462endif::VK_KHR_8bit_storage[]
1463
1464This structure describes the following features:
1465
1466  * pname:sType is the type of this structure.
1467  * pname:pNext is `NULL` or a pointer to a structure extending this
1468    structure.
1469
1470// Must have preceding whitespace
1471ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1472ifndef::VK_VERSION_1_2[:anchor-prefix:]
1473// tag::VK_KHR_8bit_storage-features[]
1474  * [[{anchor-prefix}features-storageBuffer8BitAccess]]
1475    pname:storageBuffer8BitAccess indicates whether objects in the
1476    code:StorageBuffer,
1477ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,]
1478ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1479    or code:PhysicalStorageBuffer
1480endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1481    storage class with the code:Block decoration can: have 8-bit integer
1482    members.
1483    If this feature is not enabled, 8-bit integer members must: not be used
1484    in such objects.
1485    This also indicates whether shader modules can: declare the
1486    code:StorageBuffer8BitAccess capability.
1487  * [[{anchor-prefix}features-uniformAndStorageBuffer8BitAccess]]
1488    pname:uniformAndStorageBuffer8BitAccess indicates whether objects in the
1489    code:Uniform storage class with the code:Block decoration can: have
1490    8-bit integer members.
1491    If this feature is not enabled, 8-bit integer members must: not be used
1492    in such objects.
1493    This also indicates whether shader modules can: declare the
1494    code:UniformAndStorageBuffer8BitAccess capability.
1495  * [[{anchor-prefix}features-storagePushConstant8]]
1496    pname:storagePushConstant8 indicates whether objects in the
1497    code:PushConstant storage class can: have 8-bit integer members.
1498    If this feature is not enabled, 8-bit integer members must: not be used
1499    in such objects.
1500    This also indicates whether shader modules can: declare the
1501    code:StoragePushConstant8 capability.
1502// end::VK_KHR_8bit_storage-features[]
1503
1504:refpage: VkPhysicalDevice8BitStorageFeatures
1505include::{chapters}/features.adoc[tag=features]
1506
1507include::{generated}/validity/structs/VkPhysicalDevice8BitStorageFeatures.adoc[]
1508--
1509endif::VK_VERSION_1_2,VK_KHR_8bit_storage[]
1510
1511ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
1512[open,refpage='VkPhysicalDevice16BitStorageFeatures',desc='Structure describing features supported by VK_KHR_16bit_storage',type='structs']
1513--
1514The slink:VkPhysicalDevice16BitStorageFeatures structure is defined as:
1515
1516include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeatures.adoc[]
1517
1518ifdef::VK_KHR_16bit_storage[]
1519or the equivalent
1520
1521include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeaturesKHR.adoc[]
1522endif::VK_KHR_16bit_storage[]
1523
1524This structure describes the following features:
1525
1526  * pname:sType is the type of this structure.
1527  * pname:pNext is `NULL` or a pointer to a structure extending this
1528    structure.
1529
1530// Must have preceding whitespace
1531ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1532ifndef::VK_VERSION_1_2[:anchor-prefix:]
1533// tag::VK_KHR_16bit_storage-features[]
1534  * [[{anchor-prefix}features-storageBuffer16BitAccess]]
1535    pname:storageBuffer16BitAccess specifies whether objects in the
1536    code:StorageBuffer,
1537ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,]
1538ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1539    or code:PhysicalStorageBuffer
1540endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1541    storage class with the code:Block decoration can: have 16-bit integer
1542    and 16-bit floating-point members.
1543    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1544    members must: not be used in such objects.
1545    This also specifies whether shader modules can: declare the
1546    code:StorageBuffer16BitAccess capability.
1547  * [[{anchor-prefix}features-uniformAndStorageBuffer16BitAccess]]
1548    pname:uniformAndStorageBuffer16BitAccess specifies whether objects in
1549    the code:Uniform storage class with the code:Block decoration can: have
1550    16-bit integer and 16-bit floating-point members.
1551    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1552    members must: not be used in such objects.
1553    This also specifies whether shader modules can: declare the
1554    code:UniformAndStorageBuffer16BitAccess capability.
1555  * [[{anchor-prefix}features-storagePushConstant16]]
1556    pname:storagePushConstant16 specifies whether objects in the
1557    code:PushConstant storage class can: have 16-bit integer and 16-bit
1558    floating-point members.
1559    If this feature is not enabled, 16-bit integer or floating-point members
1560    must: not be used in such objects.
1561    This also specifies whether shader modules can: declare the
1562    code:StoragePushConstant16 capability.
1563  * [[{anchor-prefix}features-storageInputOutput16]]
1564    pname:storageInputOutput16 specifies whether objects in the code:Input
1565    and code:Output storage classes can: have 16-bit integer and 16-bit
1566    floating-point members.
1567    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1568    members must: not be used in such objects.
1569    This also specifies whether shader modules can: declare the
1570    code:StorageInputOutput16 capability.
1571// end::VK_KHR_16bit_storage-features[]
1572
1573:refpage: VkPhysicalDevice16BitStorageFeatures
1574include::{chapters}/features.adoc[tag=features]
1575
1576include::{generated}/validity/structs/VkPhysicalDevice16BitStorageFeatures.adoc[]
1577--
1578endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
1579
1580ifdef::VK_VERSION_1_2,VK_KHR_shader_float16_int8[]
1581[open,refpage='VkPhysicalDeviceShaderFloat16Int8Features',desc='Structure describing features supported by VK_KHR_shader_float16_int8',type='structs',alias='VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR']
1582--
1583The sname:VkPhysicalDeviceShaderFloat16Int8Features structure is defined as:
1584
1585include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8Features.adoc[]
1586
1587ifdef::VK_KHR_shader_float16_int8[]
1588or the equivalent
1589
1590include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.adoc[]
1591
1592include::{generated}/api/structs/VkPhysicalDeviceFloat16Int8FeaturesKHR.adoc[]
1593endif::VK_KHR_shader_float16_int8[]
1594
1595This structure describes the following features:
1596
1597  * pname:sType is the type of this structure.
1598  * pname:pNext is `NULL` or a pointer to a structure extending this
1599    structure.
1600
1601// Must have preceding whitespace
1602ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1603ifndef::VK_VERSION_1_2[:anchor-prefix:]
1604// tag::VK_KHR_shader_float16_int8-features[]
1605  * [[{anchor-prefix}features-shaderFloat16]] pname:shaderFloat16 indicates
1606    whether 16-bit floats (halfs) are supported in shader code.
1607    This also indicates whether shader modules can: declare the code:Float16
1608    capability.
1609    However, this only enables a subset of the storage classes that SPIR-V
1610    allows for the code:Float16 SPIR-V capability: Declaring and using
1611    16-bit floats in the code:Private,
1612ifndef::VK_KHR_workgroup_memory_explicit_layout[]
1613    code:Workgroup,
1614endif::VK_KHR_workgroup_memory_explicit_layout[]
1615ifdef::VK_KHR_workgroup_memory_explicit_layout[]
1616    code:Workgroup (for non-Block variables),
1617endif::VK_KHR_workgroup_memory_explicit_layout[]
1618    and code:Function storage classes is enabled, while declaring them in
1619    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
1620    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
1621    not enabled.
1622  * [[{anchor-prefix}features-shaderInt8]] pname:shaderInt8 indicates
1623    whether 8-bit integers (signed and unsigned) are supported in shader
1624    code.
1625    This also indicates whether shader modules can: declare the code:Int8
1626    capability.
1627    However, this only enables a subset of the storage classes that SPIR-V
1628    allows for the code:Int8 SPIR-V capability: Declaring and using 8-bit
1629    integers in the code:Private,
1630ifndef::VK_KHR_workgroup_memory_explicit_layout[]
1631    code:Workgroup,
1632endif::VK_KHR_workgroup_memory_explicit_layout[]
1633ifdef::VK_KHR_workgroup_memory_explicit_layout[]
1634    code:Workgroup (for non-Block variables),
1635endif::VK_KHR_workgroup_memory_explicit_layout[]
1636    and code:Function storage classes is enabled, while declaring them in
1637    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
1638    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
1639    not enabled.
1640// end::VK_KHR_shader_float16_int8-features[]
1641
1642:refpage: VkPhysicalDeviceShaderFloat16Int8Features
1643include::{chapters}/features.adoc[tag=features]
1644
1645include::{generated}/validity/structs/VkPhysicalDeviceShaderFloat16Int8Features.adoc[]
1646--
1647endif::VK_VERSION_1_2,VK_KHR_shader_float16_int8[]
1648
1649ifdef::VK_KHR_shader_clock[]
1650[open,refpage='VkPhysicalDeviceShaderClockFeaturesKHR',desc='Structure describing features supported by VK_KHR_shader_clock',type='structs']
1651--
1652The slink:VkPhysicalDeviceShaderClockFeaturesKHR structure is defined as:
1653
1654include::{generated}/api/structs/VkPhysicalDeviceShaderClockFeaturesKHR.adoc[]
1655
1656This structure describes the following features:
1657
1658  * pname:sType is the type of this structure.
1659  * pname:pNext is `NULL` or a pointer to a structure extending this
1660    structure.
1661  * [[features-shaderSubgroupClock]] pname:shaderSubgroupClock indicates
1662    whether shaders can: perform code:Subgroup scoped clock reads.
1663  * [[features-shaderDeviceClock]] pname:shaderDeviceClock indicates whether
1664    shaders can: perform code:Device scoped clock reads.
1665
1666:refpage: VkPhysicalDeviceShaderClockFeaturesKHR
1667include::{chapters}/features.adoc[tag=features]
1668
1669include::{generated}/validity/structs/VkPhysicalDeviceShaderClockFeaturesKHR.adoc[]
1670--
1671endif::VK_KHR_shader_clock[]
1672
1673ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1674[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeatures',desc='Structure describing {YCbCr} conversion features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR']
1675--
1676The sname:VkPhysicalDeviceSamplerYcbcrConversionFeatures structure is
1677defined as:
1678
1679include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.adoc[]
1680
1681ifdef::VK_KHR_sampler_ycbcr_conversion[]
1682or the equivalent
1683
1684include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.adoc[]
1685endif::VK_KHR_sampler_ycbcr_conversion[]
1686
1687This structure describes the following feature:
1688
1689  * pname:sType is the type of this structure.
1690  * pname:pNext is `NULL` or a pointer to a structure extending this
1691    structure.
1692
1693// Must have preceding whitespace
1694ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1695ifndef::VK_VERSION_1_2[:anchor-prefix:]
1696// tag::VK_KHR_sampler_ycbcr_conversion-features[]
1697  * [[{anchor-prefix}features-samplerYcbcrConversion]]
1698    pname:samplerYcbcrConversion specifies whether the implementation
1699    supports <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>>.
1700    If pname:samplerYcbcrConversion is ename:VK_FALSE, sampler {YCbCr}
1701    conversion is not supported, and samplers using sampler {YCbCr}
1702    conversion must: not be used.
1703// end::VK_KHR_sampler_ycbcr_conversion-features[]
1704
1705:refpage: VkPhysicalDeviceSamplerYcbcrConversionFeatures
1706include::{chapters}/features.adoc[tag=features]
1707
1708include::{generated}/validity/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.adoc[]
1709--
1710endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1711
1712ifdef::VK_VERSION_1_1[]
1713[open,refpage='VkPhysicalDeviceProtectedMemoryFeatures',desc='Structure describing protected memory features that can be supported by an implementation',type='structs']
1714--
1715The sname:VkPhysicalDeviceProtectedMemoryFeatures structure is defined as:
1716
1717include::{generated}/api/structs/VkPhysicalDeviceProtectedMemoryFeatures.adoc[]
1718
1719This structure describes the following feature:
1720
1721  * pname:sType is the type of this structure.
1722  * pname:pNext is `NULL` or a pointer to a structure extending this
1723    structure.
1724
1725// Must have preceding whitespace
1726ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1727ifndef::VK_VERSION_1_2[:anchor-prefix:]
1728// tag::VK_KHR_protected_memory-features[]
1729  * [[{anchor-prefix}features-protectedMemory]] pname:protectedMemory
1730    specifies whether <<memory-protected-memory, protected memory>> is
1731    supported.
1732// end::VK_KHR_protected_memory-features[]
1733
1734:refpage: VkPhysicalDeviceProtectedMemoryFeatures
1735include::{chapters}/features.adoc[tag=features]
1736
1737include::{generated}/validity/structs/VkPhysicalDeviceProtectedMemoryFeatures.adoc[]
1738--
1739endif::VK_VERSION_1_1[]
1740
1741ifdef::VK_EXT_blend_operation_advanced[]
1742[open,refpage='VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',desc='Structure describing advanced blending features that can be supported by an implementation',type='structs']
1743--
1744The sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
1745defined as:
1746
1747include::{generated}/api/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.adoc[]
1748
1749This structure describes the following feature:
1750
1751  * pname:sType is the type of this structure.
1752  * pname:pNext is `NULL` or a pointer to a structure extending this
1753    structure.
1754  * [[features-advancedBlendCoherentOperations]]
1755    pname:advancedBlendCoherentOperations specifies whether blending using
1756    <<framebuffer-blend-advanced,advanced blend operations>> is guaranteed
1757    to execute atomically and in <<drawing-primitive-order, primitive
1758    order>>.
1759    If this is ename:VK_TRUE,
1760    ename:VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT is treated the
1761    same as ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, and advanced blending
1762    needs no additional synchronization over basic blending.
1763    If this is ename:VK_FALSE, then memory dependencies are required to
1764    guarantee order between two advanced blending operations that occur on
1765    the same sample.
1766
1767:refpage: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
1768include::{chapters}/features.adoc[tag=features]
1769
1770include::{generated}/validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.adoc[]
1771--
1772endif::VK_EXT_blend_operation_advanced[]
1773
1774ifdef::VK_EXT_conditional_rendering[]
1775[open,refpage='VkPhysicalDeviceConditionalRenderingFeaturesEXT',desc='Structure describing if a secondary command buffer can be executed if conditional rendering is active in the primary command buffer',type='structs']
1776--
1777The sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is
1778defined as:
1779
1780include::{generated}/api/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.adoc[]
1781
1782This structure describes the following features:
1783
1784  * pname:sType is the type of this structure.
1785  * pname:pNext is `NULL` or a pointer to a structure extending this
1786    structure.
1787  * [[features-conditionalRendering]] pname:conditionalRendering specifies
1788    whether conditional rendering is supported.
1789  * [[features-inheritedConditionalRendering]]
1790    pname:inheritedConditionalRendering specifies whether a secondary
1791    command buffer can: be executed while conditional rendering is active in
1792    the primary command buffer.
1793
1794:refpage: VkPhysicalDeviceConditionalRenderingFeaturesEXT
1795include::{chapters}/features.adoc[tag=features]
1796
1797include::{generated}/validity/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.adoc[]
1798--
1799endif::VK_EXT_conditional_rendering[]
1800
1801ifdef::VK_VERSION_1_1[]
1802[open,refpage='VkPhysicalDeviceShaderDrawParametersFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderDrawParameterFeatures']
1803--
1804The sname:VkPhysicalDeviceShaderDrawParametersFeatures structure is defined
1805as:
1806
1807include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParametersFeatures.adoc[]
1808
1809include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParameterFeatures.adoc[]
1810
1811This structure describes the following feature:
1812
1813  * pname:sType is the type of this structure.
1814  * pname:pNext is `NULL` or a pointer to a structure extending this
1815    structure.
1816
1817// Must have preceding whitespace
1818ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1819ifndef::VK_VERSION_1_2[:anchor-prefix:]
1820// tag::VK_KHR_shader_draw_parameters-features[]
1821  * [[{anchor-prefix}features-shaderDrawParameters]]
1822    pname:shaderDrawParameters specifies whether the implementation supports
1823    the SPIR-V code:DrawParameters capability.
1824    When this feature is not enabled, shader modules must: not declare the
1825    `SPV_KHR_shader_draw_parameters` extension or the code:DrawParameters
1826    capability.
1827// end::VK_KHR_shader_draw_parameters-features[]
1828
1829:refpage: VkPhysicalDeviceShaderDrawParametersFeatures
1830include::{chapters}/features.adoc[tag=features]
1831
1832include::{generated}/validity/structs/VkPhysicalDeviceShaderDrawParametersFeatures.adoc[]
1833--
1834endif::VK_VERSION_1_1[]
1835
1836ifdef::VK_NV_mesh_shader[]
1837[open,refpage='VkPhysicalDeviceMeshShaderFeaturesNV',desc='Structure describing mesh shading features that can be supported by an implementation',type='structs']
1838--
1839The sname:VkPhysicalDeviceMeshShaderFeaturesNV structure is defined as:
1840
1841include::{generated}/api/structs/VkPhysicalDeviceMeshShaderFeaturesNV.adoc[]
1842
1843This structure describes the following features:
1844
1845  * pname:sType is the type of this structure.
1846  * pname:pNext is `NULL` or a pointer to a structure extending this
1847    structure.
1848ifdef::VK_EXT_mesh_shader[]
1849  * pname:taskShader specifies whether task shaders are supported.
1850endif::VK_EXT_mesh_shader[]
1851ifndef::VK_EXT_mesh_shader[]
1852  * [[{vuprefix}features-taskShader]] pname:taskShader specifies whether
1853    task shaders are supported.
1854endif::VK_EXT_mesh_shader[]
1855    If this feature is not enabled, the ename:VK_SHADER_STAGE_TASK_BIT_NV
1856    and ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV enum values must: not be
1857    used.
1858ifdef::VK_EXT_mesh_shader[]
1859  * pname:meshShader specifies whether mesh shaders are supported.
1860endif::VK_EXT_mesh_shader[]
1861ifndef::VK_EXT_mesh_shader[]
1862  * [[{vuprefix}features-meshShader]] pname:meshShader specifies whether
1863    mesh shaders are supported.
1864endif::VK_EXT_mesh_shader[]
1865    If this feature is not enabled, the ename:VK_SHADER_STAGE_MESH_BIT_NV
1866    and ename:VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV enum values must: not be
1867    used.
1868
1869:refpage: VkPhysicalDeviceMeshShaderFeaturesNV
1870include::{chapters}/features.adoc[tag=features]
1871
1872include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderFeaturesNV.adoc[]
1873--
1874endif::VK_NV_mesh_shader[]
1875
1876ifdef::VK_EXT_mesh_shader[]
1877[open,refpage='VkPhysicalDeviceMeshShaderFeaturesEXT',desc='Structure describing mesh shading features that can be supported by an implementation',type='structs']
1878--
1879The sname:VkPhysicalDeviceMeshShaderFeaturesEXT structure is defined as:
1880
1881include::{generated}/api/structs/VkPhysicalDeviceMeshShaderFeaturesEXT.adoc[]
1882
1883  * pname:sType is the type of this structure.
1884  * pname:pNext is `NULL` or a pointer to a structure extending this
1885    structure.
1886  * [[features-taskShader]] pname:taskShader specifies whether task shaders
1887    are supported.
1888    If this feature is not enabled, the ename:VK_SHADER_STAGE_TASK_BIT_EXT
1889    and ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT enum values must: not be
1890    used.
1891  * [[features-meshShader]] pname:meshShader specifies whether mesh shaders
1892    are supported.
1893    If this feature is not enabled, the ename:VK_SHADER_STAGE_MESH_BIT_EXT
1894    and ename:VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT enum values must: not be
1895    used.
1896ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1897  * [[features-multiview-mesh]] pname:multiviewMeshShader specifies whether
1898    the implementation supports <<features-multiview, pname:multiview>>
1899    rendering within a render pass, with mesh shaders.
1900    If this feature is not enabled, then a pipeline compiled against a
1901    subpass with a non-zero view mask must: not include a mesh shader.
1902endif::VK_VERSION_1_1,VK_KHR_multiview[]
1903ifdef::VK_KHR_fragment_shading_rate[]
1904  * [[features-primitiveFragmentShadingRate-mesh]]
1905    pname:primitiveFragmentShadingRateMeshShader indicates that the
1906    implementation supports the <<primsrast-fragment-shading-rate-primitive,
1907    primitive fragment shading rate>> in mesh shaders.
1908endif::VK_KHR_fragment_shading_rate[]
1909  * [[features-meshShaderQueries]] pname:meshShaderQueries indicates that
1910    the implementation supports creating query pools using the
1911    ename:VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT query type and
1912    statistic queries containing the
1913    ename:VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT and
1914    ename:VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT flags
1915
1916:refpage: VkPhysicalDeviceMeshShaderFeaturesEXT
1917include::{chapters}/features.adoc[tag=features]
1918
1919ifdef::VK_NV_mesh_shader[]
1920The corresponding features of the sname:VkPhysicalDeviceMeshShaderFeaturesNV
1921structure must: match those in sname:VkPhysicalDeviceMeshShaderFeaturesEXT.
1922endif::VK_NV_mesh_shader[]
1923
1924.Valid Usage
1925****
1926ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1927  * [[VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032]]
1928    If pname:multiviewMeshShader is enabled then
1929    sname:VkPhysicalDeviceMultiviewFeaturesKHR::pname:multiview must: also
1930    be enabled
1931endif::VK_VERSION_1_1,VK_KHR_multiview[]
1932ifdef::VK_KHR_fragment_shading_rate[]
1933  * [[VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033]]
1934    If pname:primitiveFragmentShadingRateMeshShader is enabled then
1935    sname:VkPhysicalDeviceFragmentShadingRateFeaturesKHR::pname:primitiveFragmentShadingRate
1936    must: also be enabled
1937endif::VK_KHR_fragment_shading_rate[]
1938****
1939
1940include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderFeaturesEXT.adoc[]
1941--
1942endif::VK_EXT_mesh_shader[]
1943
1944ifdef::VK_NV_memory_decompression[]
1945[open,refpage='VkPhysicalDeviceMemoryDecompressionFeaturesNV',desc='Structure describing if memory decompression is supported by an implementation',type='structs']
1946--
1947The sname:VkPhysicalDeviceMemoryDecompressionFeaturesNV structure is defined
1948as:
1949
1950include::{generated}/api/structs/VkPhysicalDeviceMemoryDecompressionFeaturesNV.adoc[]
1951
1952This structure describes the following features:
1953
1954  * pname:sType is the type of this structure.
1955  * pname:pNext is `NULL` or a pointer to a structure extending this
1956    structure.
1957  * [[features-memoryDecompression]] pname:memoryDecompression indicates
1958    whether memory decompression is supported.
1959
1960:refpage: VkPhysicalDeviceMemoryDecompressionFeaturesNV
1961include::{chapters}/features.adoc[tag=features]
1962
1963include::{generated}/validity/structs/VkPhysicalDeviceMemoryDecompressionFeaturesNV.adoc[]
1964--
1965endif::VK_NV_memory_decompression[]
1966
1967ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
1968[open,refpage='VkPhysicalDeviceDescriptorIndexingFeatures',desc='Structure describing descriptor indexing features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceDescriptorIndexingFeaturesEXT']
1969--
1970The sname:VkPhysicalDeviceDescriptorIndexingFeatures structure is defined
1971as:
1972
1973include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeatures.adoc[]
1974
1975ifdef::VK_EXT_descriptor_indexing[]
1976or the equivalent
1977
1978include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.adoc[]
1979endif::VK_EXT_descriptor_indexing[]
1980
1981This structure describes the following features:
1982
1983  * pname:sType is the type of this structure.
1984  * pname:pNext is `NULL` or a pointer to a structure extending this
1985    structure.
1986
1987// Must have preceding whitespace
1988ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1989ifndef::VK_VERSION_1_2[:anchor-prefix:]
1990// tag::VK_EXT_descriptor_indexing-features[]
1991  * [[{anchor-prefix}features-shaderInputAttachmentArrayDynamicIndexing]]
1992    pname:shaderInputAttachmentArrayDynamicIndexing indicates whether arrays
1993    of input attachments can: be indexed by dynamically uniform integer
1994    expressions in shader code.
1995    If this feature is not enabled, resources with a descriptor type of
1996    ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: be indexed only by
1997    constant integral expressions when aggregated into arrays in shader
1998    code.
1999    This also indicates whether shader modules can: declare the
2000    code:InputAttachmentArrayDynamicIndexing capability.
2001  * [[{anchor-prefix}features-shaderUniformTexelBufferArrayDynamicIndexing]]
2002    pname:shaderUniformTexelBufferArrayDynamicIndexing indicates whether
2003    arrays of uniform texel buffers can: be indexed by dynamically uniform
2004    integer expressions in shader code.
2005    If this feature is not enabled, resources with a descriptor type of
2006    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: be indexed only by
2007    constant integral expressions when aggregated into arrays in shader
2008    code.
2009    This also indicates whether shader modules can: declare the
2010    code:UniformTexelBufferArrayDynamicIndexing capability.
2011  * [[{anchor-prefix}features-shaderStorageTexelBufferArrayDynamicIndexing]]
2012    pname:shaderStorageTexelBufferArrayDynamicIndexing indicates whether
2013    arrays of storage texel buffers can: be indexed by dynamically uniform
2014    integer expressions in shader code.
2015    If this feature is not enabled, resources with a descriptor type of
2016    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: be indexed only by
2017    constant integral expressions when aggregated into arrays in shader
2018    code.
2019    This also indicates whether shader modules can: declare the
2020    code:StorageTexelBufferArrayDynamicIndexing capability.
2021  * [[{anchor-prefix}features-shaderUniformBufferArrayNonUniformIndexing]]
2022    pname:shaderUniformBufferArrayNonUniformIndexing indicates whether
2023    arrays of uniform buffers can: be indexed by non-uniform integer
2024    expressions in shader code.
2025    If this feature is not enabled, resources with a descriptor type of
2026    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
2027    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: not be indexed by
2028    non-uniform integer expressions when aggregated into arrays in shader
2029    code.
2030    This also indicates whether shader modules can: declare the
2031    code:UniformBufferArrayNonUniformIndexing capability.
2032  * [[{anchor-prefix}features-shaderSampledImageArrayNonUniformIndexing]]
2033    pname:shaderSampledImageArrayNonUniformIndexing indicates whether arrays
2034    of samplers or sampled images can: be indexed by non-uniform integer
2035    expressions in shader code.
2036    If this feature is not enabled, resources with a descriptor type of
2037    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
2038    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
2039    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: not be indexed by
2040    non-uniform integer expressions when aggregated into arrays in shader
2041    code.
2042    This also indicates whether shader modules can: declare the
2043    code:SampledImageArrayNonUniformIndexing capability.
2044  * [[{anchor-prefix}features-shaderStorageBufferArrayNonUniformIndexing]]
2045    pname:shaderStorageBufferArrayNonUniformIndexing indicates whether
2046    arrays of storage buffers can: be indexed by non-uniform integer
2047    expressions in shader code.
2048    If this feature is not enabled, resources with a descriptor type of
2049    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
2050    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: not be indexed by
2051    non-uniform integer expressions when aggregated into arrays in shader
2052    code.
2053    This also indicates whether shader modules can: declare the
2054    code:StorageBufferArrayNonUniformIndexing capability.
2055  * [[{anchor-prefix}features-shaderStorageImageArrayNonUniformIndexing]]
2056    pname:shaderStorageImageArrayNonUniformIndexing indicates whether arrays
2057    of storage images can: be indexed by non-uniform integer expressions in
2058    shader code.
2059    If this feature is not enabled, resources with a descriptor type of
2060    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: not be indexed by
2061    non-uniform integer expressions when aggregated into arrays in shader
2062    code.
2063    This also indicates whether shader modules can: declare the
2064    code:StorageImageArrayNonUniformIndexing capability.
2065  * [[{anchor-prefix}features-shaderInputAttachmentArrayNonUniformIndexing]]
2066    pname:shaderInputAttachmentArrayNonUniformIndexing indicates whether
2067    arrays of input attachments can: be indexed by non-uniform integer
2068    expressions in shader code.
2069    If this feature is not enabled, resources with a descriptor type of
2070    ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: not be indexed by
2071    non-uniform integer expressions when aggregated into arrays in shader
2072    code.
2073    This also indicates whether shader modules can: declare the
2074    code:InputAttachmentArrayNonUniformIndexing capability.
2075  * [[{anchor-prefix}features-shaderUniformTexelBufferArrayNonUniformIndexing]]
2076    pname:shaderUniformTexelBufferArrayNonUniformIndexing indicates whether
2077    arrays of uniform texel buffers can: be indexed by non-uniform integer
2078    expressions in shader code.
2079    If this feature is not enabled, resources with a descriptor type of
2080    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: not be indexed by
2081    non-uniform integer expressions when aggregated into arrays in shader
2082    code.
2083    This also indicates whether shader modules can: declare the
2084    code:UniformTexelBufferArrayNonUniformIndexing capability.
2085  * [[{anchor-prefix}features-shaderStorageTexelBufferArrayNonUniformIndexing]]
2086    pname:shaderStorageTexelBufferArrayNonUniformIndexing indicates whether
2087    arrays of storage texel buffers can: be indexed by non-uniform integer
2088    expressions in shader code.
2089    If this feature is not enabled, resources with a descriptor type of
2090    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: not be indexed by
2091    non-uniform integer expressions when aggregated into arrays in shader
2092    code.
2093    This also indicates whether shader modules can: declare the
2094    code:StorageTexelBufferArrayNonUniformIndexing capability.
2095  * [[{anchor-prefix}features-descriptorBindingUniformBufferUpdateAfterBind]]
2096    pname:descriptorBindingUniformBufferUpdateAfterBind indicates whether
2097    the implementation supports updating uniform buffer descriptors after a
2098    set is bound.
2099    If this feature is not enabled,
2100    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2101    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER.
2102  * [[{anchor-prefix}features-descriptorBindingSampledImageUpdateAfterBind]]
2103    pname:descriptorBindingSampledImageUpdateAfterBind indicates whether the
2104    implementation supports updating sampled image descriptors after a set
2105    is bound.
2106    If this feature is not enabled,
2107    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2108    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
2109    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
2110    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.
2111  * [[{anchor-prefix}features-descriptorBindingStorageImageUpdateAfterBind]]
2112    pname:descriptorBindingStorageImageUpdateAfterBind indicates whether the
2113    implementation supports updating storage image descriptors after a set
2114    is bound.
2115    If this feature is not enabled,
2116    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2117    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.
2118  * [[{anchor-prefix}features-descriptorBindingStorageBufferUpdateAfterBind]]
2119    pname:descriptorBindingStorageBufferUpdateAfterBind indicates whether
2120    the implementation supports updating storage buffer descriptors after a
2121    set is bound.
2122    If this feature is not enabled,
2123    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2124    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER.
2125  * [[{anchor-prefix}features-descriptorBindingUniformTexelBufferUpdateAfterBind]]
2126    pname:descriptorBindingUniformTexelBufferUpdateAfterBind indicates
2127    whether the implementation supports updating uniform texel buffer
2128    descriptors after a set is bound.
2129    If this feature is not enabled,
2130    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2131    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.
2132  * [[{anchor-prefix}features-descriptorBindingStorageTexelBufferUpdateAfterBind]]
2133    pname:descriptorBindingStorageTexelBufferUpdateAfterBind indicates
2134    whether the implementation supports updating storage texel buffer
2135    descriptors after a set is bound.
2136    If this feature is not enabled,
2137    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2138    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.
2139  * [[{anchor-prefix}features-descriptorBindingUpdateUnusedWhilePending]]
2140    pname:descriptorBindingUpdateUnusedWhilePending indicates whether the
2141    implementation supports updating descriptors while the set is in use.
2142    If this feature is not enabled,
2143    ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT must: not be
2144    used.
2145  * [[{anchor-prefix}features-descriptorBindingPartiallyBound]]
2146    pname:descriptorBindingPartiallyBound indicates whether the
2147    implementation supports statically using a descriptor set binding in
2148    which some descriptors are not valid.
2149    If this feature is not enabled,
2150    ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT must: not be used.
2151  * [[{anchor-prefix}features-descriptorBindingVariableDescriptorCount]]
2152    pname:descriptorBindingVariableDescriptorCount indicates whether the
2153    implementation supports descriptor sets with a variable-sized last
2154    binding.
2155    If this feature is not enabled,
2156    ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT must: not be
2157    used.
2158  * [[{anchor-prefix}features-runtimeDescriptorArray]]
2159    pname:runtimeDescriptorArray indicates whether the implementation
2160    supports the SPIR-V code:RuntimeDescriptorArray capability.
2161    If this feature is not enabled, descriptors must: not be declared in
2162    runtime arrays.
2163// end::VK_EXT_descriptor_indexing-features[]
2164
2165:refpage: VkPhysicalDeviceDescriptorIndexingFeatures
2166include::{chapters}/features.adoc[tag=features]
2167
2168include::{generated}/validity/structs/VkPhysicalDeviceDescriptorIndexingFeatures.adoc[]
2169--
2170endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2171
2172ifdef::VK_NV_copy_memory_indirect[]
2173[open,refpage='VkPhysicalDeviceCopyMemoryIndirectFeaturesNV',desc='Structure describing indirect copy features supported by an implementation',type='structs']
2174--
2175The sname:VkPhysicalDeviceCopyMemoryIndirectFeaturesNV structure is defined
2176as:
2177
2178include::{generated}/api/structs/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.adoc[]
2179
2180This structure describes the following features:
2181
2182  * pname:sType is the type of this structure.
2183  * pname:pNext is `NULL` or a pointer to a structure extending this
2184    structure.
2185  * [[features-indirectCopy]] pname:indirectCopy indicates whether
2186    <<indirect-copies, indirect copies>> are supported.
2187
2188:refpage: VkPhysicalDeviceCopyMemoryIndirectFeaturesNV
2189include::{chapters}/features.adoc[tag=features]
2190
2191include::{generated}/validity/structs/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.adoc[]
2192--
2193endif::VK_NV_copy_memory_indirect[]
2194
2195ifdef::VK_EXT_vertex_attribute_divisor[]
2196[open,refpage='VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT',desc='Structure describing if fetching of vertex attribute may be repeated for instanced rendering',type='structs']
2197--
2198The sname:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT structure is
2199defined as:
2200
2201include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.adoc[]
2202
2203This structure describes the following features:
2204
2205  * pname:sType is the type of this structure.
2206  * pname:pNext is `NULL` or a pointer to a structure extending this
2207    structure.
2208  * [[features-vertexAttributeInstanceRateDivisor]]
2209    pname:vertexAttributeInstanceRateDivisor specifies whether vertex
2210    attribute fetching may be repeated in case of instanced rendering.
2211  * [[features-vertexAttributeInstanceRateZeroDivisor]]
2212    pname:vertexAttributeInstanceRateZeroDivisor specifies whether a zero
2213    value for sname:VkVertexInputBindingDivisorDescriptionEXT::pname:divisor
2214    is supported.
2215
2216:refpage: VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
2217include::{chapters}/features.adoc[tag=features]
2218
2219include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.adoc[]
2220--
2221endif::VK_EXT_vertex_attribute_divisor[]
2222
2223ifdef::VK_EXT_astc_decode_mode[]
2224[open,refpage='VkPhysicalDeviceASTCDecodeFeaturesEXT',desc='Structure describing ASTC decode mode features',type='structs']
2225--
2226The sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is defined as:
2227
2228include::{generated}/api/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.adoc[]
2229
2230This structure describes the following feature:
2231
2232  * pname:sType is the type of this structure.
2233  * pname:pNext is `NULL` or a pointer to a structure extending this
2234    structure.
2235  * [[features-astc-decodeModeSharedExponent]]
2236    pname:decodeModeSharedExponent indicates whether the implementation
2237    supports decoding ASTC compressed formats to
2238    ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision.
2239
2240:refpage: VkPhysicalDeviceASTCDecodeFeaturesEXT
2241include::{chapters}/features.adoc[tag=features]
2242
2243include::{generated}/validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.adoc[]
2244--
2245endif::VK_EXT_astc_decode_mode[]
2246
2247ifdef::VK_EXT_transform_feedback[]
2248[open,refpage='VkPhysicalDeviceTransformFeedbackFeaturesEXT',desc='Structure describing transform feedback features that can be supported by an implementation',type='structs']
2249--
2250The sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined
2251as:
2252
2253include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.adoc[]
2254
2255This structure describes the following features:
2256
2257  * pname:sType is the type of this structure.
2258  * pname:pNext is `NULL` or a pointer to a structure extending this
2259    structure.
2260  * [[features-transformFeedback]] pname:transformFeedback indicates whether
2261    the implementation supports transform feedback and shader modules can:
2262    declare the code:TransformFeedback capability.
2263  * [[features-geometryStreams]] pname:geometryStreams indicates whether the
2264    implementation supports the code:GeometryStreams SPIR-V capability.
2265
2266:refpage: VkPhysicalDeviceTransformFeedbackFeaturesEXT
2267include::{chapters}/features.adoc[tag=features]
2268
2269include::{generated}/validity/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.adoc[]
2270--
2271endif::VK_EXT_transform_feedback[]
2272
2273ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2274[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeatures',desc='Structure describing features supported by the memory model',type='structs']
2275--
2276The sname:VkPhysicalDeviceVulkanMemoryModelFeatures structure is defined as:
2277
2278include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.adoc[]
2279
2280ifdef::VK_KHR_vulkan_memory_model[]
2281or the equivalent
2282
2283include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.adoc[]
2284endif::VK_KHR_vulkan_memory_model[]
2285
2286This structure describes the following features:
2287
2288  * pname:sType is the type of this structure.
2289  * pname:pNext is `NULL` or a pointer to a structure extending this
2290    structure.
2291
2292// Must have preceding whitespace
2293ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2294ifndef::VK_VERSION_1_2[:anchor-prefix:]
2295// tag::VK_KHR_vulkan_memory_model-features[]
2296  * [[{anchor-prefix}features-vulkanMemoryModel]] pname:vulkanMemoryModel
2297    indicates whether the Vulkan Memory Model is supported, as defined in
2298    <<memory-model,Vulkan Memory Model>>.
2299    This also indicates whether shader modules can: declare the
2300    code:VulkanMemoryModel capability.
2301  * [[{anchor-prefix}features-vulkanMemoryModelDeviceScope]]
2302    pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory
2303    Model can use code:Device scope synchronization.
2304    This also indicates whether shader modules can: declare the
2305    code:VulkanMemoryModelDeviceScope capability.
2306  * [[{anchor-prefix}features-vulkanMemoryModelAvailabilityVisibilityChains]]
2307    pname:vulkanMemoryModelAvailabilityVisibilityChains indicates whether
2308    the Vulkan Memory Model can use <<memory-model-availability-visibility,
2309    availability and visibility chains>> with more than one element.
2310// end::VK_KHR_vulkan_memory_model-features[]
2311
2312:refpage: VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
2313include::{chapters}/features.adoc[tag=features]
2314
2315include::{generated}/validity/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.adoc[]
2316--
2317endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2318
2319ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
2320[open,refpage='VkPhysicalDeviceInlineUniformBlockFeatures',desc='Structure describing inline uniform block features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceInlineUniformBlockFeaturesEXT']
2321--
2322The sname:VkPhysicalDeviceInlineUniformBlockFeatures structure is defined
2323as:
2324
2325include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeatures.adoc[]
2326
2327ifdef::VK_EXT_inline_uniform_block[]
2328or the equivalent
2329
2330include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.adoc[]
2331endif::VK_EXT_inline_uniform_block[]
2332
2333This structure describes the following features:
2334
2335  * pname:sType is the type of this structure.
2336  * pname:pNext is `NULL` or a pointer to a structure extending this
2337    structure.
2338
2339// Must have preceding whitespace
2340ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
2341ifndef::VK_VERSION_1_3[:anchor-prefix:]
2342// tag::VK_EXT_inline_uniform_block-features[]
2343  * [[{anchor-prefix}features-inlineUniformBlock]] pname:inlineUniformBlock
2344    indicates whether the implementation supports inline uniform block
2345    descriptors.
2346    If this feature is not enabled,
2347    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK must: not be used.
2348  * [[{anchor-prefix}features-descriptorBindingInlineUniformBlockUpdateAfterBind]]
2349    pname:descriptorBindingInlineUniformBlockUpdateAfterBind
2350ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2351    is ename:VK_FALSE and reserved for future use.
2352endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2353ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2354    indicates whether the implementation supports updating inline uniform
2355    block descriptors after a set is bound.
2356    If this feature is not enabled,
2357    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2358    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK.
2359endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2360// end::VK_EXT_inline_uniform_block-features[]
2361
2362:refpage: VkPhysicalDeviceInlineUniformBlockFeatures
2363include::{chapters}/features.adoc[tag=features]
2364
2365include::{generated}/validity/structs/VkPhysicalDeviceInlineUniformBlockFeatures.adoc[]
2366--
2367endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
2368
2369ifdef::VK_NV_representative_fragment_test[]
2370[open,refpage='VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV',desc='Structure describing the representative fragment test features that can be supported by an implementation',type='structs']
2371--
2372The sname:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure is
2373defined as:
2374
2375include::{generated}/api/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.adoc[]
2376
2377This structure describes the following feature:
2378
2379  * pname:sType is the type of this structure.
2380  * pname:pNext is `NULL` or a pointer to a structure extending this
2381    structure.
2382  * [[features-representativeFragmentTest]] pname:representativeFragmentTest
2383    indicates whether the implementation supports the representative
2384    fragment test.
2385    See <<fragops-rep-frag-test, Representative Fragment Test>>.
2386
2387:refpage: VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
2388include::{chapters}/features.adoc[tag=features]
2389
2390include::{generated}/validity/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.adoc[]
2391--
2392endif::VK_NV_representative_fragment_test[]
2393
2394ifdef::VK_NV_scissor_exclusive[]
2395[open,refpage='VkPhysicalDeviceExclusiveScissorFeaturesNV',desc='Structure describing exclusive scissor features that can be supported by an implementation',type='structs']
2396--
2397The sname:VkPhysicalDeviceExclusiveScissorFeaturesNV structure is defined
2398as:
2399
2400include::{generated}/api/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.adoc[]
2401
2402This structure describes the following feature:
2403
2404  * pname:sType is the type of this structure.
2405  * pname:pNext is `NULL` or a pointer to a structure extending this
2406    structure.
2407  * [[features-exclusiveScissor]] pname:exclusiveScissor indicates that the
2408    implementation supports the exclusive scissor test.
2409
2410See <<fragops-exclusive-scissor,Exclusive Scissor Test>> for more
2411information.
2412
2413:refpage: VkPhysicalDeviceExclusiveScissorFeaturesNV
2414include::{chapters}/features.adoc[tag=features]
2415
2416include::{generated}/validity/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.adoc[]
2417--
2418endif::VK_NV_scissor_exclusive[]
2419
2420ifdef::VK_NV_corner_sampled_image[]
2421[open,refpage='VkPhysicalDeviceCornerSampledImageFeaturesNV',desc='Structure describing corner sampled image features that can be supported by an implementation',type='structs']
2422--
2423The sname:VkPhysicalDeviceCornerSampledImageFeaturesNV structure is defined
2424as:
2425
2426include::{generated}/api/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.adoc[]
2427
2428This structure describes the following feature:
2429
2430  * pname:sType is the type of this structure.
2431  * pname:pNext is `NULL` or a pointer to a structure extending this
2432    structure.
2433  * [[features-cornersampledimage]] pname:cornerSampledImage specifies
2434    whether images can be created with a
2435    slink:VkImageCreateInfo::pname:flags containing
2436    ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV.
2437    See <<resources-images-corner-sampled,Corner-Sampled Images>>.
2438
2439:refpage: VkPhysicalDeviceCornerSampledImageFeaturesNV
2440include::{chapters}/features.adoc[tag=features]
2441
2442include::{generated}/validity/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.adoc[]
2443--
2444endif::VK_NV_corner_sampled_image[]
2445
2446ifdef::VK_NV_compute_shader_derivatives[]
2447[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesNV',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs']
2448--
2449The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure is
2450defined as:
2451
2452include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
2453
2454This structure describes the following features:
2455
2456  * pname:sType is the type of this structure.
2457  * pname:pNext is `NULL` or a pointer to a structure extending this
2458    structure.
2459  * [[features-computeDerivativeGroupQuads]]
2460    pname:computeDerivativeGroupQuads indicates that the implementation
2461    supports the code:ComputeDerivativeGroupQuadsNV SPIR-V capability.
2462  * [[features-computeDerivativeGroupLinear]]
2463    pname:computeDerivativeGroupLinear indicates that the implementation
2464    supports the code:ComputeDerivativeGroupLinearNV SPIR-V capability.
2465
2466See <<shaders-scope-quad, Quad shader scope>> for more information.
2467
2468:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures.
2469include::{chapters}/features.adoc[tag=features]
2470
2471include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
2472--
2473endif::VK_NV_compute_shader_derivatives[]
2474
2475ifdef::VK_KHR_fragment_shader_barycentric[]
2476[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs']
2477--
2478The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR structure is
2479defined as:
2480
2481include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.adoc[]
2482
2483ifdef::VK_NV_fragment_shader_barycentric[]
2484or the equivalent
2485
2486include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.adoc[]
2487endif::VK_NV_fragment_shader_barycentric[]
2488
2489This structure describes the following feature:
2490
2491  * pname:sType is the type of this structure.
2492  * pname:pNext is `NULL` or a pointer to a structure extending this
2493    structure.
2494  * [[features-fragmentShaderBarycentric]] pname:fragmentShaderBarycentric
2495    indicates that the implementation supports the code:BaryCoordKHR and
2496    code:BaryCoordNoPerspKHR SPIR-V fragment shader built-ins and supports
2497    the code:PerVertexKHR SPIR-V decoration on fragment shader input
2498    variables.
2499
2500See <<primsrast-barycentric,Barycentric Interpolation>> for more
2501information.
2502
2503:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
2504include::{chapters}/features.adoc[tag=features]
2505
2506include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.adoc[]
2507--
2508endif::VK_KHR_fragment_shader_barycentric[]
2509
2510ifdef::VK_NV_shader_image_footprint[]
2511[open,refpage='VkPhysicalDeviceShaderImageFootprintFeaturesNV',desc='Structure describing shader image footprint features that can be supported by an implementation',type='structs']
2512--
2513The sname:VkPhysicalDeviceShaderImageFootprintFeaturesNV structure is
2514defined as:
2515
2516include::{generated}/api/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.adoc[]
2517
2518This structure describes the following feature:
2519
2520  * pname:sType is the type of this structure.
2521  * pname:pNext is `NULL` or a pointer to a structure extending this
2522    structure.
2523  * [[features-imageFootprint]] pname:imageFootprint specifies whether the
2524    implementation supports the code:ImageFootprintNV SPIR-V capability.
2525
2526See <<textures-footprint,Texel Footprint Evaluation>> for more information.
2527
2528:refpage: VkPhysicalDeviceShaderImageFootprintFeaturesNV
2529include::{chapters}/features.adoc[tag=features]
2530
2531include::{generated}/validity/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.adoc[]
2532--
2533endif::VK_NV_shader_image_footprint[]
2534
2535ifdef::VK_NV_shading_rate_image[]
2536[open,refpage='VkPhysicalDeviceShadingRateImageFeaturesNV',desc='Structure describing shading rate image features that can be supported by an implementation',type='structs']
2537--
2538The sname:VkPhysicalDeviceShadingRateImageFeaturesNV structure is defined
2539as:
2540
2541include::{generated}/api/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.adoc[]
2542
2543This structure describes the following features:
2544
2545  * pname:sType is the type of this structure.
2546  * pname:pNext is `NULL` or a pointer to a structure extending this
2547    structure.
2548  * [[features-shadingRateImage]] pname:shadingRateImage indicates that the
2549    implementation supports the use of a shading rate image to derive an
2550    effective shading rate for fragment processing.
2551    It also indicates that the implementation supports the
2552    code:ShadingRateNV SPIR-V execution mode.
2553  * [[features-shadingRateCoarseSampleOrder]]
2554    pname:shadingRateCoarseSampleOrder indicates that the implementation
2555    supports a user-configurable ordering of coverage samples in fragments
2556    larger than one pixel.
2557
2558See <<primsrast-shading-rate-image, Shading Rate Image>> for more
2559information.
2560
2561:refpage: VkPhysicalDeviceShadingRateImageFeaturesNV
2562include::{chapters}/features.adoc[tag=features]
2563
2564include::{generated}/validity/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.adoc[]
2565--
2566endif::VK_NV_shading_rate_image[]
2567
2568ifdef::VK_EXT_fragment_density_map[]
2569[open,refpage='VkPhysicalDeviceFragmentDensityMapFeaturesEXT',desc='Structure describing fragment density map features that can be supported by an implementation',type='structs']
2570--
2571The sname:VkPhysicalDeviceFragmentDensityMapFeaturesEXT structure is defined
2572as:
2573
2574include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.adoc[]
2575
2576This structure describes the following features:
2577
2578  * pname:sType is the type of this structure.
2579  * pname:pNext is `NULL` or a pointer to a structure extending this
2580    structure.
2581  * [[features-fragmentDensityMap]] pname:fragmentDensityMap specifies
2582    whether the implementation supports render passes with a fragment
2583    density map attachment.
2584    If this feature is not enabled and the pname:pNext chain of
2585    slink:VkRenderPassCreateInfo includes a
2586    slink:VkRenderPassFragmentDensityMapCreateInfoEXT structure,
2587    pname:fragmentDensityMapAttachment must: be ename:VK_ATTACHMENT_UNUSED.
2588  * [[features-fragmentDensityMapDynamic]] pname:fragmentDensityMapDynamic
2589    specifies whether the implementation supports dynamic fragment density
2590    map image views.
2591    If this feature is not enabled,
2592    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT must:
2593    not be included in slink:VkImageViewCreateInfo::pname:flags.
2594  * [[features-fragmentDensityMapNonSubsampledImages]]
2595    pname:fragmentDensityMapNonSubsampledImages specifies whether the
2596    implementation supports regular non-subsampled image attachments with
2597    fragment density map render passes.
2598    If this feature is not enabled, render passes with a
2599    <<renderpass-fragmentdensitymapattachment,fragment density map
2600    attachment>> must: only have <<samplers-subsamplesampler,subsampled
2601    attachments>> bound.
2602
2603:refpage: VkPhysicalDeviceFragmentDensityMapFeaturesEXT
2604include::{chapters}/features.adoc[tag=features]
2605
2606include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.adoc[]
2607--
2608
2609ifdef::VK_EXT_fragment_density_map2[]
2610[open,refpage='VkPhysicalDeviceFragmentDensityMap2FeaturesEXT',desc='Structure describing additional fragment density map features that can be supported by an implementation',type='structs']
2611--
2612The sname:VkPhysicalDeviceFragmentDensityMap2FeaturesEXT structure is
2613defined as:
2614
2615include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.adoc[]
2616
2617This structure describes the following feature:
2618
2619  * pname:sType is the type of this structure.
2620  * pname:pNext is `NULL` or a pointer to a structure extending this
2621    structure.
2622  * [[features-fragmentDensityMapDeferred]] pname:fragmentDensityMapDeferred
2623    specifies whether the implementation supports deferred reads of fragment
2624    density map image views.
2625    If this feature is not enabled,
2626    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT must:
2627    not be included in sname:VkImageViewCreateInfo::pname:flags.
2628
2629:refpage: VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
2630include::{chapters}/features.adoc[tag=features]
2631
2632include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.adoc[]
2633--
2634endif::VK_EXT_fragment_density_map2[]
2635
2636ifdef::VK_QCOM_fragment_density_map_offset[]
2637[open,refpage='VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM',desc='Structure describing fragment density map offset features that can be supported by an implementation',type='structs']
2638--
2639The sname:VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM structure is
2640defined as:
2641
2642include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.adoc[]
2643
2644This structure describes the following feature:
2645
2646  * pname:sType is the type of this structure.
2647  * pname:pNext is `NULL` or a pointer to a structure extending this
2648    structure.
2649  * [[features-fragmentDensityMapOffsets]] pname:fragmentDensityMapOffsets
2650    specifies whether the implementation supports
2651    <<renderpass-fragmentdensitymapoffsets,fragment density map offsets>>
2652
2653:refpage: VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
2654include::{chapters}/features.adoc[tag=features]
2655
2656include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.adoc[]
2657--
2658endif::VK_QCOM_fragment_density_map_offset[]
2659endif::VK_EXT_fragment_density_map[]
2660
2661ifdef::VK_HUAWEI_invocation_mask[]
2662[open,refpage='VkPhysicalDeviceInvocationMaskFeaturesHUAWEI',desc='Structure describing invocation mask features that can be supported by an implementation',type='structs']
2663--
2664The sname:VkPhysicalDeviceInvocationMaskFeaturesHUAWEI structure is defined
2665as:
2666
2667include::{generated}/api/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.adoc[]
2668
2669This structure describes the following feature:
2670
2671  * pname:sType is the type of this structure.
2672  * pname:pNext is `NULL` or a pointer to a structure extending this
2673    structure.
2674  * [[features-invocationMask]] pname:invocationMask indicates that the
2675    implementation supports the use of an invocation mask image to optimize
2676    the ray dispatch.
2677
2678:refpage: VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
2679include::{chapters}/features.adoc[tag=features]
2680
2681include::{generated}/validity/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.adoc[]
2682--
2683endif::VK_HUAWEI_invocation_mask[]
2684
2685ifdef::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2686[open,refpage='VkPhysicalDeviceScalarBlockLayoutFeatures',desc='Structure indicating support for scalar block layouts',type='structs',alias='VkPhysicalDeviceScalarBlockLayoutFeaturesEXT']
2687--
2688The sname:VkPhysicalDeviceScalarBlockLayoutFeatures structure is defined as:
2689
2690include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.adoc[]
2691
2692ifdef::VK_EXT_scalar_block_layout[]
2693or the equivalent
2694
2695include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.adoc[]
2696endif::VK_EXT_scalar_block_layout[]
2697
2698This structure describes the following feature:
2699
2700  * pname:sType is the type of this structure.
2701  * pname:pNext is `NULL` or a pointer to a structure extending this
2702    structure.
2703
2704// Must have preceding whitespace
2705ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2706ifndef::VK_VERSION_1_2[:anchor-prefix:]
2707// tag::VK_EXT_scalar_block_layout-features[]
2708  * [[{anchor-prefix}features-scalarBlockLayout]] pname:scalarBlockLayout
2709    indicates that the implementation supports the layout of resource blocks
2710    in shaders using <<interfaces-alignment-requirements, scalar
2711    alignment>>.
2712// end::VK_EXT_scalar_block_layout-features[]
2713
2714:refpage: VkPhysicalDeviceScalarBlockLayoutFeatures
2715include::{chapters}/features.adoc[tag=features]
2716
2717include::{generated}/validity/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.adoc[]
2718--
2719endif::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2720
2721ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2722[open,refpage='VkPhysicalDeviceUniformBufferStandardLayoutFeatures',desc='Structure indicating support for std430-like packing in uniform buffers',type='structs',alias='VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR']
2723--
2724The sname:VkPhysicalDeviceUniformBufferStandardLayoutFeatures structure is
2725defined as:
2726
2727include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.adoc[]
2728
2729ifdef::VK_KHR_uniform_buffer_standard_layout[]
2730or the equivalent
2731
2732include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.adoc[]
2733endif::VK_KHR_uniform_buffer_standard_layout[]
2734
2735This structure describes the following feature:
2736
2737  * pname:sType is the type of this structure.
2738  * pname:pNext is `NULL` or a pointer to a structure extending this
2739    structure.
2740
2741// Must have preceding whitespace
2742ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2743ifndef::VK_VERSION_1_2[:anchor-prefix:]
2744// tag::VK_KHR_uniform_buffer_standard_layout-features[]
2745  * [[{anchor-prefix}features-uniformBufferStandardLayout]]
2746    pname:uniformBufferStandardLayout indicates that the implementation
2747    supports the same layouts for uniform buffers as for storage and other
2748    kinds of buffers.
2749    See <<interfaces-resources-standard-layout,Standard Buffer Layout>>.
2750// end::VK_KHR_uniform_buffer_standard_layout-features[]
2751
2752:refpage: VkPhysicalDeviceUniformBufferStandardLayoutFeatures
2753include::{chapters}/features.adoc[tag=features]
2754
2755include::{generated}/validity/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.adoc[]
2756--
2757endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2758
2759ifdef::VK_EXT_depth_clip_enable[]
2760[open,refpage='VkPhysicalDeviceDepthClipEnableFeaturesEXT',desc='Structure indicating support for explicit enable of depth clip',type='structs']
2761--
2762The sname:VkPhysicalDeviceDepthClipEnableFeaturesEXT structure is defined
2763as:
2764
2765include::{generated}/api/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.adoc[]
2766
2767This structure describes the following feature:
2768
2769  * pname:sType is the type of this structure.
2770  * pname:pNext is `NULL` or a pointer to a structure extending this
2771    structure.
2772  * [[features-depthClipEnable]] pname:depthClipEnable indicates that the
2773    implementation supports setting the depth clipping operation explicitly
2774    via the slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT
2775    pipeline state.
2776    Otherwise depth clipping is only enabled when
2777    slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is
2778    set to ename:VK_FALSE.
2779
2780:refpage: VkPhysicalDeviceDepthClipEnableFeaturesEXT
2781include::{chapters}/features.adoc[tag=features]
2782
2783include::{generated}/validity/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.adoc[]
2784--
2785endif::VK_EXT_depth_clip_enable[]
2786
2787ifdef::VK_EXT_memory_priority[]
2788[open,refpage='VkPhysicalDeviceMemoryPriorityFeaturesEXT',desc='Structure describing memory priority features that can be supported by an implementation',type='structs']
2789--
2790The sname:VkPhysicalDeviceMemoryPriorityFeaturesEXT structure is defined as:
2791
2792include::{generated}/api/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.adoc[]
2793
2794This structure describes the following feature:
2795
2796  * pname:sType is the type of this structure.
2797  * pname:pNext is `NULL` or a pointer to a structure extending this
2798    structure.
2799  * [[features-memoryPriority]] pname:memoryPriority indicates that the
2800    implementation supports memory priorities specified at memory allocation
2801    time via slink:VkMemoryPriorityAllocateInfoEXT.
2802
2803:refpage: VkPhysicalDeviceMemoryPriorityFeaturesEXT
2804include::{chapters}/features.adoc[tag=features]
2805
2806include::{generated}/validity/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.adoc[]
2807--
2808endif::VK_EXT_memory_priority[]
2809
2810ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2811[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeatures',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferDeviceAddressFeaturesKHR']
2812--
2813The sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure is defined
2814as:
2815
2816include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.adoc[]
2817
2818ifdef::VK_KHR_buffer_device_address[]
2819or the equivalent
2820
2821include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.adoc[]
2822endif::VK_KHR_buffer_device_address[]
2823
2824This structure describes the following features:
2825
2826  * pname:sType is the type of this structure.
2827  * pname:pNext is `NULL` or a pointer to a structure extending this
2828    structure.
2829
2830// Must have preceding whitespace
2831ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2832ifndef::VK_VERSION_1_2[:anchor-prefix:]
2833// tag::VK_EXT_buffer_device_address-features[]
2834  * [[{anchor-prefix}features-bufferDeviceAddress]]
2835    pname:bufferDeviceAddress indicates that the implementation supports
2836    accessing buffer memory in shaders as storage buffers via an address
2837    queried from flink:vkGetBufferDeviceAddress.
2838  * [[{anchor-prefix}features-bufferDeviceAddressCaptureReplay]]
2839    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2840    supports saving and reusing buffer and device addresses, e.g. for trace
2841    capture and replay.
2842  * [[{anchor-prefix}features-bufferDeviceAddressMultiDevice]]
2843    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2844    supports the pname:bufferDeviceAddress
2845ifndef::VK_KHR_ray_tracing_pipeline+VK_KHR_ray_query[feature]
2846ifdef::VK_KHR_ray_tracing_pipeline[]
2847ifndef::VK_KHR_ray_query[]
2848    and pname:rayTracingPipeline features
2849endif::VK_KHR_ray_query[]
2850ifdef::VK_KHR_ray_query[]
2851    , pname:rayTracingPipeline and pname:rayQuery features
2852endif::VK_KHR_ray_query[]
2853endif::VK_KHR_ray_tracing_pipeline[]
2854ifndef::VK_KHR_ray_tracing_pipeline[]
2855ifdef::VK_KHR_ray_query[]
2856    and pname:rayQuery features
2857endif::VK_KHR_ray_query[]
2858endif::VK_KHR_ray_tracing_pipeline[]
2859    for logical devices created with multiple physical devices.
2860    If this feature is not supported, buffer
2861ifdef::VK_KHR_acceleration_structure[]
2862    and acceleration structure
2863endif::VK_KHR_acceleration_structure[]
2864    addresses must: not be queried on a logical device created with more
2865    than one physical device.
2866// end::VK_EXT_buffer_device_address-features[]
2867
2868[NOTE]
2869.Note
2870====
2871pname:bufferDeviceAddressMultiDevice exists to allow certain legacy
2872platforms to be able to support pname:bufferDeviceAddress without needing to
2873support shared GPU virtual addresses for multi-device configurations.
2874====
2875
2876See flink:vkGetBufferDeviceAddress for more information.
2877
2878:refpage: VkPhysicalDeviceBufferDeviceAddressFeatures
2879include::{chapters}/features.adoc[tag=features]
2880
2881include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.adoc[]
2882--
2883endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2884
2885ifdef::VK_EXT_buffer_device_address[]
2886[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferAddressFeaturesEXT']
2887--
2888The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
2889defined as:
2890
2891include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.adoc[]
2892
2893include::{generated}/api/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.adoc[]
2894
2895This structure describes the following features:
2896
2897  * pname:sType is the type of this structure.
2898  * pname:pNext is `NULL` or a pointer to a structure extending this
2899    structure.
2900  * [[features-bufferDeviceAddressEXT]] pname:bufferDeviceAddress indicates
2901    that the implementation supports accessing buffer memory in shaders as
2902    storage buffers via an address queried from
2903    flink:vkGetBufferDeviceAddressEXT.
2904  * [[features-bufferDeviceAddressCaptureReplayEXT]]
2905    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2906    supports saving and reusing buffer addresses, e.g. for trace capture and
2907    replay.
2908  * [[features-bufferDeviceAddressMultiDeviceEXT]]
2909    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2910    supports the pname:bufferDeviceAddress feature for logical devices
2911    created with multiple physical devices.
2912    If this feature is not supported, buffer addresses must: not be queried
2913    on a logical device created with more than one physical device.
2914
2915:refpage: VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
2916include::{chapters}/features.adoc[tag=features]
2917
2918ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2919[NOTE]
2920.Note
2921====
2922The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure has the
2923same members as the sname:VkPhysicalDeviceBufferDeviceAddressFeatures
2924structure, but the functionality indicated by the members is expressed
2925differently.
2926The features indicated by the
2927sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure requires
2928additional flags to be passed at memory allocation time, and the capture and
2929replay mechanism is built around opaque capture addresses for buffer and
2930memory objects.
2931====
2932endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2933
2934include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.adoc[]
2935--
2936endif::VK_EXT_buffer_device_address[]
2937
2938ifdef::VK_NV_dedicated_allocation_image_aliasing[]
2939[open,refpage='VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',desc='Structure describing dedicated allocation image aliasing features that can be supported by an implementation',type='structs']
2940--
2941The sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
2942structure is defined as:
2943
2944include::{generated}/api/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.adoc[]
2945
2946This structure describes the following feature:
2947
2948  * pname:sType is the type of this structure.
2949  * pname:pNext is `NULL` or a pointer to a structure extending this
2950    structure.
2951  * [[features-dedicatedAllocationImageAliasing]]
2952    pname:dedicatedAllocationImageAliasing indicates that the implementation
2953    supports aliasing of compatible image objects on a dedicated allocation.
2954
2955:refpage: VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
2956include::{chapters}/features.adoc[tag=features]
2957
2958include::{generated}/validity/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.adoc[]
2959--
2960endif::VK_NV_dedicated_allocation_image_aliasing[]
2961
2962ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
2963[open,refpage='VkPhysicalDeviceImagelessFramebufferFeatures',desc='Structure indicating support for imageless framebuffers',type='structs',alias='VkPhysicalDeviceImagelessFramebufferFeaturesKHR']
2964--
2965The sname:VkPhysicalDeviceImagelessFramebufferFeatures structure is defined
2966as:
2967
2968include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeatures.adoc[]
2969
2970ifdef::VK_KHR_imageless_framebuffer[]
2971or the equivalent
2972
2973include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.adoc[]
2974endif::VK_KHR_imageless_framebuffer[]
2975
2976This structure describes the following feature:
2977
2978  * pname:sType is the type of this structure.
2979  * pname:pNext is `NULL` or a pointer to a structure extending this
2980    structure.
2981
2982// Must have preceding whitespace
2983ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2984ifndef::VK_VERSION_1_2[:anchor-prefix:]
2985// tag::VK_KHR_imageless_framebuffer-features[]
2986  * [[{anchor-prefix}features-imagelessFramebuffer]]
2987    pname:imagelessFramebuffer indicates that the implementation supports
2988    specifying the image view for attachments at render pass begin time via
2989    slink:VkRenderPassAttachmentBeginInfo.
2990// end::VK_KHR_imageless_framebuffer-features[]
2991
2992:refpage: VkPhysicalDeviceImagelessFramebufferFeatures
2993include::{chapters}/features.adoc[tag=features]
2994
2995include::{generated}/validity/structs/VkPhysicalDeviceImagelessFramebufferFeatures.adoc[]
2996--
2997endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
2998
2999ifdef::VK_EXT_fragment_shader_interlock[]
3000[open,refpage='VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',desc='Structure describing fragment shader interlock features that can be supported by an implementation',type='structs']
3001--
3002The sname:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure is
3003defined as:
3004
3005include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.adoc[]
3006
3007This structure describes the following features:
3008
3009  * pname:sType is the type of this structure.
3010  * pname:pNext is `NULL` or a pointer to a structure extending this
3011    structure.
3012  * [[features-fragmentShaderSampleInterlock]]
3013    pname:fragmentShaderSampleInterlock indicates that the implementation
3014    supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability.
3015  * [[features-fragmentShaderPixelInterlock]]
3016    pname:fragmentShaderPixelInterlock indicates that the implementation
3017    supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability.
3018  * [[features-fragmentShaderShadingRateInterlock]]
3019    pname:fragmentShaderShadingRateInterlock indicates that the
3020    implementation supports the code:FragmentShaderShadingRateInterlockEXT
3021    SPIR-V capability.
3022
3023:refpage: VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
3024include::{chapters}/features.adoc[tag=features]
3025
3026include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.adoc[]
3027--
3028endif::VK_EXT_fragment_shader_interlock[]
3029
3030ifdef::VK_NV_cooperative_matrix[]
3031[open,refpage='VkPhysicalDeviceCooperativeMatrixFeaturesNV',desc='Structure describing cooperative matrix features that can be supported by an implementation',type='structs']
3032--
3033The sname:VkPhysicalDeviceCooperativeMatrixFeaturesNV structure is defined
3034as:
3035
3036include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.adoc[]
3037
3038This structure describes the following features:
3039
3040  * pname:sType is the type of this structure.
3041  * pname:pNext is `NULL` or a pointer to a structure extending this
3042    structure.
3043  * [[features-cooperativeMatrix]] pname:cooperativeMatrix indicates that
3044    the implementation supports the code:CooperativeMatrixNV SPIR-V
3045    capability.
3046  * [[features-cooperativeMatrixRobustBufferAccess]]
3047    pname:cooperativeMatrixRobustBufferAccess indicates that the
3048    implementation supports robust buffer access for SPIR-V
3049    code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV
3050    instructions.
3051
3052:refpage: VkPhysicalDeviceCooperativeMatrixFeaturesNV
3053include::{chapters}/features.adoc[tag=features]
3054
3055include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.adoc[]
3056--
3057endif::VK_NV_cooperative_matrix[]
3058
3059ifdef::VK_EXT_ycbcr_image_arrays[]
3060[open,refpage='VkPhysicalDeviceYcbcrImageArraysFeaturesEXT',desc='Structure describing extended {YCbCr} image creation features that can be supported by an implementation',type='structs']
3061--
3062The sname:VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure is defined
3063as:
3064
3065include::{generated}/api/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.adoc[]
3066
3067This structure describes the following feature:
3068
3069  * pname:sType is the type of this structure.
3070  * pname:pNext is `NULL` or a pointer to a structure extending this
3071    structure.
3072  * [[features-ycbcrImageArrays]] pname:ycbcrImageArrays indicates that the
3073    implementation supports creating images with a format that requires
3074    <<formats-requiring-sampler-ycbcr-conversion, {YCbCr} conversion>> and
3075    has multiple array layers.
3076
3077:refpage: VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
3078include::{chapters}/features.adoc[tag=features]
3079
3080include::{generated}/validity/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.adoc[]
3081--
3082endif::VK_EXT_ycbcr_image_arrays[]
3083
3084ifdef::VK_VERSION_1_1[]
3085ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
3086[open,refpage='VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures',desc='Structure describing the extended types subgroups support feature for an implementation',type='structs',alias='VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR']
3087--
3088The sname:VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures structure is
3089defined as:
3090
3091include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.adoc[]
3092
3093ifdef::VK_KHR_shader_subgroup_extended_types[]
3094or the equivalent
3095
3096include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.adoc[]
3097endif::VK_KHR_shader_subgroup_extended_types[]
3098
3099This structure describes the following feature:
3100
3101  * pname:sType is the type of this structure.
3102  * pname:pNext is `NULL` or a pointer to a structure extending this
3103    structure.
3104
3105// Must have preceding whitespace
3106ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3107ifndef::VK_VERSION_1_2[:anchor-prefix:]
3108// tag::VK_KHR_shader_subgroup_extended_types-features[]
3109  * [[{anchor-prefix}features-subgroup-extended-types]]
3110    pname:shaderSubgroupExtendedTypes is a boolean specifying whether
3111    subgroup operations can use 8-bit integer, 16-bit integer, 64-bit
3112    integer, 16-bit floating-point, and vectors of these types in
3113    <<shaders-group-operations,group operations>> with
3114    <<shaders-scope-subgroup, subgroup scope>>, if the implementation
3115    supports the types.
3116// end::VK_KHR_shader_subgroup_extended_types-features[]
3117
3118:refpage: VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
3119include::{chapters}/features.adoc[tag=features]
3120
3121include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.adoc[]
3122--
3123endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
3124endif::VK_VERSION_1_1[]
3125
3126ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
3127[open,refpage='VkPhysicalDeviceHostQueryResetFeatures',desc='Structure describing whether queries can be reset from the host',type='structs',alias='VkPhysicalDeviceHostQueryResetFeaturesEXT']
3128--
3129The sname:VkPhysicalDeviceHostQueryResetFeatures structure is defined as:
3130
3131include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeatures.adoc[]
3132
3133ifdef::VK_EXT_host_query_reset[]
3134or the equivalent
3135
3136include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeaturesEXT.adoc[]
3137endif::VK_EXT_host_query_reset[]
3138
3139This structure describes the following feature:
3140
3141  * pname:sType is the type of this structure.
3142  * pname:pNext is `NULL` or a pointer to a structure extending this
3143    structure.
3144
3145// Must have preceding whitespace
3146ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3147ifndef::VK_VERSION_1_2[:anchor-prefix:]
3148// tag::VK_EXT_host_query_reset-features[]
3149  * [[{anchor-prefix}features-hostQueryReset]] pname:hostQueryReset
3150    indicates that the implementation supports resetting queries from the
3151    host with flink:vkResetQueryPool.
3152// end::VK_EXT_host_query_reset-features[]
3153
3154:refpage: VkPhysicalDeviceHostQueryResetFeatures
3155include::{chapters}/features.adoc[tag=features]
3156
3157include::{generated}/validity/structs/VkPhysicalDeviceHostQueryResetFeatures.adoc[]
3158--
3159endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
3160
3161ifdef::VK_INTEL_shader_integer_functions2[]
3162[open,refpage='VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',desc='Structure describing shader integer functions that can be supported by an implementation',type='structs']
3163--
3164The sname:VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure is
3165defined as:
3166
3167include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.adoc[]
3168
3169This structure describes the following feature:
3170
3171  * pname:sType is the type of this structure.
3172  * pname:pNext is `NULL` or a pointer to a structure extending this
3173    structure.
3174  * [[features-shaderIntegerFunctions2]] pname:shaderIntegerFunctions2
3175    indicates that the implementation supports the
3176    code:IntegerFunctions2INTEL SPIR-V capability.
3177
3178:refpage: VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures.
3179include::{chapters}/features.adoc[tag=features]
3180
3181include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.adoc[]
3182--
3183endif::VK_INTEL_shader_integer_functions2[]
3184
3185ifdef::VK_NV_coverage_reduction_mode[]
3186[open,refpage='VkPhysicalDeviceCoverageReductionModeFeaturesNV',desc='Structure describing the coverage reduction mode features that can be supported by an implementation',type='structs']
3187--
3188The sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
3189defined as:
3190
3191include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.adoc[]
3192
3193This structure describes the following feature:
3194
3195  * pname:sType is the type of this structure.
3196  * pname:pNext is `NULL` or a pointer to a structure extending this
3197    structure.
3198  * [[features-coverageReductionMode]] pname:coverageReductionMode indicates
3199    whether the implementation supports coverage reduction modes.
3200    See <<fragops-coverage-reduction, Coverage Reduction>>.
3201
3202:refpage: VkPhysicalDeviceCoverageReductionModeFeaturesNV
3203include::{chapters}/features.adoc[tag=features]
3204
3205include::{generated}/validity/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.adoc[]
3206--
3207endif::VK_NV_coverage_reduction_mode[]
3208
3209ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
3210[open,refpage='VkPhysicalDeviceTimelineSemaphoreFeatures',desc='Structure describing timeline semaphore features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTimelineSemaphoreFeaturesKHR']
3211--
3212The sname:VkPhysicalDeviceTimelineSemaphoreFeatures structure is defined as:
3213
3214include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.adoc[]
3215
3216ifdef::VK_KHR_timeline_semaphore[]
3217or the equivalent
3218
3219include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.adoc[]
3220endif::VK_KHR_timeline_semaphore[]
3221
3222This structure describes the following feature:
3223
3224  * pname:sType is the type of this structure.
3225  * pname:pNext is `NULL` or a pointer to a structure extending this
3226    structure.
3227
3228// Must have preceding whitespace
3229ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3230ifndef::VK_VERSION_1_2[:anchor-prefix:]
3231// tag::VK_KHR_timeline_semaphore-features[]
3232  * [[{anchor-prefix}features-timelineSemaphore]] pname:timelineSemaphore
3233    indicates whether semaphores created with a elink:VkSemaphoreType of
3234    ename:VK_SEMAPHORE_TYPE_TIMELINE are supported.
3235// end::VK_KHR_timeline_semaphore-features[]
3236
3237:refpage: VkPhysicalDeviceTimelineSemaphoreFeatures
3238include::{chapters}/features.adoc[tag=features]
3239
3240include::{generated}/validity/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.adoc[]
3241--
3242endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
3243
3244ifdef::VK_EXT_index_type_uint8[]
3245[open,refpage='VkPhysicalDeviceIndexTypeUint8FeaturesEXT',desc='Structure describing whether uint8 index type can be used',type='structs']
3246--
3247The sname:VkPhysicalDeviceIndexTypeUint8FeaturesEXT structure is defined as:
3248
3249include::{generated}/api/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.adoc[]
3250
3251This structure describes the following feature:
3252
3253  * pname:sType is the type of this structure.
3254  * pname:pNext is `NULL` or a pointer to a structure extending this
3255    structure.
3256  * [[features-indexTypeUint8]] pname:indexTypeUint8 indicates that
3257    ename:VK_INDEX_TYPE_UINT8_EXT can be used with
3258    flink:vkCmdBindIndexBuffer.
3259
3260:refpage: VkPhysicalDeviceIndexTypeUint8FeaturesEXT
3261include::{chapters}/features.adoc[tag=features]
3262
3263include::{generated}/validity/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.adoc[]
3264--
3265endif::VK_EXT_index_type_uint8[]
3266
3267ifdef::VK_EXT_primitive_topology_list_restart[]
3268[open,refpage='VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',desc='Structure describing whether list type primitives can support primitive restart',type='structs']
3269--
3270The sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure
3271is defined as:
3272
3273include::{generated}/api/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.adoc[]
3274
3275This structure describes the following features:
3276
3277  * pname:sType is the type of this structure.
3278  * pname:pNext is `NULL` or a pointer to a structure extending this
3279    structure.
3280  * [[features-primitiveTopologyListRestart]]
3281    pname:primitiveTopologyListRestart indicates that list type primitives,
3282    ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
3283    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
3284    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
3285    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY and
3286    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, can: use the
3287    primitive restart index value in index buffers.
3288  * [[features-primitiveTopologyPatchListRestart]]
3289    pname:primitiveTopologyPatchListRestart indicates that the
3290    ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology can: use the primitive
3291    restart index value in index buffers.
3292
3293:refpage: VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
3294include::{chapters}/features.adoc[tag=features]
3295
3296include::{generated}/validity/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.adoc[]
3297--
3298endif::VK_EXT_primitive_topology_list_restart[]
3299
3300ifdef::VK_NV_shader_sm_builtins[]
3301[open,refpage='VkPhysicalDeviceShaderSMBuiltinsFeaturesNV',desc='Structure describing the shader SM Builtins features that can be supported by an implementation',type='structs']
3302--
3303The sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is defined
3304as:
3305
3306include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.adoc[]
3307
3308This structure describes the following feature:
3309
3310  * pname:sType is the type of this structure.
3311  * pname:pNext is `NULL` or a pointer to a structure extending this
3312    structure.
3313  * [[features-shaderSMBuiltins]] pname:shaderSMBuiltins indicates whether
3314    the implementation supports the SPIR-V code:ShaderSMBuiltinsNV
3315    capability.
3316
3317:refpage: VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
3318include::{chapters}/features.adoc[tag=features]
3319
3320include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.adoc[]
3321--
3322endif::VK_NV_shader_sm_builtins[]
3323
3324ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3325[open,refpage='VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures',desc='Structure describing whether the implementation can do depth and stencil image barriers separately',type='structs',alias='VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR']
3326--
3327The sname:VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures structure is
3328defined as:
3329
3330include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.adoc[]
3331
3332ifdef::VK_KHR_separate_depth_stencil_layouts[]
3333or the equivalent
3334
3335include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.adoc[]
3336endif::VK_KHR_separate_depth_stencil_layouts[]
3337
3338This structure describes the following feature:
3339
3340  * pname:sType is the type of this structure.
3341  * pname:pNext is `NULL` or a pointer to a structure extending this
3342    structure.
3343
3344// Must have preceding whitespace
3345ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3346ifndef::VK_VERSION_1_2[:anchor-prefix:]
3347// tag::VK_KHR_separate_depth_stencil_layouts-features[]
3348  * [[{anchor-prefix}features-separateDepthStencilLayouts]]
3349    pname:separateDepthStencilLayouts indicates whether the implementation
3350    supports a sname:VkImageMemoryBarrier for a depth/stencil image with
3351    only one of ename:VK_IMAGE_ASPECT_DEPTH_BIT or
3352    ename:VK_IMAGE_ASPECT_STENCIL_BIT set, and whether
3353    ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
3354    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
3355    ename:VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or
3356    ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.
3357// end::VK_KHR_separate_depth_stencil_layouts-features[]
3358
3359:refpage: VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
3360include::{chapters}/features.adoc[tag=features]
3361
3362include::{generated}/validity/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.adoc[]
3363--
3364endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3365
3366ifdef::VK_KHR_pipeline_executable_properties[]
3367[open,refpage='VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR',desc='Structure describing whether pipeline executable properties are available',type='structs']
3368--
3369The sname:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure
3370is defined as:
3371
3372include::{generated}/api/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.adoc[]
3373
3374This structure describes the following feature:
3375
3376  * pname:sType is the type of this structure.
3377  * pname:pNext is `NULL` or a pointer to a structure extending this
3378    structure.
3379  * [[features-pipelineExecutableInfo]] pname:pipelineExecutableInfo
3380    indicates that the implementation supports reporting properties and
3381    statistics about the pipeline executables associated with a compiled
3382    pipeline.
3383
3384:refpage: VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
3385include::{chapters}/features.adoc[tag=features]
3386
3387include::{generated}/validity/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.adoc[]
3388--
3389endif::VK_KHR_pipeline_executable_properties[]
3390
3391ifdef::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
3392[open,refpage='VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures',desc='Structure describing the shader demote to helper invocations features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT']
3393--
3394The sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures structure
3395is defined as:
3396
3397include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.adoc[]
3398
3399ifdef::VK_EXT_shader_demote_to_helper_invocation[]
3400or the equivalent
3401
3402include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.adoc[]
3403endif::VK_EXT_shader_demote_to_helper_invocation[]
3404
3405This structure describes the following feature:
3406
3407  * pname:sType is the type of this structure.
3408  * pname:pNext is `NULL` or a pointer to a structure extending this
3409    structure.
3410
3411// Must have preceding whitespace
3412ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3413ifndef::VK_VERSION_1_3[:anchor-prefix:]
3414// tag::VK_EXT_shader_demote_to_helper_invocation-features[]
3415  * [[{anchor-prefix}features-shaderDemoteToHelperInvocation]]
3416    pname:shaderDemoteToHelperInvocation indicates whether the
3417    implementation supports the SPIR-V code:DemoteToHelperInvocationEXT
3418    capability.
3419// end::VK_EXT_shader_demote_to_helper_invocation-features[]
3420
3421:refpage: VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
3422include::{chapters}/features.adoc[tag=features]
3423
3424include::{generated}/validity/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.adoc[]
3425--
3426endif::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
3427
3428ifdef::VK_EXT_texel_buffer_alignment[]
3429[open,refpage='VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',desc='Structure describing the texel buffer alignment features that can be supported by an implementation',type='structs']
3430--
3431The sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
3432defined as:
3433
3434include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.adoc[]
3435
3436This structure describes the following feature:
3437
3438  * pname:sType is the type of this structure.
3439  * pname:pNext is `NULL` or a pointer to a structure extending this
3440    structure.
3441  * [[features-texelBufferAlignment]] pname:texelBufferAlignment indicates
3442    whether the implementation uses more specific alignment requirements
3443    advertised in slink:VkPhysicalDeviceTexelBufferAlignmentProperties
3444    rather than
3445    slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
3446
3447:refpage: VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
3448include::{chapters}/features.adoc[tag=features]
3449
3450include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.adoc[]
3451--
3452endif::VK_EXT_texel_buffer_alignment[]
3453
3454ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
3455[open,refpage='VkPhysicalDeviceTextureCompressionASTCHDRFeatures',desc='Structure describing ASTC HDR features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT']
3456--
3457The sname:VkPhysicalDeviceTextureCompressionASTCHDRFeatures structure is
3458defined as:
3459
3460include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.adoc[]
3461
3462ifdef::VK_EXT_texture_compression_astc_hdr[]
3463or the equivalent
3464
3465include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.adoc[]
3466endif::VK_EXT_texture_compression_astc_hdr[]
3467
3468This structure describes the following feature:
3469
3470  * pname:sType is the type of this structure.
3471  * pname:pNext is `NULL` or a pointer to a structure extending this
3472    structure.
3473
3474// Must have preceding whitespace
3475ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3476ifndef::VK_VERSION_1_3[:anchor-prefix:]
3477// tag::VK_EXT_texture_compression_astc_hdr-features[]
3478  * [[{anchor-prefix}features-textureCompressionASTC_HDR]]
3479    pname:textureCompressionASTC_HDR indicates whether all of the ASTC HDR
3480    compressed texture formats are supported.
3481    If this feature is enabled, then the
3482    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
3483    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
3484    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
3485    be supported in pname:optimalTilingFeatures for the following formats:
3486+
3487  ** ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK
3488  ** ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK
3489  ** ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK
3490  ** ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK
3491  ** ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK
3492  ** ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK
3493  ** ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK
3494  ** ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK
3495  ** ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK
3496  ** ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK
3497  ** ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK
3498  ** ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK
3499  ** ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK
3500  ** ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK
3501+
3502To query for additional properties, or if the feature is not enabled,
3503flink:vkGetPhysicalDeviceFormatProperties and
3504flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
3505supported properties of individual formats as normal.
3506// end::VK_EXT_texture_compression_astc_hdr-features[]
3507
3508:refpage: VkPhysicalDeviceTextureCompressionASTCHDRFeatures
3509include::{chapters}/features.adoc[tag=features]
3510
3511include::{generated}/validity/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.adoc[]
3512--
3513endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
3514
3515ifdef::VK_EXT_line_rasterization[]
3516[open,refpage='VkPhysicalDeviceLineRasterizationFeaturesEXT',desc='Structure describing the line rasterization features that can be supported by an implementation',type='structs']
3517--
3518The sname:VkPhysicalDeviceLineRasterizationFeaturesEXT structure is defined
3519as:
3520
3521include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.adoc[]
3522
3523This structure describes the following features:
3524
3525  * pname:sType is the type of this structure.
3526  * pname:pNext is `NULL` or a pointer to a structure extending this
3527    structure.
3528  * [[features-rectangularLines]] pname:rectangularLines indicates whether
3529    the implementation supports <<primsrast-lines,rectangular line
3530    rasterization>>.
3531  * [[features-bresenhamLines]] pname:bresenhamLines indicates whether the
3532    implementation supports <<primsrast-lines-bresenham,Bresenham-style line
3533    rasterization>>.
3534  * [[features-smoothLines]] pname:smoothLines indicates whether the
3535    implementation supports <<primsrast-lines-smooth,smooth line
3536    rasterization>>.
3537  * [[features-stippledRectangularLines]] pname:stippledRectangularLines
3538    indicates whether the implementation supports
3539    <<primsrast-lines-stipple,stippled line rasterization>> with
3540    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT lines.
3541  * [[features-stippledBresenhamLines]] pname:stippledBresenhamLines
3542    indicates whether the implementation supports
3543    <<primsrast-lines-stipple,stippled line rasterization>> with
3544    ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines.
3545  * [[features-stippledSmoothLines]] pname:stippledSmoothLines indicates
3546    whether the implementation supports <<primsrast-lines-stipple,stippled
3547    line rasterization>> with
3548    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT lines.
3549
3550:refpage: VkPhysicalDeviceLineRasterizationFeaturesEXT
3551include::{chapters}/features.adoc[tag=features]
3552
3553include::{generated}/validity/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.adoc[]
3554--
3555endif::VK_EXT_line_rasterization[]
3556
3557ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
3558[open,refpage='VkPhysicalDeviceSubgroupSizeControlFeatures',desc='Structure describing the subgroup size control features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSubgroupSizeControlFeaturesEXT']
3559--
3560The sname:VkPhysicalDeviceSubgroupSizeControlFeatures structure is defined
3561as:
3562
3563include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeatures.adoc[]
3564
3565ifdef::VK_EXT_subgroup_size_control[]
3566or the equivalent
3567
3568include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.adoc[]
3569endif::VK_EXT_subgroup_size_control[]
3570
3571This structure describes the following features:
3572
3573  * pname:sType is the type of this structure.
3574  * pname:pNext is `NULL` or a pointer to a structure extending this
3575    structure.
3576
3577// Must have preceding whitespace
3578ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3579ifndef::VK_VERSION_1_3[:anchor-prefix:]
3580// tag::VK_EXT_subgroup_size_control-features[]
3581  * [[{anchor-prefix}features-subgroupSizeControl]]
3582    pname:subgroupSizeControl indicates whether the implementation supports
3583    controlling shader subgroup sizes via the
3584    ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
3585    flag and the slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo
3586    structure.
3587  * [[{anchor-prefix}features-computeFullSubgroups]]
3588    pname:computeFullSubgroups indicates whether the implementation supports
3589    requiring full subgroups in compute
3590ifdef::VK_NV_mesh_shader[]
3591    , mesh, or task
3592endif::VK_NV_mesh_shader[]
3593    shaders via the
3594    ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
3595// end::VK_EXT_subgroup_size_control-features[]
3596
3597:refpage: VkPhysicalDeviceSubgroupSizeControlFeatures
3598include::{chapters}/features.adoc[tag=features]
3599
3600// Retain EXT name here, since the note is specific to the extension.
3601[NOTE]
3602.Note
3603====
3604The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure was added
3605in version 2 of the `apiext:VK_EXT_subgroup_size_control` extension.
3606Version 1 implementations of this extension will not fill out the features
3607structure but applications may assume that both pname:subgroupSizeControl
3608and pname:computeFullSubgroups are supported if the extension is supported.
3609(See also the <<features-requirements, Feature Requirements>> section.)
3610Applications are advised to add a
3611sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure to the
3612pname:pNext chain of slink:VkDeviceCreateInfo to enable the features
3613regardless of the version of the extension supported by the implementation.
3614If the implementation only supports version 1, it will safely ignore the
3615sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure.
3616
3617Vulkan 1.3 implementations always support the features structure.
3618====
3619
3620include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlFeatures.adoc[]
3621--
3622endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
3623
3624ifdef::VK_AMD_device_coherent_memory[]
3625[open,refpage='VkPhysicalDeviceCoherentMemoryFeaturesAMD',desc='Structure describing whether device coherent memory can be supported by an implementation',type='structs']
3626--
3627The sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as:
3628
3629include::{generated}/api/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.adoc[]
3630
3631This structure describes the following feature:
3632
3633  * pname:sType is the type of this structure.
3634  * pname:pNext is `NULL` or a pointer to a structure extending this
3635    structure.
3636  * [[features-deviceCoherentMemory]] pname:deviceCoherentMemory indicates
3637    that the implementation supports <<VkMemoryPropertyFlagBits,device
3638    coherent memory>>.
3639
3640:refpage: VkPhysicalDeviceCoherentMemoryFeaturesAMD
3641include::{chapters}/features.adoc[tag=features]
3642
3643include::{generated}/validity/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.adoc[]
3644--
3645endif::VK_AMD_device_coherent_memory[]
3646
3647ifdef::VK_KHR_acceleration_structure[]
3648[open,refpage='VkPhysicalDeviceAccelerationStructureFeaturesKHR',desc='Structure describing the acceleration structure features that can be supported by an implementation',type='structs']
3649--
3650The sname:VkPhysicalDeviceAccelerationStructureFeaturesKHR structure is
3651defined as:
3652
3653include::{generated}/api/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.adoc[]
3654
3655This structure describes the following features:
3656
3657  * pname:sType is the type of this structure.
3658  * pname:pNext is `NULL` or a pointer to a structure extending this
3659    structure.
3660  * [[features-accelerationStructure]] pname:accelerationStructure indicates
3661    whether the implementation supports the acceleration structure
3662    functionality.
3663    See <<acceleration-structure,Acceleration Structures>>.
3664  * [[features-accelerationStructureCaptureReplay]]
3665    pname:accelerationStructureCaptureReplay indicates whether the
3666    implementation supports saving and reusing acceleration structure device
3667    addresses, e.g. for trace capture and replay.
3668  * [[features-accelerationStructureIndirectBuild]]
3669    pname:accelerationStructureIndirectBuild indicates whether the
3670    implementation supports indirect acceleration structure build commands,
3671    e.g. flink:vkCmdBuildAccelerationStructuresIndirectKHR.
3672  * [[features-accelerationStructureHostCommands]]
3673    pname:accelerationStructureHostCommands indicates whether the
3674    implementation supports host side acceleration structure commands, e.g.
3675    flink:vkBuildAccelerationStructuresKHR,
3676    flink:vkCopyAccelerationStructureKHR,
3677    flink:vkCopyAccelerationStructureToMemoryKHR,
3678    flink:vkCopyMemoryToAccelerationStructureKHR,
3679    flink:vkWriteAccelerationStructuresPropertiesKHR.
3680  * [[features-descriptorBindingAccelerationStructureUpdateAfterBind]]
3681    pname:descriptorBindingAccelerationStructureUpdateAfterBind indicates
3682    whether the implementation supports updating acceleration structure
3683    descriptors after a set is bound.
3684    If this feature is not enabled,
3685    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
3686    ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR.
3687
3688:refpage: VkPhysicalDeviceAccelerationStructureFeaturesKHR
3689include::{chapters}/features.adoc[tag=features]
3690
3691include::{generated}/validity/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.adoc[]
3692--
3693endif::VK_KHR_acceleration_structure[]
3694
3695ifdef::VK_KHR_ray_tracing_pipeline[]
3696[open,refpage='VkPhysicalDeviceRayTracingPipelineFeaturesKHR',desc='Structure describing the ray tracing features that can be supported by an implementation',type='structs']
3697--
3698The sname:VkPhysicalDeviceRayTracingPipelineFeaturesKHR structure is defined
3699as:
3700
3701include::{generated}/api/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.adoc[]
3702
3703This structure describes the following features:
3704
3705  * pname:sType is the type of this structure.
3706  * pname:pNext is `NULL` or a pointer to a structure extending this
3707    structure.
3708  * [[features-rayTracingPipeline]] pname:rayTracingPipeline indicates
3709    whether the implementation supports the ray tracing pipeline
3710    functionality.
3711    See <<ray-tracing,Ray Tracing>>.
3712  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplay]]
3713    pname:rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether
3714    the implementation supports saving and reusing shader group handles,
3715    e.g. for trace capture and replay.
3716  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed]]
3717    pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed indicates
3718    whether the implementation supports reuse of shader group handles being
3719    arbitrarily mixed with creation of non-reused shader group handles.
3720    If this is ename:VK_FALSE, all reused shader group handles must: be
3721    specified before any non-reused handles may: be created.
3722  * [[features-rayTracingPipelineTraceRaysIndirect]]
3723    pname:rayTracingPipelineTraceRaysIndirect indicates whether the
3724    implementation supports indirect ray tracing commands, e.g.
3725    flink:vkCmdTraceRaysIndirectKHR.
3726  * [[features-rayTraversalPrimitiveCulling]]
3727    pname:rayTraversalPrimitiveCulling indicates whether the implementation
3728    supports <<ray-traversal-culling-primitive, primitive culling during ray
3729    traversal>>.
3730
3731:refpage: VkPhysicalDeviceRayTracingPipelineFeaturesKHR
3732include::{chapters}/features.adoc[tag=features]
3733
3734.Valid Usage
3735****
3736  * [[VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575]]
3737    If pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed is
3738    ename:VK_TRUE, pname:rayTracingPipelineShaderGroupHandleCaptureReplay
3739    must: also be ename:VK_TRUE
3740****
3741
3742include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.adoc[]
3743--
3744endif::VK_KHR_ray_tracing_pipeline[]
3745
3746ifdef::VK_KHR_ray_query[]
3747[open,refpage='VkPhysicalDeviceRayQueryFeaturesKHR',desc='Structure describing the ray query features that can be supported by an implementation',type='structs']
3748--
3749The sname:VkPhysicalDeviceRayQueryFeaturesKHR structure is defined as:
3750
3751include::{generated}/api/structs/VkPhysicalDeviceRayQueryFeaturesKHR.adoc[]
3752
3753This structure describes the following feature:
3754
3755  * pname:sType is the type of this structure.
3756  * pname:pNext is `NULL` or a pointer to a structure extending this
3757    structure.
3758  * [[features-rayQuery]] pname:rayQuery indicates whether the
3759    implementation supports ray query (code:OpRayQueryProceedKHR)
3760    functionality.
3761
3762:refpage: VkPhysicalDeviceRayQueryFeaturesKHR
3763include::{chapters}/features.adoc[tag=features]
3764
3765include::{generated}/validity/structs/VkPhysicalDeviceRayQueryFeaturesKHR.adoc[]
3766--
3767endif::VK_KHR_ray_query[]
3768
3769ifdef::VK_KHR_ray_tracing_maintenance1[]
3770[open,refpage='VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR',desc='Structure describing the ray tracing maintenance features that can be supported by an implementation',type='structs']
3771--
3772The sname:VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR structure is
3773defined as:
3774
3775include::{generated}/api/structs/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.adoc[]
3776
3777This structure describes the following features:
3778
3779  * pname:sType is the type of this structure.
3780  * pname:pNext is `NULL` or a pointer to a structure extending this
3781    structure.
3782  * [[features-rayTracingMaintenance1]] pname:rayTracingMaintenance1
3783    indicates that the implementation supports the following:
3784  ** The code:CullMaskKHR SPIR-V builtin using the `SPV_KHR_ray_cull_mask`
3785     SPIR-V extension.
3786  ** Additional acceleration structure property queries:
3787     ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
3788     and ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR.
3789  ** A new access flag ename:VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
3790  ** A new pipeline stage flag bit
3791     ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
3792  * [[features-rayTracingPipelineTraceRaysIndirect2]]
3793    pname:rayTracingPipelineTraceRaysIndirect2 indicates whether the
3794    implementation supports the extended indirect ray tracing command
3795    flink:vkCmdTraceRaysIndirect2KHR.
3796
3797:refpage: VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
3798include::{chapters}/features.adoc[tag=features]
3799
3800include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.adoc[]
3801--
3802endif::VK_KHR_ray_tracing_maintenance1[]
3803
3804ifdef::VK_EXT_extended_dynamic_state[]
3805[open,refpage='VkPhysicalDeviceExtendedDynamicStateFeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
3806--
3807The sname:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure is
3808defined as:
3809
3810include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.adoc[]
3811
3812This structure describes the following feature:
3813
3814  * pname:sType is the type of this structure.
3815  * pname:pNext is `NULL` or a pointer to a structure extending this
3816    structure.
3817  * [[features-extendedDynamicState]] pname:extendedDynamicState indicates
3818    that the implementation supports the following dynamic states:
3819  ** ename:VK_DYNAMIC_STATE_CULL_MODE
3820  ** ename:VK_DYNAMIC_STATE_FRONT_FACE
3821  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
3822  ** ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
3823  ** ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
3824  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
3825  ** ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE
3826  ** ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
3827  ** ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP
3828  ** ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
3829  ** ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE
3830  ** ename:VK_DYNAMIC_STATE_STENCIL_OP
3831
3832:refpage: VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
3833include::{chapters}/features.adoc[tag=features]
3834
3835include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.adoc[]
3836--
3837endif::VK_EXT_extended_dynamic_state[]
3838
3839ifdef::VK_EXT_extended_dynamic_state2[]
3840[open,refpage='VkPhysicalDeviceExtendedDynamicState2FeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
3841--
3842The sname:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure is
3843defined as:
3844
3845include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.adoc[]
3846
3847This structure describes the following features:
3848
3849  * pname:sType is the type of this structure.
3850  * pname:pNext is `NULL` or a pointer to a structure extending this
3851    structure.
3852  * [[features-extendedDynamicState2]] pname:extendedDynamicState2 indicates
3853    that the implementation supports the following dynamic states:
3854  ** ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
3855  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
3856  ** ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
3857  * [[features-extendedDynamicState2LogicOp]]
3858    pname:extendedDynamicState2LogicOp indicates that the implementation
3859    supports the following dynamic state:
3860  ** ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT
3861  * [[features-extendedDynamicState2PatchControlPoints]]
3862    pname:extendedDynamicState2PatchControlPoints indicates that the
3863    implementation supports the following dynamic state:
3864  ** ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
3865
3866:refpage: VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
3867include::{chapters}/features.adoc[tag=features]
3868
3869include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.adoc[]
3870--
3871endif::VK_EXT_extended_dynamic_state2[]
3872
3873ifdef::VK_EXT_extended_dynamic_state3[]
3874[open,refpage='VkPhysicalDeviceExtendedDynamicState3FeaturesEXT',desc='Structure describing what extended dynamic state is supported by the implementation',type='structs']
3875--
3876The sname:VkPhysicalDeviceExtendedDynamicState3FeaturesEXT structure is
3877defined as:
3878
3879include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.adoc[]
3880
3881This structure describes the following features:
3882
3883  * pname:sType is the type of this structure.
3884  * pname:pNext is `NULL` or a pointer to a structure extending this
3885    structure.
3886  * [[features-extendedDynamicState3TessellationDomainOrigin]]
3887    pname:extendedDynamicState3TessellationDomainOrigin indicates that the
3888    implementation supports the following dynamic state:
3889  ** ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
3890  * [[features-extendedDynamicState3DepthClampEnable]]
3891    pname:extendedDynamicState3DepthClampEnable indicates that the
3892    implementation supports the following dynamic state:
3893  ** ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
3894  * [[features-extendedDynamicState3PolygonMode]]
3895    pname:extendedDynamicState3PolygonMode indicates that the implementation
3896    supports the following dynamic state:
3897  ** ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT
3898  * [[features-extendedDynamicState3RasterizationSamples]]
3899    pname:extendedDynamicState3RasterizationSamples indicates that the
3900    implementation supports the following dynamic state:
3901  ** ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
3902  * [[features-extendedDynamicState3SampleMask]]
3903    pname:extendedDynamicState3SampleMask indicates that the implementation
3904    supports the following dynamic state:
3905  ** ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
3906  * [[features-extendedDynamicState3AlphaToCoverageEnable]]
3907    pname:extendedDynamicState3AlphaToCoverageEnable indicates that the
3908    implementation supports the following dynamic state:
3909  ** ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
3910  * [[features-extendedDynamicState3AlphaToOneEnable]]
3911    pname:extendedDynamicState3AlphaToOneEnable indicates that the
3912    implementation supports the following dynamic state:
3913  ** ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
3914  * [[features-extendedDynamicState3LogicOpEnable]]
3915    pname:extendedDynamicState3LogicOpEnable indicates that the
3916    implementation supports the following dynamic state:
3917  ** ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
3918  * [[features-extendedDynamicState3ColorBlendEnable]]
3919    pname:extendedDynamicState3ColorBlendEnable indicates that the
3920    implementation supports the following dynamic state:
3921  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
3922  * [[features-extendedDynamicState3ColorBlendEquation]]
3923    pname:extendedDynamicState3ColorBlendEquation indicates that the
3924    implementation supports the following dynamic state:
3925  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
3926  * [[features-extendedDynamicState3ColorWriteMask]]
3927    pname:extendedDynamicState3ColorWriteMask indicates that the
3928    implementation supports the following dynamic state:
3929  ** ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
3930  * [[features-extendedDynamicState3RasterizationStream]]
3931    pname:extendedDynamicState3RasterizationStream indicates that the
3932    implementation supports the following dynamic state:
3933  ** ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
3934  * [[features-extendedDynamicState3ConservativeRasterizationMode]]
3935    pname:extendedDynamicState3ConservativeRasterizationMode indicates that
3936    the implementation supports the following dynamic state:
3937  ** ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
3938  * [[features-extendedDynamicState3ExtraPrimitiveOverestimationSize]]
3939    pname:extendedDynamicState3ExtraPrimitiveOverestimationSize indicates
3940    that the implementation supports the following dynamic state:
3941  ** ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
3942  * [[features-extendedDynamicState3DepthClipEnable]]
3943    pname:extendedDynamicState3DepthClipEnable indicates that the
3944    implementation supports the following dynamic state:
3945  ** ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
3946  * [[features-extendedDynamicState3SampleLocationsEnable]]
3947    pname:extendedDynamicState3SampleLocationsEnable indicates that the
3948    implementation supports the following dynamic state:
3949  ** ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
3950  * [[features-extendedDynamicState3ColorBlendAdvanced]]
3951    pname:extendedDynamicState3ColorBlendAdvanced indicates that the
3952    implementation supports the following dynamic state:
3953  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
3954  * [[features-extendedDynamicState3ProvokingVertexMode]]
3955    pname:extendedDynamicState3ProvokingVertexMode indicates that the
3956    implementation supports the following dynamic state:
3957  ** ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
3958  * [[features-extendedDynamicState3LineRasterizationMode]]
3959    pname:extendedDynamicState3LineRasterizationMode indicates that the
3960    implementation supports the following dynamic state:
3961  ** ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
3962  * [[features-extendedDynamicState3LineStippleEnable]]
3963    pname:extendedDynamicState3LineStippleEnable indicates that the
3964    implementation supports the following dynamic state:
3965  ** ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
3966  * [[features-extendedDynamicState3DepthClipNegativeOneToOne]]
3967    pname:extendedDynamicState3DepthClipNegativeOneToOne indicates that the
3968    implementation supports the following dynamic state:
3969  ** ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
3970  * [[features-extendedDynamicState3ViewportWScalingEnable]]
3971    pname:extendedDynamicState3ViewportWScalingEnable indicates that the
3972    implementation supports the following dynamic state:
3973  ** ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
3974  * [[features-extendedDynamicState3ViewportSwizzle]]
3975    pname:extendedDynamicState3ViewportSwizzle indicates that the
3976    implementation supports the following dynamic state:
3977  ** ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
3978  * [[features-extendedDynamicState3CoverageToColorEnable]]
3979    pname:extendedDynamicState3CoverageToColorEnable indicates that the
3980    implementation supports the following dynamic state:
3981  ** ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
3982  * [[features-extendedDynamicState3CoverageToColorLocation]]
3983    pname:extendedDynamicState3CoverageToColorLocation indicates that the
3984    implementation supports the following dynamic state:
3985  ** ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
3986  * [[features-extendedDynamicState3CoverageModulationMode]]
3987    pname:extendedDynamicState3CoverageModulationMode indicates that the
3988    implementation supports the following dynamic state:
3989  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
3990  * [[features-extendedDynamicState3CoverageModulationTableEnable]]
3991    pname:extendedDynamicState3CoverageModulationTableEnable indicates that
3992    the implementation supports the following dynamic state:
3993  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
3994  * [[features-extendedDynamicState3CoverageModulationTable]]
3995    pname:extendedDynamicState3CoverageModulationTable indicates that the
3996    implementation supports the following dynamic state:
3997  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
3998  * [[features-extendedDynamicState3CoverageReductionMode]]
3999    pname:extendedDynamicState3CoverageReductionMode indicates that the
4000    implementation supports the following dynamic state:
4001  ** ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
4002  * [[features-extendedDynamicState3RepresentativeFragmentTestEnable]]
4003    pname:extendedDynamicState3RepresentativeFragmentTestEnable indicates
4004    that the implementation supports the following dynamic state:
4005  ** ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
4006  * [[features-extendedDynamicState3ShadingRateImageEnable]]
4007    pname:extendedDynamicState3ShadingRateImageEnable indicates that the
4008    implementation supports the following dynamic state:
4009  ** ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
4010
4011:refpage: VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
4012include::{chapters}/features.adoc[tag=features]
4013
4014include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.adoc[]
4015--
4016endif::VK_EXT_extended_dynamic_state3[]
4017
4018ifdef::VK_NV_device_generated_commands[]
4019[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV',desc='Structure describing the device-generated commands features that can be supported by an implementation',type='structs']
4020--
4021The sname:VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV structure is
4022defined as:
4023
4024include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.adoc[]
4025
4026This structure describes the following feature:
4027
4028  * pname:sType is the type of this structure.
4029  * pname:pNext is `NULL` or a pointer to a structure extending this
4030    structure.
4031  * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands
4032    indicates whether the implementation supports functionality to generate
4033    commands on the device.
4034    See <<device-generated-commands,Device-Generated Commands>>.
4035
4036:refpage: VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
4037include::{chapters}/features.adoc[tag=features]
4038
4039include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.adoc[]
4040--
4041endif::VK_NV_device_generated_commands[]
4042
4043ifdef::VK_NV_device_diagnostics_config[]
4044[open,refpage='VkPhysicalDeviceDiagnosticsConfigFeaturesNV',desc='Structure describing the device-generated diagnostic configuration features that can be supported by an implementation',type='structs']
4045--
4046The sname:VkPhysicalDeviceDiagnosticsConfigFeaturesNV structure is defined
4047as:
4048
4049include::{generated}/api/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.adoc[]
4050
4051This structure describes the following feature:
4052
4053  * pname:sType is the type of this structure.
4054  * pname:pNext is `NULL` or a pointer to a structure extending this
4055    structure.
4056  * [[features-diagnosticsConfig]] pname:diagnosticsConfig indicates whether
4057    the implementation supports the ability to configure diagnostic tools.
4058
4059:refpage: VkPhysicalDeviceDiagnosticsConfigFeaturesNV
4060include::{chapters}/features.adoc[tag=features]
4061
4062include::{generated}/validity/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.adoc[]
4063--
4064endif::VK_NV_device_diagnostics_config[]
4065
4066ifdef::VK_EXT_device_memory_report[]
4067[open,refpage='VkPhysicalDeviceDeviceMemoryReportFeaturesEXT',desc='Structure describing whether device memory report callback can be supported by an implementation',type='structs']
4068--
4069The sname:VkPhysicalDeviceDeviceMemoryReportFeaturesEXT structure is defined
4070as:
4071
4072include::{generated}/api/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.adoc[]
4073
4074This structure describes the following feature:
4075
4076  * pname:sType is the type of this structure.
4077  * pname:pNext is `NULL` or a pointer to a structure extending this
4078    structure.
4079  * [[features-deviceMemoryReport]] pname:deviceMemoryReport indicates
4080    whether the implementation supports the ability to register device
4081    memory report callbacks.
4082
4083:refpage: VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
4084include::{chapters}/features.adoc[tag=features]
4085
4086include::{generated}/validity/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.adoc[]
4087--
4088endif::VK_EXT_device_memory_report[]
4089
4090ifdef::VK_EXT_global_priority_query,VK_KHR_global_priority[]
4091[open,refpage='VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR',desc='Structure describing whether global priority query can be supported by an implementation',type='structs']
4092--
4093The sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR structure is
4094defined as:
4095
4096include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.adoc[]
4097ifdef::VK_EXT_global_priority_query[]
4098or the equivalent
4099
4100include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.adoc[]
4101endif::VK_EXT_global_priority_query[]
4102
4103This structure describes the following feature:
4104
4105  * pname:sType is the type of this structure.
4106  * pname:pNext is `NULL` or a pointer to a structure extending this
4107    structure.
4108  * [[features-globalPriorityQuery]] pname:globalPriorityQuery indicates
4109    whether the implementation supports the ability to query global queue
4110    priorities.
4111
4112:refpage: VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR
4113include::{chapters}/features.adoc[tag=features]
4114
4115include::{generated}/validity/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.adoc[]
4116--
4117endif::VK_EXT_global_priority_query,VK_KHR_global_priority[]
4118
4119ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
4120[open,refpage='VkPhysicalDevicePipelineCreationCacheControlFeatures',desc='Structure describing whether pipeline cache control can be supported by an implementation',type='structs',alias='VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT']
4121--
4122The sname:VkPhysicalDevicePipelineCreationCacheControlFeatures structure is
4123defined as:
4124
4125include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeatures.adoc[]
4126
4127ifdef::VK_EXT_pipeline_creation_cache_control[]
4128or the equivalent
4129
4130include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.adoc[]
4131endif::VK_EXT_pipeline_creation_cache_control[]
4132
4133This structure describes the following feature:
4134
4135  * pname:sType is the type of this structure.
4136  * pname:pNext is `NULL` or a pointer to a structure extending this
4137    structure.
4138
4139// Must have preceding whitespace
4140ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4141ifndef::VK_VERSION_1_3[:anchor-prefix:]
4142// tag::VK_EXT_pipeline_creation_cache_control-features[]
4143  * [[{anchor-prefix}features-pipelineCreationCacheControl]]
4144    pname:pipelineCreationCacheControl indicates that the implementation
4145    supports:
4146  ** The following can: be used in stext:Vk*PipelineCreateInfo::pname:flags:
4147  *** ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
4148  *** ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
4149  ** The following can: be used in
4150     slink:VkPipelineCacheCreateInfo::pname:flags:
4151  *** ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
4152// end::VK_EXT_pipeline_creation_cache_control-features[]
4153
4154:refpage: VkPhysicalDevicePipelineCreationCacheControlFeatures
4155include::{chapters}/features.adoc[tag=features]
4156
4157include::{generated}/validity/structs/VkPhysicalDevicePipelineCreationCacheControlFeatures.adoc[]
4158--
4159endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
4160
4161ifdef::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
4162[open,refpage='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',desc='Structure describing support for zero initialization of workgroup memory by an implementation',type='structs',alias='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR']
4163--
4164The sname:VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure is
4165defined as:
4166
4167include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.adoc[]
4168
4169ifdef::VK_KHR_zero_initialize_workgroup_memory[]
4170or the equivalent
4171
4172include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.adoc[]
4173endif::VK_KHR_zero_initialize_workgroup_memory[]
4174
4175This structure describes the following feature:
4176
4177  * pname:sType is the type of this structure.
4178  * pname:pNext is `NULL` or a pointer to a structure extending this
4179    structure.
4180
4181// Must have preceding whitespace
4182ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4183ifndef::VK_VERSION_1_3[:anchor-prefix:]
4184// tag::VK_KHR_zero_initialize_workgroup_memory-features[]
4185  * [[{anchor-prefix}features-shaderZeroInitializeWorkgroupMemory]]
4186    pname:shaderZeroInitializeWorkgroupMemory specifies whether the
4187    implementation supports initializing a variable in Workgroup storage
4188    class.
4189// end::VK_KHR_zero_initialize_workgroup_memory-features[]
4190
4191:refpage: VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
4192include::{chapters}/features.adoc[tag=features]
4193
4194include::{generated}/validity/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.adoc[]
4195--
4196endif::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
4197
4198ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
4199[open,refpage='VkPhysicalDevicePrivateDataFeatures',desc='Structure specifying physical device support',type='structs',alias='VkPhysicalDevicePrivateDataFeaturesEXT']
4200--
4201The sname:VkPhysicalDevicePrivateDataFeatures structure is defined as:
4202
4203include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeatures.adoc[]
4204
4205ifdef::VK_EXT_private_data[]
4206or the equivalent
4207
4208include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeaturesEXT.adoc[]
4209endif::VK_EXT_private_data[]
4210
4211This structure describes the following feature:
4212
4213  * pname:sType is the type of this structure.
4214  * pname:pNext is `NULL` or a pointer to a structure extending this
4215    structure.
4216
4217// Must have preceding whitespace
4218ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4219ifndef::VK_VERSION_1_3[:anchor-prefix:]
4220// tag::VK_EXT_private_data-features[]
4221  * [[{anchor-prefix}features-privateData]] pname:privateData indicates
4222    whether the implementation supports private data.
4223    See <<private-data, Private Data>>.
4224// end::VK_EXT_private_data-features[]
4225
4226:refpage: VkPhysicalDevicePrivateDataFeatures
4227include::{chapters}/features.adoc[tag=features]
4228
4229include::{generated}/validity/structs/VkPhysicalDevicePrivateDataFeatures.adoc[]
4230--
4231endif::VK_VERSION_1_3,VK_EXT_private_data[]
4232
4233ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
4234[open,refpage='VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',desc='Structure describing support for shader subgroup uniform control flow by an implementation',type='structs']
4235--
4236The sname:VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
4237structure is defined as:
4238
4239include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.adoc[]
4240
4241This structure describes the following feature:
4242
4243  * pname:sType is the type of this structure.
4244  * pname:pNext is `NULL` or a pointer to a structure extending this
4245    structure.
4246  * [[features-shaderSubgroupUniformControlFlow]]
4247    pname:shaderSubgroupUniformControlFlow specifies whether the
4248    implementation supports the shader execution mode
4249    code:SubgroupUniformControlFlowKHR
4250
4251:refpage: VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
4252include::{chapters}/features.adoc[tag=features]
4253
4254include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.adoc[]
4255--
4256endif::VK_KHR_shader_subgroup_uniform_control_flow[]
4257
4258ifdef::VK_EXT_robustness2[]
4259[open,refpage='VkPhysicalDeviceRobustness2FeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs']
4260--
4261The sname:VkPhysicalDeviceRobustness2FeaturesEXT structure is defined as:
4262
4263include::{generated}/api/structs/VkPhysicalDeviceRobustness2FeaturesEXT.adoc[]
4264
4265This structure describes the following features:
4266
4267  * pname:sType is the type of this structure.
4268  * pname:pNext is `NULL` or a pointer to a structure extending this
4269    structure.
4270  * [[features-robustBufferAccess2]] pname:robustBufferAccess2 indicates
4271    whether buffer accesses are tightly bounds-checked against the range of
4272    the descriptor.
4273    Uniform buffers must: be bounds-checked to the range of the descriptor,
4274    where the range is rounded up to a multiple of
4275    <<limits-robustUniformBufferAccessSizeAlignment,
4276    pname:robustUniformBufferAccessSizeAlignment>>.
4277    Storage buffers must: be bounds-checked to the range of the descriptor,
4278    where the range is rounded up to a multiple of
4279    <<limits-robustStorageBufferAccessSizeAlignment,
4280    pname:robustStorageBufferAccessSizeAlignment>>.
4281    Out of bounds buffer loads will return zero values, and <<textures,
4282    image load, sample, and atomic operations>> from texel buffers will have
4283    [eq]#(0,0,1)# values <<textures-conversion-to-rgba,inserted for missing
4284    G, B, or A components>> based on the format.
4285  * [[features-robustImageAccess2]] pname:robustImageAccess2 indicates
4286    whether image accesses are tightly bounds-checked against the dimensions
4287    of the image view.
4288    Out of bounds <<textures, image load, sample, and atomic operations>>
4289    from images will return zero values, with [eq]#(0,0,1)# values
4290    <<textures-conversion-to-rgba,inserted for missing G, B, or A
4291    components>> based on the format.
4292  * [[{vuprefix}features-nullDescriptor]] pname:nullDescriptor indicates
4293    whether descriptors can: be written with a dlink:VK_NULL_HANDLE resource
4294    or view, which are considered valid to access and act as if the
4295    descriptor were bound to nothing.
4296
4297:refpage: VkPhysicalDeviceRobustness2FeaturesEXT
4298include::{chapters}/features.adoc[tag=features]
4299
4300.Valid Usage
4301****
4302  * [[VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000]]
4303    If pname:robustBufferAccess2 is enabled then
4304    <<features-robustBufferAccess, pname:robustBufferAccess>> must: also be
4305    enabled
4306****
4307
4308include::{generated}/validity/structs/VkPhysicalDeviceRobustness2FeaturesEXT.adoc[]
4309--
4310endif::VK_EXT_robustness2[]
4311
4312ifndef::VK_EXT_robustness2[]
4313[[features-nullDescriptor]] nullDescriptor support requires the
4314`apiext:VK_EXT_robustness2` extension.
4315endif::VK_EXT_robustness2[]
4316
4317ifdef::VK_VERSION_1_3,VK_EXT_image_robustness[]
4318[open,refpage='VkPhysicalDeviceImageRobustnessFeatures',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs',alias='VkPhysicalDeviceImageRobustnessFeaturesEXT']
4319--
4320The sname:VkPhysicalDeviceImageRobustnessFeatures structure is defined as:
4321
4322include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeatures.adoc[]
4323
4324ifdef::VK_EXT_image_robustness[]
4325or the equivalent
4326
4327include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.adoc[]
4328endif::VK_EXT_image_robustness[]
4329
4330This structure describes the following feature:
4331
4332  * pname:sType is the type of this structure.
4333  * pname:pNext is `NULL` or a pointer to a structure extending this
4334    structure.
4335
4336// Must have preceding whitespace
4337ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4338ifndef::VK_VERSION_1_3[:anchor-prefix:]
4339// tag::VK_EXT_image_robustness-features[]
4340  * [[{anchor-prefix}features-robustImageAccess]] pname:robustImageAccess
4341    indicates whether image accesses are tightly bounds-checked against the
4342    dimensions of the image view.
4343    <<textures-input-validation,Invalid texels>> resulting from out of
4344    bounds image loads will be replaced as described in
4345    <<textures-texel-replacement,Texel Replacement>>, with either
4346    [eq]#(0,0,1)# or [eq]#(0,0,0)# values inserted for missing G, B, or A
4347    components based on the format.
4348// end::VK_EXT_image_robustness-features[]
4349
4350:refpage: VkPhysicalDeviceImageRobustnessFeatures
4351include::{chapters}/features.adoc[tag=features]
4352
4353include::{generated}/validity/structs/VkPhysicalDeviceImageRobustnessFeatures.adoc[]
4354--
4355endif::VK_VERSION_1_3,VK_EXT_image_robustness[]
4356
4357ifdef::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
4358[open,refpage='VkPhysicalDeviceShaderTerminateInvocationFeatures',desc='Structure describing support for the SPIR-V code:SPV_KHR_terminate_invocation extension',type='structs',alias='VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR']
4359--
4360The sname:VkPhysicalDeviceShaderTerminateInvocationFeatures structure is
4361defined as:
4362
4363include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeatures.adoc[]
4364
4365ifdef::VK_KHR_shader_terminate_invocation[]
4366or the equivalent
4367
4368include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.adoc[]
4369endif::VK_KHR_shader_terminate_invocation[]
4370
4371This structure describes the following feature:
4372
4373  * pname:sType is the type of this structure.
4374  * pname:pNext is `NULL` or a pointer to a structure extending this
4375    structure.
4376
4377// Must have preceding whitespace
4378ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4379ifndef::VK_VERSION_1_3[:anchor-prefix:]
4380// tag::VK_KHR_shader_terminate_invocation-features[]
4381  * [[{anchor-prefix}features-shaderTerminateInvocation]]
4382    pname:shaderTerminateInvocation specifies whether the implementation
4383    supports SPIR-V modules that use the `SPV_KHR_terminate_invocation`
4384    extension.
4385// end::VK_KHR_shader_terminate_invocation-features[]
4386
4387:refpage: VkPhysicalDeviceShaderTerminateInvocationFeatures
4388include::{chapters}/features.adoc[tag=features]
4389
4390include::{generated}/validity/structs/VkPhysicalDeviceShaderTerminateInvocationFeatures.adoc[]
4391--
4392endif::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
4393
4394ifdef::VK_EXT_custom_border_color[]
4395[open,refpage='VkPhysicalDeviceCustomBorderColorFeaturesEXT',desc='Structure describing whether custom border colors can be supported by an implementation',type='structs']
4396--
4397The sname:VkPhysicalDeviceCustomBorderColorFeaturesEXT structure is defined
4398as:
4399
4400include::{generated}/api/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.adoc[]
4401
4402This structure describes the following features:
4403
4404  * pname:sType is the type of this structure.
4405  * pname:pNext is `NULL` or a pointer to a structure extending this
4406    structure.
4407  * [[features-customBorderColors]] pname:customBorderColors indicates that
4408    the implementation supports providing a pname:borderColor value with one
4409    of the following values at sampler creation time:
4410  ** ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
4411  ** ename:VK_BORDER_COLOR_INT_CUSTOM_EXT
4412  * [[features-customBorderColorWithoutFormat]]
4413    pname:customBorderColorWithoutFormat indicates that explicit formats are
4414    not required for custom border colors and the value of the pname:format
4415    member of the slink:VkSamplerCustomBorderColorCreateInfoEXT structure
4416    may: be ename:VK_FORMAT_UNDEFINED.
4417    If this feature bit is not set, applications must: provide the
4418    elink:VkFormat of the image view(s) being sampled by this sampler in the
4419    pname:format member of the slink:VkSamplerCustomBorderColorCreateInfoEXT
4420    structure.
4421
4422:refpage: VkPhysicalDeviceCustomBorderColorFeaturesEXT
4423include::{chapters}/features.adoc[tag=features]
4424
4425include::{generated}/validity/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.adoc[]
4426--
4427endif::VK_EXT_custom_border_color[]
4428
4429ifdef::VK_EXT_border_color_swizzle[]
4430[open,refpage='VkPhysicalDeviceBorderColorSwizzleFeaturesEXT',desc='Structure describing whether samplers with custom border colors require the component swizzle specified in order to have defined behavior',type='structs']
4431--
4432The sname:VkPhysicalDeviceBorderColorSwizzleFeaturesEXT structure is defined
4433as:
4434
4435include::{generated}/api/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.adoc[]
4436
4437This structure describes the following features:
4438
4439  * pname:sType is the type of this structure.
4440  * pname:pNext is `NULL` or a pointer to a structure extending this
4441    structure.
4442  * [[features-borderColorSwizzle]] pname:borderColorSwizzle indicates that
4443    defined values are returned by sampled image operations when used with a
4444    sampler that uses a ename:VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
4445    ename:VK_BORDER_COLOR_INT_OPAQUE_BLACK,
4446    ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, or
4447    ename:VK_BORDER_COLOR_INT_CUSTOM_EXT pname:borderColor and an image view
4448    that uses a non-<<resources-image-views-identity-mappings,identity
4449    component mapping>>, when either pname:borderColorSwizzleFromImage is
4450    enabled or the slink:VkSamplerBorderColorComponentMappingCreateInfoEXT
4451    is specified.
4452  * [[features-borderColorSwizzleFromImage]]
4453    pname:borderColorSwizzleFromImage indicates that the implementation will
4454    return the correct border color values from sampled image operations
4455    under the conditions expressed above, without the application having to
4456    specify the border color component mapping when creating the sampler
4457    object.
4458    If this feature bit is not set, applications can: chain a
4459    slink:VkSamplerBorderColorComponentMappingCreateInfoEXT structure when
4460    creating samplers for use with image views that do not have an
4461    <<resources-image-views-identity-mappings,identity swizzle>> and, when
4462    those samplers are combined with image views using the same component
4463    mapping, sampled image operations that use opaque black or custom border
4464    colors will return the correct border color values.
4465
4466:refpage: VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
4467include::{chapters}/features.adoc[tag=features]
4468
4469include::{generated}/validity/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.adoc[]
4470--
4471endif::VK_EXT_border_color_swizzle[]
4472
4473ifdef::VK_KHR_portability_subset[]
4474[open,refpage='VkPhysicalDevicePortabilitySubsetFeaturesKHR',desc='Structure describing the features that may not be supported by an implementation of the Vulkan 1.0 Portability Subset',type='structs']
4475--
4476The sname:VkPhysicalDevicePortabilitySubsetFeaturesKHR structure is defined
4477as:
4478
4479include::{generated}/api/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.adoc[]
4480
4481This structure describes the following features:
4482
4483  * pname:sType is the type of this structure.
4484  * pname:pNext is `NULL` or a pointer to a structure extending this
4485    structure.
4486  * [[features-constantAlphaColorBlendFactors]]
4487    pname:constantAlphaColorBlendFactors indicates whether this
4488    implementation supports constant _alpha_ <<framebuffer-blendfactors>>
4489    used as source or destination _color_ <<framebuffer-blending>>.
4490  * [[features-events]] pname:events indicates whether this implementation
4491    supports synchronization using <<synchronization-events>>.
4492  * [[features-imageViewFormatReinterpretation]]
4493    pname:imageViewFormatReinterpretation indicates whether this
4494    implementation supports a sname:VkImageView being created with a texel
4495    format containing a different number of components, or a different
4496    number of bits in each component, than the texel format of the
4497    underlying sname:VkImage.
4498  * [[features-imageViewFormatSwizzle]] pname:imageViewFormatSwizzle
4499    indicates whether this implementation supports remapping format
4500    components using slink:VkImageViewCreateInfo::pname:components.
4501  * [[features-imageView2DOn3DImage]] pname:imageView2DOn3DImage indicates
4502    whether this implementation supports a sname:VkImage being created with
4503    the ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a
4504    2D or 2D array image view to be created on a 3D sname:VkImage.
4505  * [[features-multisampleArrayImage]] pname:multisampleArrayImage indicates
4506    whether this implementation supports a sname:VkImage being created as a
4507    2D array with multiple samples per texel.
4508  * [[features-mutableComparisonSamplers]] pname:mutableComparisonSamplers
4509    indicates whether this implementation allows descriptors with comparison
4510    samplers to be <<descriptorsets-updates, updated>>.
4511  * [[features-pointPolygons]] pname:pointPolygons indicates whether this
4512    implementation supports <<primsrast>> using a _point_
4513    <<primsrast-polygonmode>>.
4514  * [[features-samplerMipLodBias]] pname:samplerMipLodBias indicates whether
4515    this implementation supports setting a <<samplers-mipLodBias, mipmap LOD
4516    bias value>> when <<samplers, creating a sampler>>.
4517  * [[features-separateStencilMaskRef]] pname:separateStencilMaskRef
4518    indicates whether this implementation supports separate front and back
4519    <<fragops-stencil>> reference values.
4520  * [[features-shaderSampleRateInterpolationFunctions]]
4521    pname:shaderSampleRateInterpolationFunctions indicates whether this
4522    implementation supports fragment shaders which use the
4523    <<spirvenv-capabilities-table-InterpolationFunction,
4524    code:InterpolationFunction>> capability and the extended instructions
4525    `InterpolateAtCentroid`, `InterpolateAtOffset`, and
4526    `InterpolateAtSample` from the `GLSL.std.450` extended instruction set.
4527    This member is only meaningful if the <<features-sampleRateShading,
4528    pname:sampleRateShading>> feature is supported.
4529  * [[features-tessellationIsolines]] pname:tessellationIsolines indicates
4530    whether this implementation supports
4531    <<tessellation-isoline-tessellation, isoline output>> from the
4532    <<tessellation>> stage of a graphics pipeline.
4533    This member is only meaningful if <<features-tessellationShader,
4534    pname:tessellationShader>> are supported.
4535  * [[features-tessellationPointMode]] pname:tessellationPointMode indicates
4536    whether this implementation supports <<tessellation-point-mode, point
4537    output>> from the <<tessellation>> stage of a graphics pipeline.
4538    This member is only meaningful if <<features-tessellationShader,
4539    pname:tessellationShader>> are supported.
4540  * [[features-triangleFans]] pname:triangleFans indicates whether this
4541    implementation supports <<drawing-triangle-fans>> primitive topology.
4542  * [[features-vertexAttributeAccessBeyondStride]]
4543    pname:vertexAttributeAccessBeyondStride indicates whether this
4544    implementation supports accessing a vertex input attribute beyond the
4545    stride of the corresponding vertex input binding.
4546
4547:refpage: VkPhysicalDevicePortabilitySubsetFeaturesKHR
4548include::{chapters}/features.adoc[tag=features]
4549
4550include::{generated}/validity/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.adoc[]
4551--
4552endif::VK_KHR_portability_subset[]
4553
4554ifdef::VK_KHR_performance_query[]
4555include::{chapters}/VK_KHR_performance_query/features.adoc[]
4556endif::VK_KHR_performance_query[]
4557
4558ifdef::VK_EXT_4444_formats[]
4559[open,refpage='VkPhysicalDevice4444FormatsFeaturesEXT',desc='Structure describing additional 4444 formats supported by an implementation',type='structs']
4560--
4561The sname:VkPhysicalDevice4444FormatsFeaturesEXT structure is defined as:
4562
4563include::{generated}/api/structs/VkPhysicalDevice4444FormatsFeaturesEXT.adoc[]
4564
4565This structure describes the following features:
4566
4567  * pname:sType is the type of this structure.
4568  * pname:pNext is `NULL` or a pointer to a structure extending this
4569    structure.
4570  * [[features-formatA4R4G4B4]] pname:formatA4R4G4B4 indicates that the
4571    implementation must: support using a elink:VkFormat of
4572    ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT with at least the following
4573    elink:VkFormatFeatureFlagBits:
4574  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4575  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4576  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4577  * [[features-formatA4B4G4R4]] pname:formatA4B4G4R4 indicates that the
4578    implementation must: support using a elink:VkFormat of
4579    ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT with at least the following
4580    elink:VkFormatFeatureFlagBits:
4581  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4582  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4583  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4584
4585:refpage: VkPhysicalDevice4444FormatsFeaturesEXT
4586include::{chapters}/features.adoc[tag=features]
4587
4588include::{generated}/validity/structs/VkPhysicalDevice4444FormatsFeaturesEXT.adoc[]
4589
4590ifdef::VK_VERSION_1_3[]
4591[NOTE]
4592.Note
4593====
4594Although the formats defined by the `apiext:VK_EXT_4444_formats` extension
4595were promoted to Vulkan 1.3 as optional formats, the
4596slink:VkPhysicalDevice4444FormatsFeaturesEXT structure was not promoted to
4597Vulkan 1.3.
4598====
4599endif::VK_VERSION_1_3[]
4600--
4601endif::VK_EXT_4444_formats[]
4602
4603ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
4604[open,refpage='VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT',desc='Structure describing whether the mutable descriptor type is supported',type='structs',alias='VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE']
4605--
4606The sname:VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT structure is
4607defined as:
4608
4609include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.adoc[]
4610
4611ifdef::VK_VALVE_mutable_descriptor_type[]
4612or the equivalent
4613
4614include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.adoc[]
4615endif::VK_VALVE_mutable_descriptor_type[]
4616
4617This structure describes the following feature:
4618
4619  * pname:sType is the type of this structure.
4620  * pname:pNext is `NULL` or a pointer to a structure extending this
4621    structure.
4622  * [[features-mutableDescriptorType]] pname:mutableDescriptorType indicates
4623    that the implementation must: support using the elink:VkDescriptorType
4624    of ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT with at least the following
4625    descriptor types, where any combination of the types must: be supported:
4626  ** ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
4627  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
4628  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
4629  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
4630  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
4631  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
4632
4633  * Additionally, pname:mutableDescriptorType indicates that:
4634ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4635  ** Non-uniform descriptor indexing must: be supported if all descriptor
4636     types in a slink:VkMutableDescriptorTypeListEXT for
4637     ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT have the corresponding non-uniform
4638     indexing features enabled in
4639     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
4640  ** ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT with
4641     pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT relaxes
4642     the list of required descriptor types to the descriptor types which
4643     have the corresponding update-after-bind feature enabled in
4644     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
4645endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4646  ** Dynamically uniform descriptor indexing must: be supported if all
4647     descriptor types in a slink:VkMutableDescriptorTypeListEXT for
4648     ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT have the corresponding dynamic
4649     indexing features enabled.
4650  ** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT must: be
4651     supported.
4652  ** ename:VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT must: be supported.
4653
4654:refpage: VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
4655include::{chapters}/features.adoc[tag=features]
4656
4657include::{generated}/validity/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.adoc[]
4658--
4659endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
4660
4661ifdef::VK_EXT_depth_clip_control[]
4662[open,refpage='VkPhysicalDeviceDepthClipControlFeaturesEXT',desc='Structure describing additional depth clip control supported by an implementation',type='structs']
4663--
4664The sname:VkPhysicalDeviceDepthClipControlFeaturesEXT structure is defined
4665as:
4666
4667include::{generated}/api/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.adoc[]
4668
4669This structure describes the following feature:
4670
4671  * pname:sType is the type of this structure.
4672  * pname:pNext is `NULL` or a pointer to a structure extending this
4673    structure.
4674  * [[features-depthClipControl]] pname:depthClipControl indicates that the
4675    implementation supports setting
4676    slink:VkPipelineViewportDepthClipControlCreateInfoEXT::pname:negativeOneToOne
4677    to ename:VK_TRUE.
4678
4679:refpage: VkPhysicalDeviceDepthClipControlFeaturesEXT
4680include::{chapters}/features.adoc[tag=features]
4681
4682include::{generated}/validity/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.adoc[]
4683--
4684endif::VK_EXT_depth_clip_control[]
4685
4686ifdef::VK_KHR_workgroup_memory_explicit_layout[]
4687[open,refpage='VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',desc='Structure describing the workgroup storage explicit layout features that can be supported by an implementation',type='structs']
4688--
4689The sname:VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR structure
4690is defined as:
4691
4692include::{generated}/api/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.adoc[]
4693
4694This structure describes the following features:
4695
4696  * pname:sType is the type of this structure.
4697  * pname:pNext is `NULL` or a pointer to a structure extending this
4698    structure.
4699  * [[features-workgroupMemoryExplicitLayout]]
4700    pname:workgroupMemoryExplicitLayout indicates whether the implementation
4701    supports the SPIR-V code:WorkgroupMemoryExplicitLayoutKHR capability.
4702  * [[features-workgroupMemoryExplicitLayoutScalarBlockLayout]]
4703    pname:workgroupMemoryExplicitLayoutScalarBlockLayout indicates whether
4704    the implementation supports scalar alignment for laying out Workgroup
4705    Blocks.
4706  * [[features-workgroupMemoryExplicitLayout8BitAccess]]
4707    pname:workgroupMemoryExplicitLayout8BitAccess indicates whether objects
4708    in the code:Workgroup storage class with the code:Block decoration can:
4709    have 8-bit integer members.
4710    If this feature is not enabled, 8-bit integer members must: not be used
4711    in such objects.
4712    This also indicates whether shader modules can: declare the
4713    code:WorkgroupMemoryExplicitLayout8BitAccessKHR capability.
4714  * [[features-workgroupMemoryExplicitLayout16BitAccess]]
4715    pname:workgroupMemoryExplicitLayout16BitAccess indicates whether objects
4716    in the code:Workgroup storage class with the code:Block decoration can:
4717    have 16-bit integer and 16-bit floating-point members.
4718    If this feature is not enabled, 16-bit integer or 16-bit floating-point
4719    members must: not be used in such objects.
4720    This also indicates whether shader modules can: declare the
4721    code:WorkgroupMemoryExplicitLayout16BitAccessKHR capability.
4722
4723:refpage: VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
4724include::{chapters}/features.adoc[tag=features]
4725
4726include::{generated}/validity/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.adoc[]
4727--
4728endif::VK_KHR_workgroup_memory_explicit_layout[]
4729
4730ifdef::VK_VERSION_1_3,VK_KHR_synchronization2[]
4731[open,refpage='VkPhysicalDeviceSynchronization2Features',desc='Structure describing whether the implementation supports v2 synchronization commands',type='structs',alias='VkPhysicalDeviceSynchronization2FeaturesKHR']
4732--
4733The sname:VkPhysicalDeviceSynchronization2Features structure is defined as:
4734
4735include::{generated}/api/structs/VkPhysicalDeviceSynchronization2Features.adoc[]
4736
4737ifdef::VK_KHR_synchronization2[]
4738or the equivalent
4739
4740include::{generated}/api/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.adoc[]
4741endif::VK_KHR_synchronization2[]
4742
4743This structure describes the following feature:
4744
4745  * pname:sType is the type of this structure.
4746  * pname:pNext is `NULL` or a pointer to a structure extending this
4747    structure.
4748
4749// Must have preceding whitespace
4750ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4751ifndef::VK_VERSION_1_3[:anchor-prefix:]
4752// tag::VK_KHR_synchronization2-features[]
4753  * [[{anchor-prefix}features-synchronization2]] pname:synchronization2
4754    indicates whether the implementation supports the new set of
4755    synchronization commands introduced in `apiext:VK_KHR_synchronization2`.
4756// end::VK_KHR_synchronization2-features[]
4757
4758:refpage: VkPhysicalDeviceSynchronization2Features
4759include::{chapters}/features.adoc[tag=features]
4760
4761include::{generated}/validity/structs/VkPhysicalDeviceSynchronization2Features.adoc[]
4762--
4763endif::VK_VERSION_1_3,VK_KHR_synchronization2[]
4764
4765ifdef::VK_EXT_vertex_input_dynamic_state[]
4766[open,refpage='VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT',desc='Structure describing whether the dynamic vertex input state can be used',type='structs']
4767--
4768The sname:VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT structure is
4769defined as:
4770
4771include::{generated}/api/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.adoc[]
4772
4773This structure describes the following feature:
4774
4775  * pname:sType is the type of this structure.
4776  * pname:pNext is `NULL` or a pointer to a structure extending this
4777    structure.
4778  * [[features-vertexInputDynamicState]] pname:vertexInputDynamicState
4779    indicates that the implementation supports the following dynamic states:
4780  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
4781
4782:refpage: VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
4783include::{chapters}/features.adoc[tag=features]
4784
4785include::{generated}/validity/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.adoc[]
4786--
4787endif::VK_EXT_vertex_input_dynamic_state[]
4788
4789ifdef::VK_EXT_primitives_generated_query[]
4790[open,refpage='VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',desc='Structure describing support for primitives generated query',type='structs']
4791--
4792The sname:VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT structure is
4793defined as:
4794
4795include::{generated}/api/structs/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.adoc[]
4796
4797This structure describes the following features:
4798
4799  * pname:sType is the type of this structure.
4800  * pname:pNext is `NULL` or a pointer to a structure extending this
4801    structure.
4802  * [[features-primitivesGeneratedQuery]] pname:primitivesGeneratedQuery
4803    indicates whether the implementation supports the
4804    ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query type.
4805  * [[features-primitivesGeneratedQueryWithRasterizerDiscard]]
4806    pname:primitivesGeneratedQueryWithRasterizerDiscard indicates whether
4807    the implementation supports this query when
4808    <<primsrast-discard,rasterization discard>> is enabled.
4809  * [[features-primitivesGeneratedQueryWithNonZeroStreams]]
4810    pname:primitivesGeneratedQueryWithNonZeroStreams indicates whether the
4811    implementation supports this query with a non-zero index in
4812    flink:vkCmdBeginQueryIndexedEXT.
4813
4814:refpage: VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
4815include::{chapters}/features.adoc[tag=features]
4816
4817include::{generated}/validity/structs/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.adoc[]
4818--
4819endif::VK_EXT_primitives_generated_query[]
4820
4821ifdef::VK_KHR_fragment_shading_rate[]
4822[open,refpage='VkPhysicalDeviceFragmentShadingRateFeaturesKHR',desc='Structure indicating support for variable rate fragment shading',type='structs']
4823--
4824The sname:VkPhysicalDeviceFragmentShadingRateFeaturesKHR structure is
4825defined as:
4826
4827include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.adoc[]
4828
4829This structure describes the following features:
4830
4831  * pname:sType is the type of this structure.
4832  * pname:pNext is `NULL` or a pointer to a structure extending this
4833    structure.
4834  * [[features-pipelineFragmentShadingRate]]
4835    pname:pipelineFragmentShadingRate indicates that the implementation
4836    supports the <<primsrast-fragment-shading-rate-pipeline, pipeline
4837    fragment shading rate>>.
4838  * [[features-primitiveFragmentShadingRate]]
4839    pname:primitiveFragmentShadingRate indicates that the implementation
4840    supports the <<primsrast-fragment-shading-rate-primitive, primitive
4841    fragment shading rate>>.
4842  * [[features-attachmentFragmentShadingRate]]
4843    pname:attachmentFragmentShadingRate indicates that the implementation
4844    supports the <<primsrast-fragment-shading-rate-attachment, attachment
4845    fragment shading rate>>.
4846
4847:refpage: VkPhysicalDeviceFragmentShadingRateFeaturesKHR
4848include::{chapters}/features.adoc[tag=features]
4849
4850include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.adoc[]
4851--
4852endif::VK_KHR_fragment_shading_rate[]
4853
4854ifdef::VK_EXT_legacy_dithering[]
4855[open,refpage='VkPhysicalDeviceLegacyDitheringFeaturesEXT',desc='Structure describing support for legacy dithering',type='structs']
4856--
4857The sname:VkPhysicalDeviceLegacyDitheringFeaturesEXT structure is defined
4858as:
4859
4860include::{generated}/api/structs/VkPhysicalDeviceLegacyDitheringFeaturesEXT.adoc[]
4861
4862This structure describes the following feature:
4863
4864  * pname:sType is the type of this structure.
4865  * pname:pNext is `NULL` or a pointer to a structure extending this
4866    structure.
4867  * [[features-legacyDithering]] pname:legacyDithering indicates whether the
4868    implementation supports <<interfaces-legacy-dithering, Legacy
4869    Dithering>>.
4870
4871:refpage: VkPhysicalDeviceLegacyDitheringFeaturesEXT
4872include::{chapters}/features.adoc[tag=features]
4873
4874include::{generated}/validity/structs/VkPhysicalDeviceLegacyDitheringFeaturesEXT.adoc[]
4875--
4876endif::VK_EXT_legacy_dithering[]
4877
4878ifdef::VK_NV_fragment_shading_rate_enums[]
4879[open,refpage='VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV',desc='Structure indicating support for fragment shading rate enums',type='structs']
4880--
4881The sname:VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV structure is
4882defined as:
4883
4884include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.adoc[]
4885
4886This structure describes the following features:
4887
4888  * pname:sType is the type of this structure.
4889  * pname:pNext is `NULL` or a pointer to a structure extending this
4890    structure.
4891  * [[features-fragmentShadingRateEnums]] pname:fragmentShadingRateEnums
4892    indicates that the implementation supports specifying fragment shading
4893    rates using the ename:VkFragmentShadingRateNV enumerated type.
4894  * [[features-supersampleFragmentShadingRates]]
4895    pname:supersampleFragmentShadingRates indicates that the implementation
4896    supports fragment shading rate enum values indicating more than one
4897    invocation per fragment.
4898  * [[features-noInvocationFragmentShadingRates]]
4899    pname:noInvocationFragmentShadingRates indicates that the implementation
4900    supports a fragment shading rate enum value indicating that no fragment
4901    shaders should be invoked when that shading rate is used.
4902
4903:refpage: VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
4904include::{chapters}/features.adoc[tag=features]
4905
4906include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.adoc[]
4907--
4908endif::VK_NV_fragment_shading_rate_enums[]
4909
4910
4911ifdef::VK_NV_inherited_viewport_scissor[]
4912[open,refpage='VkPhysicalDeviceInheritedViewportScissorFeaturesNV',desc='Structure describing the viewport scissor inheritance behavior for an implementation',type='structs']
4913--
4914The sname:VkPhysicalDeviceInheritedViewportScissorFeaturesNV structure is
4915defined as:
4916
4917include::{generated}/api/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.adoc[]
4918
4919This structure describes the following feature:
4920
4921  * pname:sType is the type of this structure.
4922  * pname:pNext is `NULL` or a pointer to a structure extending this
4923    structure.
4924  * [[features-inheritedViewportScissor2D]] pname:inheritedViewportScissor2D
4925    indicates whether secondary command buffers can inherit most of the
4926    dynamic state affected by
4927ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
4928    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
4929    ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
4930endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
4931ifdef::VK_EXT_discard_rectangles[]
4932    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
4933endif::VK_EXT_discard_rectangles[]
4934    ename:VK_DYNAMIC_STATE_VIEWPORT or ename:VK_DYNAMIC_STATE_SCISSOR, from
4935    a primary command buffer.
4936
4937:refpage: VkPhysicalDeviceInheritedViewportScissorFeaturesNV
4938include::{chapters}/features.adoc[tag=features]
4939
4940include::{generated}/validity/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.adoc[]
4941--
4942endif::VK_NV_inherited_viewport_scissor[]
4943
4944ifdef::VK_EXT_pipeline_protected_access[]
4945[open,refpage='VkPhysicalDevicePipelineProtectedAccessFeaturesEXT',desc='Structure describing support for specifying protected access on individual pipelines',type='structs']
4946--
4947The sname:VkPhysicalDevicePipelineProtectedAccessFeaturesEXT structure is
4948defined as:
4949
4950include::{generated}/api/structs/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.adoc[]
4951
4952This structure describes the following feature:
4953
4954  * pname:sType is the type of this structure.
4955  * pname:pNext is `NULL` or a pointer to a structure extending this
4956    structure.
4957  * [[features-pipelineProtectedAccess]] pname:pipelineProtectedAccess
4958    indicates whether the implementation supports specifying protected
4959    access on individual pipelines.
4960
4961:refpage: VkPhysicalDevicePipelineProtectedAccessFeaturesEXT
4962include::{chapters}/features.adoc[tag=features]
4963
4964include::{generated}/validity/structs/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.adoc[]
4965--
4966endif::VK_EXT_pipeline_protected_access[]
4967
4968ifdef::VK_EXT_ycbcr_2plane_444_formats[]
4969[open,refpage='VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',desc='Structure describing whether the implementation supports additional 2-plane 444 {YCbCr} formats',type='structs']
4970--
4971The sname:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure is
4972defined as:
4973
4974include::{generated}/api/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.adoc[]
4975
4976This structure describes the following feature:
4977
4978  * pname:sType is the type of this structure.
4979  * pname:pNext is `NULL` or a pointer to a structure extending this
4980    structure.
4981  * [[features-ycbcr2plane444Formats]] pname:ycbcr2plane444Formats indicates
4982    that the implementation supports the following 2-plane 444 {YCbCr}
4983    formats:
4984  ** ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
4985  ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
4986  ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
4987  ** ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM
4988
4989:refpage: VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
4990include::{chapters}/features.adoc[tag=features]
4991
4992include::{generated}/validity/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.adoc[]
4993
4994ifdef::VK_VERSION_1_3[]
4995[NOTE]
4996.Note
4997====
4998Although the formats defined by the `apiext:VK_EXT_ycbcr_2plane_444_formats`
4999were promoted to Vulkan 1.3 as optional formats, the
5000slink:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure was not
5001promoted to Vulkan 1.3.
5002====
5003endif::VK_VERSION_1_3[]
5004--
5005endif::VK_EXT_ycbcr_2plane_444_formats[]
5006
5007ifdef::VK_EXT_color_write_enable[]
5008[open,refpage='VkPhysicalDeviceColorWriteEnableFeaturesEXT',desc='Structure describing whether writes to color attachments can be enabled and disabled dynamically',type='structs']
5009--
5010The sname:VkPhysicalDeviceColorWriteEnableFeaturesEXT structure is defined
5011as:
5012
5013include::{generated}/api/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.adoc[]
5014
5015This structure describes the following feature:
5016
5017  * pname:sType is the type of this structure.
5018  * pname:pNext is `NULL` or a pointer to a structure extending this
5019    structure.
5020  * [[features-colorWriteEnable]] pname:colorWriteEnable indicates that the
5021    implementation supports the dynamic state
5022    ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT.
5023
5024:refpage: VkPhysicalDeviceColorWriteEnableFeaturesEXT
5025include::{chapters}/features.adoc[tag=features]
5026
5027include::{generated}/validity/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.adoc[]
5028--
5029endif::VK_EXT_color_write_enable[]
5030
5031ifdef::VK_EXT_pipeline_properties[]
5032[open,refpage='VkPhysicalDevicePipelinePropertiesFeaturesEXT',desc='Structure describing what pipeline properties are supported',type='structs']
5033--
5034The sname:VkPhysicalDevicePipelinePropertiesFeaturesEXT structure is defined
5035as:
5036
5037include::{generated}/api/structs/VkPhysicalDevicePipelinePropertiesFeaturesEXT.adoc[]
5038
5039This structure describes the following feature:
5040
5041  * pname:sType is the type of this structure.
5042  * pname:pNext is `NULL` or a pointer to a structure extending this
5043    structure.
5044  * [[features-pipelinePropertiesIdentifier]]
5045    pname:pipelinePropertiesIdentifier indicates that the implementation
5046    supports querying a unique pipeline identifier.
5047
5048:refpage: VkPhysicalDevicePipelinePropertiesFeaturesEXT
5049include::{chapters}/features.adoc[tag=features]
5050
5051include::{generated}/validity/structs/VkPhysicalDevicePipelinePropertiesFeaturesEXT.adoc[]
5052--
5053endif::VK_EXT_pipeline_properties[]
5054
5055ifdef::VK_EXT_provoking_vertex[]
5056[open,refpage='VkPhysicalDeviceProvokingVertexFeaturesEXT',desc='Structure describing the provoking vertex features that can be supported by an implementation',type='structs']
5057--
5058The sname:VkPhysicalDeviceProvokingVertexFeaturesEXT structure is defined
5059as:
5060
5061include::{generated}/api/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.adoc[]
5062
5063This structure describes the following features:
5064
5065  * pname:sType is the type of this structure.
5066  * pname:pNext is `NULL` or a pointer to a structure extending this
5067    structure.
5068  * [[features-provokingVertexLast]] pname:provokingVertexLast indicates
5069    whether the implementation supports the
5070    ename:VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
5071    <<VkProvokingVertexModeEXT,provoking vertex mode>> for flat shading.
5072  * [[features-transformFeedbackPreservesProvokingVertex]]
5073    pname:transformFeedbackPreservesProvokingVertex indicates that the order
5074    of vertices within each primitive written by transform feedback will
5075    preserve the provoking vertex.
5076    This does not apply to triangle fan primitives when
5077    <<limits-transformFeedbackPreservesTriangleFanProvokingVertex,
5078    pname:transformFeedbackPreservesTriangleFanProvokingVertex>> is
5079    ename:VK_FALSE.
5080    pname:transformFeedbackPreservesProvokingVertex must: be ename:VK_FALSE
5081    when the `apiext:VK_EXT_transform_feedback` extension is not supported.
5082
5083:refpage: VkPhysicalDeviceProvokingVertexFeaturesEXT
5084include::{chapters}/features.adoc[tag=features]
5085
5086ifdef::VK_EXT_transform_feedback[]
5087When sname:VkPhysicalDeviceProvokingVertexFeaturesEXT is in the pname:pNext
5088chain of slink:VkDeviceCreateInfo but the <<features-transformFeedback,
5089pname:transformFeedback>> feature is not enabled, the value of
5090pname:transformFeedbackPreservesProvokingVertex is ignored.
5091endif::VK_EXT_transform_feedback[]
5092
5093include::{generated}/validity/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.adoc[]
5094--
5095endif::VK_EXT_provoking_vertex[]
5096
5097ifdef::VK_EXT_descriptor_buffer[]
5098[open,refpage='VkPhysicalDeviceDescriptorBufferFeaturesEXT',desc='Structure describing the descriptor buffer features that can be supported by an implementation',type='structs']
5099--
5100The sname:VkPhysicalDeviceDescriptorBufferFeaturesEXT structure is defined
5101as:
5102
5103include::{generated}/api/structs/VkPhysicalDeviceDescriptorBufferFeaturesEXT.adoc[]
5104
5105This structure describes the following feature:
5106
5107  * pname:sType is the type of this structure.
5108  * pname:pNext is `NULL` or a pointer to a structure extending this
5109    structure.
5110  * [[features-descriptorBuffer]] pname:descriptorBuffer indicates that the
5111    implementation supports putting shader-accessible descriptors directly
5112    in memory.
5113  * [[features-descriptorBufferCaptureReplay]]
5114    pname:descriptorBufferCaptureReplay indicates that the implementation
5115    supports capture and replay when using descriptor buffers.
5116    If this is ename:VK_TRUE, all resources created with
5117    ename:VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5118    ename:VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5119    ename:VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5120    ename:VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, or
5121    ename:VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
5122    must: be created before resources of the same types without those flags.
5123  * [[features-descriptorBufferImageLayoutIgnored]]
5124    pname:descriptorBufferImageLayoutIgnored indicates that the
5125    implementation will ignore pname:imageLayout in
5126    sname:VkDescriptorImageInfo when calling flink:vkGetDescriptorEXT.
5127  * [[features-descriptorBufferPushDescriptors]]
5128    pname:descriptorBufferPushDescriptors indicates that the implementation
5129    supports using push descriptors with descriptor buffers.
5130
5131:refpage: VkPhysicalDeviceDescriptorBufferFeaturesEXT
5132include::{chapters}/features.adoc[tag=features]
5133
5134include::{generated}/validity/structs/VkPhysicalDeviceDescriptorBufferFeaturesEXT.adoc[]
5135--
5136endif::VK_EXT_descriptor_buffer[]
5137
5138ifdef::VK_EXT_pageable_device_local_memory[]
5139[open,refpage='VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',desc='Structure describing whether the implementation supports pageable device-local memory',type='structs']
5140--
5141The sname:VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT structure is
5142defined as:
5143
5144include::{generated}/api/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.adoc[]
5145
5146This structure describes the following feature:
5147
5148  * pname:sType is the type of this structure.
5149  * pname:pNext is `NULL` or a pointer to a structure extending this
5150    structure.
5151  * [[features-pageableDeviceLocalMemory]] pname:pageableDeviceLocalMemory
5152    indicates that the implementation supports pageable device-local memory
5153    and may: transparently move device-local memory allocations to
5154    host-local memory to better share device-local memory with other
5155    applications.
5156
5157:refpage: VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
5158include::{chapters}/features.adoc[tag=features]
5159
5160include::{generated}/validity/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.adoc[]
5161--
5162endif::VK_EXT_pageable_device_local_memory[]
5163
5164ifdef::VK_EXT_multi_draw[]
5165[open,refpage='VkPhysicalDeviceMultiDrawFeaturesEXT',desc='Structure describing whether the implementation supports multi draw functionality',type='structs']
5166--
5167The sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure is defined as:
5168
5169include::{generated}/api/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.adoc[]
5170
5171This structure describes the following features:
5172
5173  * pname:sType is the type of this structure.
5174  * pname:pNext is `NULL` or a pointer to a structure extending this
5175    structure.
5176  * [[features-multiDraw]] pname:multiDraw indicates that the implementation
5177    supports flink:vkCmdDrawMultiEXT and flink:vkCmdDrawMultiIndexedEXT.
5178
5179:refpage: VkPhysicalDeviceMultiDrawFeaturesEXT
5180include::{chapters}/features.adoc[tag=features]
5181
5182include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.adoc[]
5183--
5184endif::VK_EXT_multi_draw[]
5185
5186ifdef::VK_NV_ray_tracing_motion_blur[]
5187[open,refpage='VkPhysicalDeviceRayTracingMotionBlurFeaturesNV',desc='Structure describing the ray tracing motion blur features that can be supported by an implementation',type='structs']
5188--
5189The sname:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV structure is
5190defined as:
5191
5192include::{generated}/api/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.adoc[]
5193
5194This structure describes the following features:
5195
5196  * pname:sType is the type of this structure.
5197  * pname:pNext is `NULL` or a pointer to a structure extending this
5198    structure.
5199  * [[features-rayTracingMotionBlur]] pname:rayTracingMotionBlur indicates
5200    whether the implementation supports the motion blur feature.
5201  * [[features-rayTracingMotionBlurPipelineTraceRaysIndirect]]
5202    pname:rayTracingMotionBlurPipelineTraceRaysIndirect indicates whether
5203    the implementation supports indirect ray tracing commands with the
5204    motion blur feature enabled.
5205
5206:refpage: VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
5207include::{chapters}/features.adoc[tag=features]
5208
5209include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.adoc[]
5210--
5211endif::VK_NV_ray_tracing_motion_blur[]
5212
5213ifdef::VK_EXT_opacity_micromap[]
5214[open,refpage='VkPhysicalDeviceOpacityMicromapFeaturesEXT',desc='Structure describing the ray tracing opacity micromap features that can be supported by an implementation',type='structs']
5215--
5216The sname:VkPhysicalDeviceOpacityMicromapFeaturesEXT structure is defined
5217as:
5218
5219include::{generated}/api/structs/VkPhysicalDeviceOpacityMicromapFeaturesEXT.adoc[]
5220
5221This structure describes the following feature:
5222
5223  * pname:sType is the type of this structure.
5224  * pname:pNext is `NULL` or a pointer to a structure extending this
5225    structure.
5226  * [[features-micromap]] pname:micromap indicates whether the
5227    implementation supports the micromap array feature.
5228  * [[features-micromapCaptureReplay]] pname:micromapCaptureReplay indicates
5229    whether the implementation supports capture and replay of addresses for
5230    micromap arrays.
5231  * [[features-micromapHostCommands]] pname:micromapHostCommands indicates
5232    whether the implementation supports host side micromap array commands.
5233
5234:refpage: VkPhysicalDeviceOpacityMicromapFeaturesEXT
5235include::{chapters}/features.adoc[tag=features]
5236
5237include::{generated}/validity/structs/VkPhysicalDeviceOpacityMicromapFeaturesEXT.adoc[]
5238--
5239endif::VK_EXT_opacity_micromap[]
5240
5241ifdef::VK_HUAWEI_subpass_shading[]
5242[open,refpage='VkPhysicalDeviceSubpassShadingFeaturesHUAWEI',desc='Structure describing whether subpass shading is enabled',type='structs']
5243--
5244The sname:VkPhysicalDeviceSubpassShadingFeaturesHUAWEI structure is defined
5245as:
5246
5247include::{generated}/api/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.adoc[]
5248
5249This structure describes the following feature:
5250
5251  * pname:sType is the type of this structure.
5252  * pname:pNext is `NULL` or a pointer to a structure extending this
5253    structure.
5254  * [[features-subpassShading]] pname:subpassShading specifies whether
5255    subpass shading is supported.
5256
5257:refpage: VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
5258include::{chapters}/features.adoc[tag=features]
5259
5260include::{generated}/validity/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.adoc[]
5261--
5262endif::VK_HUAWEI_subpass_shading[]
5263
5264ifdef::VK_NV_external_memory_rdma[]
5265[open,refpage='VkPhysicalDeviceExternalMemoryRDMAFeaturesNV',desc='Structure describing the external memory RDMA features supported by the implementation',type='structs']
5266--
5267The sname:VkPhysicalDeviceExternalMemoryRDMAFeaturesNV structure is defined
5268as:
5269
5270include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.adoc[]
5271
5272This structure describes the following feature:
5273
5274  * pname:sType is the type of this structure.
5275  * pname:pNext is `NULL` or a pointer to a structure extending this
5276    structure.
5277  * [[features-externalMemoryRDMA]] pname:externalMemoryRDMA indicates
5278    whether the implementation has support for the
5279    ename:VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV memory property and the
5280    ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV external memory
5281    handle type.
5282
5283:refpage: VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
5284include::{chapters}/features.adoc[tag=features]
5285
5286include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.adoc[]
5287--
5288endif::VK_NV_external_memory_rdma[]
5289
5290ifdef::VK_KHR_present_id[]
5291[open,refpage='VkPhysicalDevicePresentIdFeaturesKHR',desc='Structure indicating support for present id',type='structs']
5292--
5293The sname:VkPhysicalDevicePresentIdFeaturesKHR structure is defined as:
5294
5295include::{generated}/api/structs/VkPhysicalDevicePresentIdFeaturesKHR.adoc[]
5296
5297This structure describes the following feature:
5298
5299  * pname:sType is the type of this structure.
5300  * pname:pNext is `NULL` or a pointer to a structure extending this
5301    structure.
5302  * [[features-presentId]] pname:presentId indicates that the implementation
5303    supports specifying present ID values in the sname:VkPresentIdKHR
5304    extension to the sname:VkPresentInfoKHR struct.
5305
5306:refpage: VkPhysicalDevicePresentIdFeaturesKHR
5307include::{chapters}/features.adoc[tag=features]
5308
5309include::{generated}/validity/structs/VkPhysicalDevicePresentIdFeaturesKHR.adoc[]
5310--
5311endif::VK_KHR_present_id[]
5312
5313ifdef::VK_KHR_present_wait[]
5314[open,refpage='VkPhysicalDevicePresentWaitFeaturesKHR',desc='Structure indicating support for present wait',type='structs']
5315--
5316The sname:VkPhysicalDevicePresentWaitFeaturesKHR structure is defined as:
5317
5318include::{generated}/api/structs/VkPhysicalDevicePresentWaitFeaturesKHR.adoc[]
5319
5320This structure describes the following feature:
5321
5322  * pname:sType is the type of this structure.
5323  * pname:pNext is `NULL` or a pointer to a structure extending this
5324    structure.
5325  * [[features-presentWait]] pname:presentWait indicates that the
5326    implementation supports fname:vkWaitForPresentKHR.
5327
5328:refpage: VkPhysicalDevicePresentWaitFeaturesKHR
5329include::{chapters}/features.adoc[tag=features]
5330
5331include::{generated}/validity/structs/VkPhysicalDevicePresentWaitFeaturesKHR.adoc[]
5332--
5333endif::VK_KHR_present_wait[]
5334
5335ifdef::VK_NV_present_barrier[]
5336[open,refpage='VkPhysicalDevicePresentBarrierFeaturesNV',desc='Structure indicating support for VK_NV_present_barrier extension',type='structs']
5337--
5338The sname:VkPhysicalDevicePresentBarrierFeaturesNV structure is defined as:
5339
5340include::{generated}/api/structs/VkPhysicalDevicePresentBarrierFeaturesNV.adoc[]
5341
5342This structure describes the following feature:
5343
5344  * pname:sType is the type of this structure.
5345  * pname:pNext is `NULL` or a pointer to a structure extending this
5346    structure.
5347  * [[features-presentBarrier]] pname:presentBarrier indicates that the
5348    implementation supports the present barrier feature.
5349
5350:refpage: VkPhysicalDevicePresentBarrierFeaturesNV
5351include::{chapters}/features.adoc[tag=features]
5352
5353include::{generated}/validity/structs/VkPhysicalDevicePresentBarrierFeaturesNV.adoc[]
5354--
5355endif::VK_NV_present_barrier[]
5356
5357ifdef::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
5358[open,refpage='VkPhysicalDeviceShaderIntegerDotProductFeatures',desc='Structure describing integer dot product features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR']
5359--
5360The sname:VkPhysicalDeviceShaderIntegerDotProductFeatures structure is
5361defined as:
5362
5363include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeatures.adoc[]
5364
5365ifdef::VK_KHR_shader_integer_dot_product[]
5366or the equivalent
5367
5368include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.adoc[]
5369endif::VK_KHR_shader_integer_dot_product[]
5370
5371This structure describes the following feature:
5372
5373  * pname:sType is the type of this structure.
5374  * pname:pNext is `NULL` or a pointer to a structure extending this
5375    structure.
5376
5377// Must have preceding whitespace
5378ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5379ifndef::VK_VERSION_1_3[:anchor-prefix:]
5380// tag::VK_KHR_shader_integer_dot_product-features[]
5381  * [[{anchor-prefix}features-shaderIntegerDotProduct]]
5382    pname:shaderIntegerDotProduct specifies whether shader modules can:
5383    declare the code:DotProductInputAllKHR, code:DotProductInput4x8BitKHR,
5384    code:DotProductInput4x8BitPackedKHR and code:DotProductKHR capabilities.
5385// end::VK_KHR_shader_integer_dot_product-features[]
5386
5387:refpage: VkPhysicalDeviceShaderIntegerDotProductFeatures
5388include::{chapters}/features.adoc[tag=features]
5389
5390include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerDotProductFeatures.adoc[]
5391--
5392endif::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
5393
5394ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[]
5395[open,refpage='VkPhysicalDeviceMaintenance4Features',desc='Structure describing whether the implementation supports maintenance4 functionality',type='structs',alias='VkPhysicalDeviceMaintenance4FeaturesKHR']
5396--
5397The sname:VkPhysicalDeviceMaintenance4Features structure is defined as:
5398
5399include::{generated}/api/structs/VkPhysicalDeviceMaintenance4Features.adoc[]
5400
5401ifdef::VK_KHR_maintenance4[]
5402or the equivalent
5403
5404include::{generated}/api/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.adoc[]
5405endif::VK_KHR_maintenance4[]
5406
5407This structure describes the following feature:
5408
5409  * pname:sType is the type of this structure.
5410  * pname:pNext is `NULL` or a pointer to a structure extending this
5411    structure.
5412
5413// Must have preceding whitespace
5414ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5415ifndef::VK_VERSION_1_3[:anchor-prefix:]
5416// tag::VK_KHR_maintenance4-features[]
5417  * [[{anchor-prefix}features-maintenance4]] pname:maintenance4 indicates
5418    that the implementation supports the following:
5419  ** The application may: destroy a slink:VkPipelineLayout object
5420     immediately after using it to create another object.
5421  ** code:LocalSizeId can: be used as an alternative to code:LocalSize to
5422     specify the local workgroup size with specialization constants.
5423  ** Images created with identical creation parameters will always have the
5424     same alignment requirements.
5425  ** The size memory requirement of a buffer or image is never greater than
5426     that of another buffer or image created with a greater or equal size.
5427  ** Push constants do not have to be initialized before they are
5428     dynamically accessed.
5429  ** The interface matching rules allow a larger output vector to match with
5430     a smaller input vector, with additional values being discarded.
5431// end::VK_KHR_maintenance4-features[]
5432
5433:refpage: VkPhysicalDeviceMaintenance4Features
5434include::{chapters}/features.adoc[tag=features]
5435
5436include::{generated}/validity/structs/VkPhysicalDeviceMaintenance4Features.adoc[]
5437--
5438endif::VK_VERSION_1_3,VK_KHR_maintenance4[]
5439
5440ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
5441[open,refpage='VkPhysicalDeviceDynamicRenderingFeatures',desc='Structure indicating support for dynamic render pass instances',type='structs',alias='VkPhysicalDeviceDynamicRenderingFeaturesKHR']
5442--
5443The sname:VkPhysicalDeviceDynamicRenderingFeatures structure is defined as:
5444
5445include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeatures.adoc[]
5446
5447ifdef::VK_KHR_dynamic_rendering[]
5448or the equivalent
5449
5450include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.adoc[]
5451endif::VK_KHR_dynamic_rendering[]
5452
5453This structure describes the following feature:
5454
5455  * pname:sType is the type of this structure.
5456  * pname:pNext is `NULL` or a pointer to a structure extending this
5457    structure.
5458
5459// Must have preceding whitespace
5460ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5461ifndef::VK_VERSION_1_3[:anchor-prefix:]
5462// tag::VK_KHR_dynamic_rendering-features[]
5463  * [[{anchor-prefix}features-dynamicRendering]] pname:dynamicRendering
5464    specifies that the implementation supports dynamic render pass instances
5465    using the flink:vkCmdBeginRendering command.
5466// end::VK_KHR_dynamic_rendering-features[]
5467
5468:refpage: VkPhysicalDeviceDynamicRenderingFeatures
5469include::{chapters}/features.adoc[tag=features]
5470
5471include::{generated}/validity/structs/VkPhysicalDeviceDynamicRenderingFeatures.adoc[]
5472--
5473endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
5474
5475ifdef::VK_EXT_rgba10x6_formats[]
5476[open,refpage='VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT',desc='Structure describing whether rendering to VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 formats can be supported by an implementation',type='structs']
5477--
5478The sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT structure is defined
5479as:
5480
5481include::{generated}/api/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.adoc[]
5482
5483This structure describes the following feature:
5484
5485  * pname:sType is the type of this structure.
5486  * pname:pNext is `NULL` or a pointer to a structure extending this
5487    structure.
5488  * [[features-formatRgba10x6WithoutYCbCrSampler]]
5489    pname:formatRgba10x6WithoutYCbCrSampler indicates that
5490    ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 can: be used with a
5491    sname:VkImageView with pname:subresourceRange.aspectMask equal to
5492    ename:VK_IMAGE_ASPECT_COLOR_BIT without a <<samplers-YCbCr-conversion,
5493    sampler {YCbCr} conversion>> enabled.
5494
5495:refpage: VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
5496include::{chapters}/features.adoc[tag=features]
5497
5498include::{generated}/validity/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.adoc[]
5499--
5500endif::VK_EXT_rgba10x6_formats[]
5501
5502ifdef::VK_EXT_pipeline_robustness[]
5503[open,refpage='VkPhysicalDevicePipelineRobustnessFeaturesEXT',desc='Structure describing whether an implementation supports robustness requests on a per-pipeline stage granularity',type='structs']
5504--
5505The sname:VkPhysicalDevicePipelineRobustnessFeaturesEXT structure is defined
5506as:
5507
5508include::{generated}/api/structs/VkPhysicalDevicePipelineRobustnessFeaturesEXT.adoc[]
5509
5510This structure describes the following feature:
5511
5512  * pname:sType is the type of this structure.
5513  * pname:pNext is `NULL` or a pointer to a structure extending this
5514    structure.
5515  * [[features-pipelineRobustness]] pname:pipelineRobustness indicates that
5516    robustness can: be requested on a per-pipeline-stage granularity.
5517
5518[NOTE]
5519.Note
5520====
5521Enabling <<features-pipelineRobustness, pname:pipelineRobustness>> may, on
5522some platforms, incur a minor performance cost when
5523<<features-robustBufferAccess, pname:robustBufferAccess>> is disabled, even
5524for pipelines which do not make use of any robustness features.
5525If robustness is not needed, <<features-pipelineRobustness,
5526pname:pipelineRobustness>> should not be enabled by an application.
5527====
5528
5529:refpage: VkPhysicalDevicePipelineRobustnessFeaturesEXT
5530include::{chapters}/features.adoc[tag=features]
5531
5532include::{generated}/validity/structs/VkPhysicalDevicePipelineRobustnessFeaturesEXT.adoc[]
5533--
5534endif::VK_EXT_pipeline_robustness[]
5535
5536ifdef::VK_EXT_image_view_min_lod[]
5537[open,refpage='VkPhysicalDeviceImageViewMinLodFeaturesEXT',desc='Structure describing whether clamping the min lod of a image view is supported by the implementation',type='structs']
5538--
5539The sname:VkPhysicalDeviceImageViewMinLodFeaturesEXT structure is defined
5540as:
5541
5542include::{generated}/api/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.adoc[]
5543
5544This structure describes the following feature:
5545
5546  * pname:sType is the type of this structure.
5547  * pname:pNext is `NULL` or a pointer to a structure extending this
5548    structure.
5549  * [[features-minLod]] pname:minLod indicates whether the implementation
5550    supports clamping the minimum LOD value during
5551    <<textures-image-level-selection,Image Level(s) Selection>>,
5552    <<textures-gather,Texel Gathering>> and
5553    <<textures-integer-coordinate-operations,Integer Texel Coordinate
5554    Operations>> with a given slink:VkImageView by
5555    slink:VkImageViewMinLodCreateInfoEXT::pname:minLod.
5556
5557:refpage: VkPhysicalDeviceImageViewMinLodFeaturesEXT
5558include::{chapters}/features.adoc[tag=features]
5559
5560include::{generated}/validity/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.adoc[]
5561--
5562endif::VK_EXT_image_view_min_lod[]
5563
5564ifdef::VK_EXT_rasterization_order_attachment_access[]
5565[open,refpage='VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',desc='Structure describing whether rasterization order attachment access can be supported by an implementation',type='structs']
5566--
5567The sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
5568structure is defined as:
5569
5570include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.adoc[]
5571
5572ifdef::VK_ARM_rasterization_order_attachment_access[]
5573or the equivalent
5574
5575include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.adoc[]
5576endif::VK_ARM_rasterization_order_attachment_access[]
5577
5578This structure describes the following features:
5579
5580  * pname:sType is the type of this structure.
5581  * pname:pNext is `NULL` or a pointer to a structure extending this
5582    structure.
5583  * [[features-rasterizationOrderColorAttachmentAccess]]
5584    pname:rasterizationOrderColorAttachmentAccess indicates that
5585    rasterization order access to color and input attachments is supported
5586    by the implementation.
5587  * [[features-rasterizationOrderDepthAttachmentAccess]]
5588    pname:rasterizationOrderDepthAttachmentAccess indicates that
5589    rasterization order access to the depth aspect of depth/stencil and
5590    input attachments is supported by the implementation.
5591  * [[features-rasterizationOrderStencilAttachmentAccess]]
5592    pname:rasterizationOrderStencilAttachmentAccess indicates that
5593    rasterization order access to the stencil aspect of depth/stencil and
5594    input attachments is supported by the implementation.
5595
5596:refpage: VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
5597include::{chapters}/features.adoc[tag=features]
5598
5599include::{generated}/validity/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.adoc[]
5600--
5601endif::VK_EXT_rasterization_order_attachment_access[]
5602
5603ifdef::VK_EXT_subpass_merge_feedback[]
5604[open,refpage='VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT',desc='Structure describing whether subpass merging feedback can be supported by the implementation',type='structs']
5605--
5606The sname:VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT structure is
5607defined as:
5608
5609include::{generated}/api/structs/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.adoc[]
5610
5611This structure describes the following feature:
5612
5613  * pname:sType is the type of this structure.
5614  * pname:pNext is `NULL` or a pointer to a structure extending this
5615    structure.
5616  * [[features-subpassMergeFeedback]] pname:subpassMergeFeedback indicates
5617    whether the implementation supports feedback of subpass merging.
5618
5619:refpage: VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
5620include::{chapters}/features.adoc[tag=features]
5621
5622include::{generated}/validity/structs/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.adoc[]
5623--
5624endif::VK_EXT_subpass_merge_feedback[]
5625
5626ifdef::VK_NV_linear_color_attachment[]
5627[open,refpage='VkPhysicalDeviceLinearColorAttachmentFeaturesNV',desc='Structure describing whether <<glossary-linear-color-attachment, Linear Color Attachment>> rendering is supported by the implementation',type='structs']
5628--
5629The sname:VkPhysicalDeviceLinearColorAttachmentFeaturesNV structure is
5630defined as:
5631
5632include::{generated}/api/structs/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.adoc[]
5633
5634This structure describes the following feature:
5635
5636  * pname:sType is the type of this structure.
5637  * pname:pNext is `NULL` or a pointer to a structure extending this
5638    structure.
5639  * [[features-linearColorAttachment]] pname:linearColorAttachment indicates
5640    whether the implementation supports renderable
5641    <<glossary-linear-color-attachment, Linear Color Attachment>>
5642
5643:refpage: VkPhysicalDeviceLinearColorAttachmentFeaturesNV
5644include::{chapters}/features.adoc[tag=features]
5645
5646include::{generated}/validity/structs/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.adoc[]
5647--
5648endif::VK_NV_linear_color_attachment[]
5649ifdef::VK_EXT_attachment_feedback_loop_layout[]
5650
5651[open,refpage='VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT',desc='Structure indicating support for a render feedback loop image layout',type='structs']
5652--
5653The sname:VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT structure
5654is defined as:
5655
5656include::{generated}/api/structs/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.adoc[]
5657
5658This structure describes the following feature:
5659
5660  * pname:sType is the type of this structure.
5661  * pname:pNext is `NULL` or a pointer to a structure extending this
5662    structure.
5663  * [[features-attachmentFeedbackLoopLayout]]
5664    pname:attachmentFeedbackLoopLayout indicates whether the implementation
5665    supports using
5666    ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout
5667    for images created with
5668    ename:VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT.
5669
5670include::{generated}/validity/structs/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.adoc[]
5671--
5672
5673endif::VK_EXT_attachment_feedback_loop_layout[]
5674
5675ifdef::VK_EXT_graphics_pipeline_library[]
5676[open,refpage='VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',desc='Structure describing support for graphics pipeline libraries',type='structs']
5677--
5678The sname:VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT structure is
5679defined as:
5680
5681include::{generated}/api/structs/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.adoc[]
5682
5683This structure describes the following feature:
5684
5685  * pname:sType is the type of this structure.
5686  * pname:pNext is `NULL` or a pointer to a structure extending this
5687    structure.
5688  * [[features-graphicsPipelineLibrary]] pname:graphicsPipelineLibrary
5689    indicates that the implementation supports <<pipelines-library, graphics
5690    pipeline libraries>>.
5691
5692:refpage: VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
5693include::{chapters}/features.adoc[tag=features]
5694
5695include::{generated}/validity/structs/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.adoc[]
5696--
5697endif::VK_EXT_graphics_pipeline_library[]
5698
5699ifdef::VK_EXT_multisampled_render_to_single_sampled[]
5700[open,refpage='VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT',desc='Structure describing whether multisampled rendering to single-sampled attachments is supported',type='structs']
5701--
5702The sname:VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
5703structure is defined as:
5704
5705include::{generated}/api/structs/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.adoc[]
5706
5707This structure describes the following features:
5708
5709  * pname:sType is the type of this structure.
5710  * pname:pNext is `NULL` or a pointer to a structure extending this
5711    structure.
5712  * [[features-multisampledRenderToSingleSampled]]
5713    pname:multisampledRenderToSingleSampled indicates that the
5714    implementation supports multisampled rendering to single-sampled render
5715    pass attachments.
5716
5717:refpage: VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
5718include::{chapters}/features.adoc[tag=features]
5719
5720include::{generated}/validity/structs/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.adoc[]
5721--
5722endif::VK_EXT_multisampled_render_to_single_sampled[]
5723
5724ifdef::VK_EXT_image_2d_view_of_3d[]
5725[open,refpage='VkPhysicalDeviceImage2DViewOf3DFeaturesEXT',desc='Structure describing whether single-slice 2D views of 3D images can be used in image descriptors',type='structs']
5726--
5727The sname:VkPhysicalDeviceImage2DViewOf3DFeaturesEXT structure is defined
5728as:
5729
5730include::{generated}/api/structs/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.adoc[]
5731
5732This structure describes the following features:
5733
5734  * pname:sType is the type of this structure.
5735  * pname:pNext is `NULL` or a pointer to a structure extending this
5736    structure.
5737  * [[features-image2DViewOf3D]] pname:image2DViewOf3D indicates that the
5738    implementation supports using a 2D view of a 3D image in a descriptor of
5739    type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE if the image is created
5740    using ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT.
5741  * [[features-sampler2DViewOf3D]] pname:sampler2DViewOf3D indicates that
5742    the implementation supports using a 2D view of a 3D image in a
5743    descriptor of type ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
5744    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER if the image is created
5745    using ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT.
5746
5747:refpage: VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
5748include::{chapters}/features.adoc[tag=features]
5749
5750
5751include::{generated}/validity/structs/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.adoc[]
5752--
5753endif::VK_EXT_image_2d_view_of_3d[]
5754
5755ifdef::VK_EXT_image_compression_control[]
5756[open,refpage='VkPhysicalDeviceImageCompressionControlFeaturesEXT',desc='Structure describing whether image compression controls can be supported by an implementation',type='structs']
5757--
5758The sname:VkPhysicalDeviceImageCompressionControlFeaturesEXT structure is
5759defined as:
5760
5761include::{generated}/api/structs/VkPhysicalDeviceImageCompressionControlFeaturesEXT.adoc[]
5762
5763This structure describes the following feature:
5764
5765  * pname:sType is the type of this structure.
5766  * pname:pNext is `NULL` or a pointer to a structure extending this
5767    structure.
5768  * [[features-imageCompressionControl]] pname:imageCompressionControl
5769    indicates that the implementation supports providing controls for image
5770    compression at image creation time.
5771
5772:refpage: VkPhysicalDeviceImageCompressionControlFeaturesEXT
5773include::{chapters}/features.adoc[tag=features]
5774
5775include::{generated}/validity/structs/VkPhysicalDeviceImageCompressionControlFeaturesEXT.adoc[]
5776--
5777
5778ifdef::VK_EXT_image_compression_control_swapchain[]
5779[open,refpage='VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',desc='Structure describing whether per-swapchain image compression controls can be supported by an implementation',type='structs']
5780--
5781The sname:VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
5782structure is defined as:
5783
5784include::{generated}/api/structs/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.adoc[]
5785
5786This structure describes the following feature:
5787
5788  * pname:sType is the type of this structure.
5789  * pname:pNext is `NULL` or a pointer to a structure extending this
5790    structure.
5791  * [[features-imageCompressionControlSwapchain]]
5792    pname:imageCompressionControlSwapchain indicates that the implementation
5793    supports controlling image controls per swapchain and querying image
5794    compression properties per surface.
5795
5796:refpage: VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
5797include::{chapters}/features.adoc[tag=features]
5798
5799include::{generated}/validity/structs/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.adoc[]
5800--
5801endif::VK_EXT_image_compression_control_swapchain[]
5802
5803endif::VK_EXT_image_compression_control[]
5804
5805ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
5806[open,refpage='VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',desc='Structure describing whether early and late fragment tests can be supported by an implementation',type='structs']
5807--
5808The sname:VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
5809structure is defined as:
5810
5811include::{generated}/api/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.adoc[]
5812
5813This structure describes the following feature:
5814
5815  * pname:sType is the type of this structure.
5816  * pname:pNext is `NULL` or a pointer to a structure extending this
5817    structure.
5818  * [[features-shaderEarlyAndLateFragmentTests]]
5819    pname:shaderEarlyAndLateFragmentTests indicates whether the
5820    implementation supports the code:EarlyAndLateFragmentTestsAMD
5821    code:Execution code:Mode.
5822
5823:refpage: VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
5824include::{chapters}/features.adoc[tag=features]
5825
5826include::{generated}/validity/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.adoc[]
5827--
5828endif::VK_AMD_shader_early_and_late_fragment_tests[]
5829
5830ifdef::VK_EXT_non_seamless_cube_map[]
5831[open,refpage='VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT',desc='Structure describing features to disable seamless cube maps',type='structs']
5832--
5833The sname:VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT structure is defined
5834as:
5835
5836include::{generated}/api/structs/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.adoc[]
5837
5838This structure describes the following feature:
5839
5840  * pname:sType is the type of this structure.
5841  * pname:pNext is `NULL` or a pointer to a structure extending this
5842    structure.
5843  * [[features-nonSeamlessCubeMap]] pname:nonSeamlessCubeMap indicates that
5844    the implementation supports
5845    ename:VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT.
5846
5847:refpage: VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
5848include::{chapters}/features.adoc[tag=features]
5849
5850include::{generated}/validity/structs/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.adoc[]
5851--
5852endif::VK_EXT_non_seamless_cube_map[]
5853
5854ifdef::VK_EXT_shader_module_identifier[]
5855[open,refpage='VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT',desc='Structure describing whether querying and providing an identifier of a shader module is supported by the implementation',type='structs']
5856--
5857The sname:VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT structure is
5858defined as:
5859
5860include::{generated}/api/structs/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.adoc[]
5861
5862This structure describes the following feature:
5863
5864  * pname:sType is the type of this structure.
5865  * pname:pNext is `NULL` or a pointer to a structure extending this
5866    structure.
5867  * [[features-shaderModuleIdentifier]] pname:shaderModuleIdentifier
5868    indicates whether the implementation supports querying an identifier of
5869    a slink:VkShaderModule or slink:VkShaderModuleCreateInfo structure, and
5870    creating pipelines from identifiers only.
5871
5872:refpage: VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
5873include::{chapters}/features.adoc[tag=features]
5874
5875include::{generated}/validity/structs/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.adoc[]
5876--
5877endif::VK_EXT_shader_module_identifier[]
5878
5879ifdef::VK_QCOM_tile_properties[]
5880[open,refpage='VkPhysicalDeviceTilePropertiesFeaturesQCOM',desc='Structure describing tile properties features that can be supported by an implementation',type='structs']
5881--
5882The sname:VkPhysicalDeviceTilePropertiesFeaturesQCOM structure is defined
5883as:
5884
5885include::{generated}/api/structs/VkPhysicalDeviceTilePropertiesFeaturesQCOM.adoc[]
5886
5887This structure describes the following features:
5888
5889  * pname:sType is the type of this structure.
5890  * pname:pNext is `NULL` or a pointer to a structure extending this
5891    structure.
5892  * [[features-tileProperties]] pname:tileProperties indicates that the
5893    implementation supports queries for returning tile properties.
5894
5895:refpage: VkPhysicalDeviceTilePropertiesFeaturesQCOM
5896include::{chapters}/features.adoc[tag=features]
5897
5898include::{generated}/validity/structs/VkPhysicalDeviceTilePropertiesFeaturesQCOM.adoc[]
5899--
5900endif::VK_QCOM_tile_properties[]
5901
5902ifdef::VK_QCOM_image_processing[]
5903[open,refpage='VkPhysicalDeviceImageProcessingFeaturesQCOM',desc='Structure describing image processing features that can be supported by an implementation',type='structs']
5904--
5905The sname:VkPhysicalDeviceImageProcessingFeaturesQCOM structure is defined
5906as:
5907
5908include::{generated}/api/structs/VkPhysicalDeviceImageProcessingFeaturesQCOM.adoc[]
5909
5910This structure describes the following features:
5911
5912  * pname:sType is the type of this structure.
5913  * pname:pNext is `NULL` or a pointer to a structure extending this
5914    structure.
5915  * [[features-textureSampleWeighted]] pname:textureSampleWeighted indicates
5916    that the implementation supports shader modules that declare the
5917    pname:TextureSampleWeightedQCOM capability.
5918  * [[features-textureBoxFilter]] pname:textureBoxFilter indicates that the
5919    implementation supports shader modules that declare the
5920    pname:TextureBoxFilterQCOM capability.
5921  * [[features-textureBlockMatch]] pname:textureBlockMatch indicates that
5922    the implementation supports shader modules that declare the
5923    pname:TextureBlockMatchQCOM capability.
5924
5925:refpage: VkPhysicalDeviceImageProcessingFeaturesQCOM
5926include::{chapters}/features.adoc[tag=features]
5927
5928include::{generated}/validity/structs/VkPhysicalDeviceImageProcessingFeaturesQCOM.adoc[]
5929--
5930endif::VK_QCOM_image_processing[]
5931
5932ifdef::VK_EXT_depth_clamp_zero_one[]
5933[open,refpage='VkPhysicalDeviceDepthClampZeroOneFeaturesEXT',desc='Structure describing feature to control zero to one depth clamping',type='structs']
5934--
5935The sname:VkPhysicalDeviceDepthClampZeroOneFeaturesEXT structure is defined
5936as:
5937
5938include::{generated}/api/structs/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.adoc[]
5939
5940This structure describes the following feature:
5941
5942  * pname:sType is the type of this structure.
5943  * pname:pNext is `NULL` or a pointer to a structure extending this
5944    structure.
5945
5946  * [[features-depthClampZeroOne]] pname:depthClampZeroOne indicates that
5947    the implementation supports clamping the depth to a range of `0` to `1`.
5948
5949:refpage: VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
5950include::{chapters}/features.adoc[tag=features]
5951
5952include::{generated}/validity/structs/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.adoc[]
5953--
5954endif::VK_EXT_depth_clamp_zero_one[]
5955
5956ifdef::VK_EXT_device_address_binding_report[]
5957[open,refpage='VkPhysicalDeviceAddressBindingReportFeaturesEXT',desc='Structure describing the virtual allocation reporting feature supported by an implementation',type='structs']
5958--
5959The sname:VkPhysicalDeviceAddressBindingReportFeaturesEXT structure is
5960defined as:
5961
5962include::{generated}/api/structs/VkPhysicalDeviceAddressBindingReportFeaturesEXT.adoc[]
5963
5964This structure describes the following feature:
5965
5966  * pname:sType is the type of this structure.
5967  * pname:pNext is `NULL` or a pointer to a structure extending this
5968    structure.
5969  * [[features-reportAddressBinding]] pname:reportAddressBinding indicates
5970    whether this implementation supports reporting the binding of GPU
5971    virtual address ranges to Vulkan objects.
5972
5973:refpage: VkPhysicalDeviceAddressBindingReportFeaturesEXT
5974include::{chapters}/features.adoc[tag=features]
5975
5976include::{generated}/validity/structs/VkPhysicalDeviceAddressBindingReportFeaturesEXT.adoc[]
5977--
5978endif::VK_EXT_device_address_binding_report[]
5979
5980ifdef::VK_NV_optical_flow[]
5981[open,refpage='VkPhysicalDeviceOpticalFlowFeaturesNV',desc='Structure describing the optical flow features supported by the implementation',type='structs']
5982--
5983The sname:VkPhysicalDeviceOpticalFlowFeaturesNV structure is defined as:
5984
5985include::{generated}/api/structs/VkPhysicalDeviceOpticalFlowFeaturesNV.adoc[]
5986
5987This structure describes the following feature:
5988
5989  * pname:sType is the type of this structure.
5990  * pname:pNext is `NULL` or a pointer to a structure extending this
5991    structure.
5992  * [[features-opticalFlow]] pname:opticalFlow indicates whether the
5993    implementation supports optical flow.
5994
5995:refpage: VkPhysicalDeviceOpticalFlowFeaturesNV
5996include::{chapters}/features.adoc[tag=features]
5997
5998include::{generated}/validity/structs/VkPhysicalDeviceOpticalFlowFeaturesNV.adoc[]
5999--
6000endif::VK_NV_optical_flow[]
6001
6002ifdef::VK_EXT_device_fault[]
6003[open,refpage='VkPhysicalDeviceFaultFeaturesEXT',desc='Structure indicating support for device fault reporting',type='structs']
6004--
6005The sname:VkPhysicalDeviceFaultFeaturesEXT structure is defined as:
6006
6007include::{generated}/api/structs/VkPhysicalDeviceFaultFeaturesEXT.adoc[]
6008
6009The members of the sname:VkPhysicalDeviceFaultFeaturesEXT structure describe
6010the following features:
6011
6012  * [[features-deviceFault]] pname:deviceFault indicates that the
6013    implementation supports the reporting of device fault information.
6014  * [[features-deviceFaultVendorBinary]] pname:deviceFaultVendorBinary
6015    indicates that the implementation supports the generation of
6016    vendor-specific binary crash dumps.
6017    These may provide additional information when imported into
6018    vendor-specific external tools.
6019
6020:refpage: VkPhysicalDeviceFaultFeaturesEXT
6021include::{chapters}/features.adoc[tag=features]
6022
6023include::{generated}/validity/structs/VkPhysicalDeviceFaultFeaturesEXT.adoc[]
6024--
6025endif::VK_EXT_device_fault[]
6026
6027ifdef::VK_ARM_shader_core_builtins[]
6028[open,refpage='VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM',desc='Structure describing the shader core builtins features that can be supported by an implementation',type='structs']
6029--
6030The sname:VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM structure is defined
6031as:
6032
6033include::{generated}/api/structs/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.adoc[]
6034
6035This structure describes the following feature:
6036
6037  * pname:sType is the type of this structure.
6038  * pname:pNext is `NULL` or a pointer to a structure extending this
6039    structure.
6040  * [[features-shaderCoreBuiltins]] pname:shaderCoreBuiltins indicates
6041    whether the implementation supports the SPIR-V code:CoreBuiltinsARM
6042    capability.
6043
6044:refpage: VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
6045include::{chapters}/features.adoc[tag=features]
6046
6047include::{generated}/validity/structs/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.adoc[]
6048--
6049endif::VK_ARM_shader_core_builtins[]
6050
6051ifdef::VK_EXT_swapchain_maintenance1[]
6052[open,refpage='VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT',desc='Structure describing whether implementation supports swapchain maintenance1 functionality',type='structs']
6053--
6054The sname:VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT structure is
6055defined as:
6056
6057include::{generated}/api/structs/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.adoc[]
6058
6059This structure describes the following feature:
6060
6061  * pname:sType is the type of this structure.
6062  * pname:pNext is `NULL` or a pointer to a structure extending this
6063    structure.
6064  * [[features-swapchainMaintenance1]] pname:swapchainMaintenance1 indicates
6065    that the implementation supports the following:
6066  ** slink:VkSwapchainPresentFenceInfoEXT, specifying a fence that is
6067     signaled when the resources associated with a present operation can: be
6068     safely destroyed.
6069  ** slink:VkSwapchainPresentModesCreateInfoEXT and
6070     slink:VkSwapchainPresentModeInfoEXT, allowing the swapchain to switch
6071     present modes without a need for recreation.
6072  ** slink:VkSwapchainPresentScalingCreateInfoEXT, specifying the scaling
6073     behavior of the swapchain in presence of window resizing.
6074  ** The ename:VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT flag,
6075     allowing the implementation to defer the allocation of swapchain image
6076     memory until first acquisition.
6077  ** flink:vkReleaseSwapchainImagesEXT, allowing acquired swapchain images
6078     to be released without presenting them.
6079
6080:refpage: VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
6081include::{chapters}/features.adoc[tag=features]
6082
6083include::{generated}/validity/structs/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.adoc[]
6084--
6085endif::VK_EXT_swapchain_maintenance1[]
6086
6087ifdef::VK_NV_ray_tracing_invocation_reorder[]
6088[open,refpage='VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV',desc='Structure describing feature to control ray tracing invocation reordering',type='structs']
6089--
6090The sname:VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV structure is
6091defined as:
6092
6093include::{generated}/api/structs/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.adoc[]
6094
6095This structure describes the following feature:
6096
6097  * pname:sType is the type of this structure.
6098  * pname:pNext is `NULL` or a pointer to a structure extending this
6099    structure.
6100  * [[features-rayTracingInvocationReorder]]
6101    pname:rayTracingInvocationReorder indicates that the implementation
6102    supports `SPV_NV_shader_invocation_reorder`.
6103
6104:refpage: VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
6105include::{chapters}/features.adoc[tag=features]
6106
6107include::{generated}/validity/structs/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.adoc[]
6108
6109--
6110endif::VK_NV_ray_tracing_invocation_reorder[]
6111
6112ifdef::VK_QCOM_multiview_per_view_viewports[]
6113[open,refpage='VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM',desc='Structure describing multiview per view viewports features that can be supported by an implementation',type='structs']
6114--
6115The sname:VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM structure is
6116defined as:
6117
6118include::{generated}/api/structs/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.adoc[]
6119
6120This structure describes the following features:
6121
6122  * [[features-multiview-per-view-viewports]]
6123    pname:multiviewPerViewViewports indicates that the implementation
6124    supports multiview per-view viewports.
6125
6126:refpage: VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
6127include::{chapters}/features.adoc[tag=features]
6128
6129include::{generated}/validity/structs/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.adoc[]
6130--
6131endif::VK_QCOM_multiview_per_view_viewports[]
6132
6133
6134[[features-requirements]]
6135== Feature Requirements
6136
6137All Vulkan graphics implementations must: support the following features:
6138
6139ifdef::VK_KHR_portability_subset[]
6140  * <<features-robustBufferAccess, pname:robustBufferAccess>>, unless the
6141    `apiext:VK_KHR_portability_subset` extension is enabled.
6142endif::VK_KHR_portability_subset[]
6143ifndef::VK_KHR_portability_subset[]
6144  * <<features-robustBufferAccess, pname:robustBufferAccess>>
6145endif::VK_KHR_portability_subset[]
6146ifdef::VK_VERSION_1_1[]
6147  * <<features-multiview, pname:multiview>>, if Vulkan 1.1 is supported.
6148ifdef::VK_KHR_shader_draw_parameters[]
6149  * <<features-shaderDrawParameters, pname:shaderDrawParameters>>, if the
6150    `apiext:VK_KHR_shader_draw_parameters` extension is supported.
6151endif::VK_KHR_shader_draw_parameters[]
6152endif::VK_VERSION_1_1[]
6153ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
6154  * <<features-uniformBufferStandardLayout,
6155    pname:uniformBufferStandardLayout>>, if Vulkan 1.2 or the
6156    `apiext:VK_KHR_uniform_buffer_standard_layout` extension is supported.
6157endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
6158ifdef::VK_KHR_variable_pointers[]
6159  * <<features-variablePointersStorageBuffer,
6160    pname:variablePointersStorageBuffer>>, if the
6161    `apiext:VK_KHR_variable_pointers` extension is supported.
6162endif::VK_KHR_variable_pointers[]
6163ifdef::VK_KHR_8bit_storage[]
6164  * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if
6165    the `apiext:VK_KHR_8bit_storage` extension is supported.
6166endif::VK_KHR_8bit_storage[]
6167ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[]
6168  * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if
6169    <<features-uniformAndStorageBuffer8BitAccess,
6170    pname:uniformAndStorageBuffer8BitAccess>> is enabled.
6171endif::VK_VERSION_1_2,VK_KHR_8bit_storage[]
6172ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
6173  * If
6174ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature is supported, or if]
6175    the `apiext:VK_EXT_descriptor_indexing` extension is supported:
6176  ** <<features-shaderSampledImageArrayDynamicIndexing,
6177     pname:shaderSampledImageArrayDynamicIndexing>>
6178  ** <<features-shaderStorageBufferArrayDynamicIndexing,
6179     pname:shaderStorageBufferArrayDynamicIndexing>>
6180  ** <<features-shaderUniformTexelBufferArrayDynamicIndexing,
6181     pname:shaderUniformTexelBufferArrayDynamicIndexing>>
6182  ** <<features-shaderStorageTexelBufferArrayDynamicIndexing,
6183     pname:shaderStorageTexelBufferArrayDynamicIndexing>>
6184  ** <<features-shaderSampledImageArrayNonUniformIndexing,
6185     pname:shaderSampledImageArrayNonUniformIndexing>>
6186  ** <<features-shaderStorageBufferArrayNonUniformIndexing,
6187     pname:shaderStorageBufferArrayNonUniformIndexing>>
6188  ** <<features-shaderUniformTexelBufferArrayNonUniformIndexing,
6189     pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
6190  ** <<features-descriptorBindingSampledImageUpdateAfterBind,
6191     pname:descriptorBindingSampledImageUpdateAfterBind>>
6192  ** <<features-descriptorBindingStorageImageUpdateAfterBind,
6193     pname:descriptorBindingStorageImageUpdateAfterBind>>
6194  ** <<features-descriptorBindingStorageBufferUpdateAfterBind,
6195     pname:descriptorBindingStorageBufferUpdateAfterBind>> (see also
6196     <<limits-robustBufferAccessUpdateAfterBind,
6197     pname:robustBufferAccessUpdateAfterBind>>)
6198  ** <<features-descriptorBindingUniformTexelBufferUpdateAfterBind,
6199     pname:descriptorBindingUniformTexelBufferUpdateAfterBind>> (see also
6200     <<limits-robustBufferAccessUpdateAfterBind,
6201     pname:robustBufferAccessUpdateAfterBind>>)
6202  ** <<features-descriptorBindingStorageTexelBufferUpdateAfterBind,
6203     pname:descriptorBindingStorageTexelBufferUpdateAfterBind>> (see also
6204     <<limits-robustBufferAccessUpdateAfterBind,
6205     pname:robustBufferAccessUpdateAfterBind>>)
6206  ** <<features-descriptorBindingUpdateUnusedWhilePending,
6207     pname:descriptorBindingUpdateUnusedWhilePending>>
6208  ** <<features-descriptorBindingPartiallyBound,
6209     pname:descriptorBindingPartiallyBound>>
6210  ** <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
6211endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
6212ifdef::VK_VERSION_1_3[]
6213  * If Vulkan 1.3 is supported:
6214  ** <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>
6215  ** <<features-vulkanMemoryModelDeviceScope,
6216     pname:vulkanMemoryModelDeviceScope>>
6217endif::VK_VERSION_1_3[]
6218ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
6219  * <<features-inlineUniformBlock, pname:inlineUniformBlock>>, if Vulkan 1.3
6220    or the `apiext:VK_EXT_inline_uniform_block` extension is supported.
6221ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
6222  * <<features-descriptorBindingInlineUniformBlockUpdateAfterBind,
6223    pname:descriptorBindingInlineUniformBlockUpdateAfterBind>>, if Vulkan
6224    1.3 or the `apiext:VK_EXT_inline_uniform_block` extension is supported;
6225    and if
6226ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature is supported, or]
6227    the `apiext:VK_EXT_descriptor_indexing` extension is supported.
6228endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
6229endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
6230ifdef::VK_EXT_scalar_block_layout[]
6231  * <<features-scalarBlockLayout, pname:scalarBlockLayout>>, if the
6232    `apiext:VK_EXT_scalar_block_layout` extension is supported.
6233endif::VK_EXT_scalar_block_layout[]
6234ifdef::VK_VERSION_1_2[]
6235  * <<features-subgroupBroadcastDynamicId,
6236    pname:subgroupBroadcastDynamicId>>, if Vulkan 1.2 is supported.
6237endif::VK_VERSION_1_2[]
6238ifdef::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
6239  * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>,
6240    if the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is
6241    supported.
6242endif::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
6243ifdef::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
6244  * <<features-drawIndirectCount, pname:drawIndirectCount>>, if the
6245    `apiext:VK_KHR_draw_indirect_count` extension is supported.
6246endif::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
6247ifdef::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
6248  * <<features-samplerFilterMinmax, pname:samplerFilterMinmax>>, if the
6249    `apiext:VK_EXT_sampler_filter_minmax` extension is supported.
6250endif::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
6251ifdef::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
6252  * <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>>,
6253    if the `apiext:VK_EXT_shader_viewport_index_layer` extension is
6254    supported.
6255  * <<features-shaderOutputLayer, pname:shaderOutputLayer>>, if the
6256    `apiext:VK_EXT_shader_viewport_index_layer` extension is supported.
6257endif::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
6258ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
6259  * <<features-subgroupSizeControl, pname:subgroupSizeControl>>, if Vulkan
6260    1.3 or the `apiext:VK_EXT_subgroup_size_control` extension is supported.
6261  * <<features-computeFullSubgroups, pname:computeFullSubgroups>>, if Vulkan
6262    1.3 or the `apiext:VK_EXT_subgroup_size_control` extension is supported.
6263endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
6264ifdef::VK_EXT_device_memory_report[]
6265  * <<features-deviceMemoryReport, pname:deviceMemoryReport>>, if the
6266    `apiext:VK_EXT_device_memory_report` extension is supported.
6267endif::VK_EXT_device_memory_report[]
6268ifdef::VK_EXT_global_priority_query[]
6269  * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the
6270    `apiext:VK_EXT_global_priority_query` extension is supported.
6271endif::VK_EXT_global_priority_query[]
6272ifdef::VK_KHR_global_priority[]
6273  * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the
6274    `apiext:VK_KHR_global_priority` extension is supported.
6275endif::VK_KHR_global_priority[]
6276ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
6277  * <<features-imagelessFramebuffer, pname:imagelessFramebuffer>>, if Vulkan
6278    1.2 or the `apiext:VK_KHR_imageless_framebuffer` extension is supported.
6279endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
6280ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
6281  * <<features-separateDepthStencilLayouts,
6282    pname:separateDepthStencilLayouts>>, if Vulkan 1.2 or the
6283    `apiext:VK_KHR_separate_depth_stencil_layouts` extension is supported.
6284endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
6285ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
6286  * <<features-hostQueryReset, pname:hostQueryReset>>, if Vulkan 1.2 or the
6287    `apiext:VK_EXT_host_query_reset` extension is supported.
6288endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
6289ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
6290  * <<features-timelineSemaphore, pname:timelineSemaphore>>, if Vulkan 1.2
6291    or the `apiext:VK_KHR_timeline_semaphore` extension is supported.
6292endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
6293ifdef::VK_KHR_acceleration_structure[]
6294  * If the `apiext:VK_KHR_acceleration_structure` extension is supported:
6295  ** <<features-accelerationStructure, pname:accelerationStructure>>
6296  ** All the features required by
6297ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature if Vulkan 1.2 is supported, or]
6298     the `apiext:VK_EXT_descriptor_indexing` extension.
6299  ** <<features-descriptorBindingAccelerationStructureUpdateAfterBind,
6300     pname:descriptorBindingAccelerationStructureUpdateAfterBind>>
6301  ** <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> from
6302ifdef::VK_VERSION_1_2[Vulkan 1.2 or]
6303     the `apiext:VK_KHR_buffer_device_address` extension.
6304endif::VK_KHR_acceleration_structure[]
6305ifdef::VK_KHR_ray_tracing_pipeline[]
6306  * If the `apiext:VK_KHR_ray_tracing_pipeline` extension is supported:
6307  ** <<features-rayTracingPipeline, pname:rayTracingPipeline>>
6308  ** <<features-rayTracingPipelineTraceRaysIndirect,
6309     pname:rayTracingPipelineTraceRaysIndirect>>
6310  ** <<features-rayTraversalPrimitiveCulling,
6311     pname:rayTraversalPrimitiveCulling>>, if <<features-rayQuery,
6312     pname:rayQuery>> is supported
6313  ** the `apiext:VK_KHR_pipeline_library` extension must: be supported.
6314endif::VK_KHR_ray_tracing_pipeline[]
6315ifdef::VK_KHR_ray_query[]
6316  * <<features-rayQuery, pname:rayQuery>>, if the `apiext:VK_KHR_ray_query`
6317    extension is supported.
6318endif::VK_KHR_ray_query[]
6319ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
6320  * <<features-pipelineCreationCacheControl,
6321    pname:pipelineCreationCacheControl>>, if Vulkan 1.3 or the
6322    `apiext:VK_EXT_pipeline_creation_cache_control` extension is supported.
6323endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
6324ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
6325  * <<features-subgroup-extended-types, pname:shaderSubgroupExtendedTypes>>,
6326    if Vulkan 1.2 or the `apiext:VK_KHR_shader_subgroup_extended_types`
6327    extension is supported.
6328endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
6329ifdef::VK_KHR_sampler_ycbcr_conversion[]
6330  * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>, if
6331    the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is supported.
6332endif::VK_KHR_sampler_ycbcr_conversion[]
6333ifdef::VK_KHR_pipeline_executable_properties[]
6334  * <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>>, if
6335    the `apiext:VK_KHR_pipeline_executable_properties` extension is
6336    supported.
6337endif::VK_KHR_pipeline_executable_properties[]
6338ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
6339  * <<features-textureCompressionASTC_HDR,
6340    pname:textureCompressionASTC_HDR>>, if the
6341    `apiext:VK_EXT_texture_compression_astc_hdr` extension is supported.
6342endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
6343ifdef::VK_EXT_depth_clip_enable[]
6344  * <<features-depthClipEnable, pname:depthClipEnable>>, if the
6345    `apiext:VK_EXT_depth_clip_enable` extension is supported.
6346endif::VK_EXT_depth_clip_enable[]
6347ifdef::VK_EXT_memory_priority[]
6348  * <<features-memoryPriority, pname:memoryPriority>>, if the
6349    `apiext:VK_EXT_memory_priority` extension is supported.
6350endif::VK_EXT_memory_priority[]
6351ifdef::VK_EXT_ycbcr_image_arrays[]
6352  * <<features-ycbcrImageArrays, pname:ycbcrImageArrays>>, if the
6353    `apiext:VK_EXT_ycbcr_image_arrays` extension is supported.
6354endif::VK_EXT_ycbcr_image_arrays[]
6355ifdef::VK_EXT_index_type_uint8[]
6356  * <<features-indexTypeUint8, pname:indexTypeUint8>>, if the
6357    `apiext:VK_EXT_index_type_uint8` extension is supported.
6358endif::VK_EXT_index_type_uint8[]
6359ifdef::VK_EXT_primitive_topology_list_restart[]
6360  * <<features-primitiveTopologyListRestart,
6361    pname:primitiveTopologyListRestart>>, if the
6362    `apiext:VK_EXT_primitive_topology_list_restart` extension is supported.
6363endif::VK_EXT_primitive_topology_list_restart[]
6364ifdef::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
6365  * <<features-shaderDemoteToHelperInvocation,
6366    pname:shaderDemoteToHelperInvocation>>, if Vulkan 1.3 or the
6367    `apiext:VK_EXT_shader_demote_to_helper_invocation` extension is
6368    supported.
6369endif::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
6370ifdef::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[]
6371  * <<features-texelBufferAlignment, pname:texelBufferAlignment>>, if Vulkan
6372    1.3 or the `apiext:VK_EXT_texel_buffer_alignment` extension is
6373    supported.
6374endif::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[]
6375ifdef::VK_KHR_vulkan_memory_model[]
6376  * <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>, if the
6377    `apiext:VK_KHR_vulkan_memory_model` extension is supported.
6378endif::VK_KHR_vulkan_memory_model[]
6379ifdef::VK_VERSION_1_3,VK_KHR_buffer_device_address[]
6380  * <<features-bufferDeviceAddress, pname:bufferDeviceAddress>>, if Vulkan
6381    1.3 or the `apiext:VK_KHR_buffer_device_address` extension is supported.
6382endif::VK_VERSION_1_3,VK_KHR_buffer_device_address[]
6383ifdef::VK_KHR_performance_query[]
6384  * <<VkPhysicalDevicePerformanceQueryFeaturesKHR,
6385    pname:performanceCounterQueryPools>>, if the
6386    `apiext:VK_KHR_performance_query` extension is supported.
6387endif::VK_KHR_performance_query[]
6388ifdef::VK_EXT_transform_feedback[]
6389  * <<features-transformFeedback, pname:transformFeedback>>, if the
6390    `apiext:VK_EXT_transform_feedback` extension is supported.
6391endif::VK_EXT_transform_feedback[]
6392ifdef::VK_EXT_conditional_rendering[]
6393  * <<features-conditionalRendering, pname:conditionalRendering>>, if the
6394    `apiext:VK_EXT_conditional_rendering` extension is supported.
6395endif::VK_EXT_conditional_rendering[]
6396ifdef::VK_EXT_vertex_attribute_divisor[]
6397  * <<features-vertexAttributeInstanceRateDivisor,
6398    pname:vertexAttributeInstanceRateDivisor>>, if the
6399    `apiext:VK_EXT_vertex_attribute_divisor` extension is supported.
6400endif::VK_EXT_vertex_attribute_divisor[]
6401ifdef::VK_EXT_fragment_density_map[]
6402  * <<features-fragmentDensityMap, pname:fragmentDensityMap>>, if the
6403    `apiext:VK_EXT_fragment_density_map` extension is supported.
6404endif::VK_EXT_fragment_density_map[]
6405ifdef::VK_KHR_shader_clock[]
6406  * <<features-shaderSubgroupClock, pname:shaderSubgroupClock>>, if the
6407    `apiext:VK_KHR_shader_clock` extension is supported.
6408endif::VK_KHR_shader_clock[]
6409ifdef::VK_KHR_shader_atomic_int64[]
6410  * <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>,
6411    if the `apiext:VK_KHR_shader_atomic_int64` extension is supported.
6412endif::VK_KHR_shader_atomic_int64[]
6413ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
6414  * <<features-shaderInt64, pname:shaderInt64>>, if the
6415    <<features-shaderSharedInt64Atomics, pname:shaderSharedInt64Atomics>> or
6416    <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>
6417    features are supported.
6418endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
6419ifdef::VK_KHR_shader_float16_int8[]
6420  * <<features-shaderFloat16, pname:shaderFloat16>> or
6421    <<features-shaderInt8, pname:shaderInt8>>, if the
6422    `apiext:VK_KHR_shader_float16_int8` extension is supported.
6423endif::VK_KHR_shader_float16_int8[]
6424ifdef::VK_EXT_fragment_shader_interlock[]
6425  * <<features-fragmentShaderSampleInterlock,
6426    pname:fragmentShaderSampleInterlock>> or
6427    <<features-fragmentShaderPixelInterlock,
6428    pname:fragmentShaderPixelInterlock>> or
6429    <<features-fragmentShaderShadingRateInterlock,
6430    pname:fragmentShaderShadingRateInterlock>>, if the
6431    `apiext:VK_EXT_fragment_shader_interlock` extension is supported.
6432endif::VK_EXT_fragment_shader_interlock[]
6433ifdef::VK_EXT_line_rasterization[]
6434  * <<features-rectangularLines, pname:rectangularLines>> or
6435    <<features-bresenhamLines, pname:bresenhamLines>> or
6436    <<features-smoothLines, pname:smoothLines>> or
6437    <<features-stippledRectangularLines, pname:stippledRectangularLines>> or
6438    <<features-stippledBresenhamLines, pname:stippledBresenhamLines>> or
6439    <<features-stippledSmoothLines, pname:stippledSmoothLines>>, if the
6440    `apiext:VK_EXT_line_rasterization` extension is supported.
6441endif::VK_EXT_line_rasterization[]
6442ifdef::VK_KHR_16bit_storage[]
6443  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
6444    if the `apiext:VK_KHR_16bit_storage` extension is supported.
6445endif::VK_KHR_16bit_storage[]
6446ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
6447  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
6448    if <<features-uniformAndStorageBuffer16BitAccess,
6449    pname:uniformAndStorageBuffer16BitAccess>> is enabled.
6450endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
6451ifdef::VK_VERSION_1_3,VK_EXT_image_robustness[]
6452  * <<features-robustImageAccess, pname:robustImageAccess>>, if Vulkan 1.3
6453    or the `apiext:VK_EXT_image_robustness` extension is supported.
6454endif::VK_VERSION_1_3,VK_EXT_image_robustness[]
6455ifdef::VK_EXT_4444_formats[]
6456  * <<features-formatA4R4G4B4, pname:formatA4R4G4B4>>, if the
6457    `apiext:VK_EXT_4444_formats` extension is supported.
6458endif::VK_EXT_4444_formats[]
6459ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
6460  * <<features-mutableDescriptorType, pname:mutableDescriptorType>>, if the
6461    `apiext:VK_EXT_mutable_descriptor_type` or
6462    `apiext:VK_VALVE_mutable_descriptor_type` extension is supported.
6463endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
6464ifdef::VK_EXT_shader_image_atomic_int64[]
6465  * <<features-shaderInt64, pname:shaderInt64>> and
6466    <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
6467    the `apiext:VK_EXT_shader_image_atomic_int64` extension is supported.
6468  * <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
6469    the <<features-sparseImageInt64Atomics, pname:sparseImageInt64Atomics>>
6470    feature is supported.
6471endif::VK_EXT_shader_image_atomic_int64[]
6472ifdef::VK_EXT_shader_atomic_float[]
6473  * <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>>,
6474    if the <<features-sparseImageFloat32Atomics,
6475    pname:sparseImageFloat32Atomics>> feature is supported.
6476  * <<features-shaderImageFloat32AtomicAdd,
6477    pname:shaderImageFloat32AtomicAdd>>, if the
6478    <<features-sparseImageFloat32AtomicAdd,
6479    pname:sparseImageFloat32AtomicAdd>> feature is supported.
6480endif::VK_EXT_shader_atomic_float[]
6481ifdef::VK_EXT_primitives_generated_query[]
6482  * <<features-primitivesGeneratedQuery, pname:primitivesGeneratedQuery>>,
6483    if the `apiext:VK_EXT_primitives_generated_query` extension is
6484    supported.
6485endif::VK_EXT_primitives_generated_query[]
6486ifdef::VK_KHR_fragment_shading_rate[]
6487  * <<features-pipelineFragmentShadingRate,
6488    pname:pipelineFragmentShadingRate>>, if the
6489    `apiext:VK_KHR_fragment_shading_rate` extension is supported.
6490endif::VK_KHR_fragment_shading_rate[]
6491ifdef::VK_EXT_pipeline_protected_access[]
6492  * <<features-pipelineProtectedAccess, pname:pipelineProtectedAccess>>, if
6493    the `apiext:VK_EXT_pipeline_protected_access` extension is supported.
6494endif::VK_EXT_pipeline_protected_access[]
6495ifdef::VK_EXT_legacy_dithering[]
6496  * <<features-legacyDithering, pname:legacyDithering>>, if the
6497    `apiext:VK_EXT_legacy_dithering` extension is supported.
6498endif::VK_EXT_legacy_dithering[]
6499ifdef::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
6500  * <<features-shaderTerminateInvocation, pname:shaderTerminateInvocation>>
6501    if Vulkan 1.3 or the `apiext:VK_KHR_shader_terminate_invocation`
6502    extension is supported.
6503endif::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
6504ifdef::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
6505  * <<features-shaderZeroInitializeWorkgroupMemory,
6506    pname:shaderZeroInitializeWorkgroupMemory>>, if Vulkan 1.3 or the
6507    `apiext:VK_KHR_zero_initialize_workgroup_memory` extension is supported.
6508endif::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
6509ifdef::VK_KHR_workgroup_memory_explicit_layout[]
6510  * <<features-workgroupMemoryExplicitLayout,
6511    pname:workgroupMemoryExplicitLayout>>, if the
6512    `apiext:VK_KHR_workgroup_memory_explicit_layout` extension is supported.
6513endif::VK_KHR_workgroup_memory_explicit_layout[]
6514ifdef::VK_EXT_vertex_input_dynamic_state[]
6515  * <<features-vertexInputDynamicState, pname:vertexInputDynamicState>>, if
6516    the `apiext:VK_EXT_vertex_input_dynamic_state` extension is supported.
6517endif::VK_EXT_vertex_input_dynamic_state[]
6518ifdef::VK_VERSION_1_3,VK_KHR_synchronization2[]
6519  * <<features-synchronization2, pname:synchronization2>> if Vulkan 1.3 or
6520    the `apiext:VK_KHR_synchronization2` extension is supported.
6521endif::VK_VERSION_1_3,VK_KHR_synchronization2[]
6522ifdef::VK_EXT_provoking_vertex[]
6523  * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the
6524    `apiext:VK_EXT_provoking_vertex` extension is supported.
6525endif::VK_EXT_provoking_vertex[]
6526ifdef::VK_EXT_descriptor_buffer[]
6527  * <<features-descriptorBuffer, pname:descriptorBuffer>>, if the
6528    `<<VK_EXT_descriptor_buffer>>` extension is supported.
6529endif::VK_EXT_descriptor_buffer[]
6530ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
6531  * <<features-shaderSubgroupUniformControlFlow,
6532    pname:shaderSubgroupUniformControlFlow>>, if the
6533    `apiext:VK_KHR_shader_subgroup_uniform_control_flow` extension is
6534    supported.
6535endif::VK_KHR_shader_subgroup_uniform_control_flow[]
6536ifdef::VK_EXT_border_color_swizzle[]
6537  * <<features-borderColorSwizzle, pname:borderColorSwizzle>> if the
6538    `apiext:VK_EXT_border_color_swizzle` extension is supported.
6539endif::VK_EXT_border_color_swizzle[]
6540ifdef::VK_EXT_multi_draw[]
6541  * <<features-multiDraw, pname:multiDraw>>, if the
6542    `apiext:VK_EXT_multi_draw` extension is supported.
6543endif::VK_EXT_multi_draw[]
6544ifdef::VK_EXT_shader_atomic_float2[]
6545  * <<features-shaderImageFloat32AtomicMinMax,
6546    pname:shaderImageFloat32AtomicMinMax>>, if the
6547    <<features-sparseImageFloat32AtomicMinMax,
6548    pname:sparseImageFloat32AtomicMinMax>> feature is supported.
6549endif::VK_EXT_shader_atomic_float2[]
6550ifdef::VK_KHR_present_id[]
6551  * <<features-presentId, pname:presentId>>, if the
6552    `apiext:VK_KHR_present_id` extension is supported.
6553endif::VK_KHR_present_id[]
6554ifdef::VK_KHR_present_wait[]
6555  * <<features-presentWait, pname:presentWait>>, if the
6556    `apiext:VK_KHR_present_wait` extension is supported.
6557endif::VK_KHR_present_wait[]
6558ifdef::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
6559  * <<features-shaderIntegerDotProduct, pname:shaderIntegerDotProduct>> if
6560    Vulkan 1.3 or the `apiext:VK_KHR_shader_integer_dot_product` extension
6561    is supported.
6562endif::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
6563ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[]
6564  * <<features-maintenance4, pname:maintenance4>>, if Vulkan 1.3 or the
6565    `apiext:VK_KHR_maintenance4` extension is supported.
6566endif::VK_VERSION_1_3,VK_KHR_maintenance4[]
6567ifdef::VK_EXT_image_2d_view_of_3d[]
6568  * <<features-image2DViewOf3D, pname:image2DViewOf3D>>, if the
6569    `apiext:VK_EXT_image_2d_view_of_3d` extension is supported.
6570endif::VK_EXT_image_2d_view_of_3d[]
6571ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
6572  * <<features-privateData, pname:privateData>>, if Vulkan 1.3 or the
6573    `apiext:VK_EXT_private_data` extension is supported.
6574endif::VK_VERSION_1_3,VK_EXT_private_data[]
6575ifdef::VK_EXT_extended_dynamic_state[]
6576  * <<features-extendedDynamicState, pname:extendedDynamicState>>, if the
6577    `apiext:VK_EXT_extended_dynamic_state` extension is supported.
6578endif::VK_EXT_extended_dynamic_state[]
6579ifdef::VK_EXT_extended_dynamic_state2[]
6580  * <<features-extendedDynamicState2, pname:extendedDynamicState2>>, if the
6581    `apiext:VK_EXT_extended_dynamic_state2` extension is supported.
6582endif::VK_EXT_extended_dynamic_state2[]
6583ifdef::VK_EXT_depth_clip_control[]
6584  * <<features-depthClipControl, pname:depthClipControl>>, if the
6585    `apiext:VK_EXT_depth_clip_control` extension is supported.
6586endif::VK_EXT_depth_clip_control[]
6587ifdef::VK_EXT_image_view_min_lod[]
6588  * <<features-minLod, pname:minLod>>, if the
6589    `apiext:VK_EXT_image_view_min_lod` extension is supported.
6590endif::VK_EXT_image_view_min_lod[]
6591ifdef::VK_NV_linear_color_attachment[]
6592  * <<features-linearColorAttachment, pname:linearColorAttachment>>, if the
6593    `apiext:VK_NV_linear_color_attachment` extension is supported.
6594endif::VK_NV_linear_color_attachment[]
6595ifdef::VK_NV_present_barrier[]
6596  * <<features-presentBarrier, pname:presentBarrier>>, if the
6597    `apiext:VK_NV_present_barrier` extension is supported.
6598endif::VK_NV_present_barrier[]
6599ifdef::VK_EXT_graphics_pipeline_library[]
6600  * <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>>, if
6601    the `apiext:VK_EXT_graphics_pipeline_library` extension is supported.
6602endif::VK_EXT_graphics_pipeline_library[]
6603ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
6604  * <<features-dynamicRendering, pname:dynamicRendering>>, if Vulkan 1.3 or
6605    the `apiext:VK_KHR_dynamic_rendering` extension is supported.
6606endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
6607ifdef::VK_EXT_mesh_shader[]
6608  * <<features-taskShader, pname:taskShader>> and <<features-meshShader,
6609    pname:meshShader>>, if the `apiext:VK_EXT_mesh_shader` extension is
6610    supported.
6611endif::VK_EXT_mesh_shader[]
6612ifdef::VK_EXT_mesh_shader+VK_KHR_fragment_shading_rate[]
6613  * <<features-primitiveFragmentShadingRate,
6614    pname:primitiveFragmentShadingRate>> if
6615    <<features-primitiveFragmentShadingRate-mesh,
6616    pname:primitiveFragmentShadingRateMeshShader>> feature is supported.
6617endif::VK_EXT_mesh_shader+VK_KHR_fragment_shading_rate[]
6618ifdef::VK_EXT_subpass_merge_feedback[]
6619  * <<features-subpassMergeFeedback, pname:subpassMergeFeedback>>, if the
6620    `apiext:VK_EXT_subpass_merge_feedback` extension is supported.
6621endif::VK_EXT_subpass_merge_feedback[]
6622ifdef::VK_KHR_ray_tracing_maintenance1[]
6623  * <<features-rayTracingMaintenance1, pname:rayTracingMaintenance1>>, if
6624    the `apiext:VK_KHR_ray_tracing_maintenance1` extension is supported.
6625endif::VK_KHR_ray_tracing_maintenance1[]
6626ifdef::VK_EXT_color_write_enable[]
6627  * <<features-colorWriteEnable, pname:colorWriteEnable>>, if the
6628    `apiext:VK_EXT_color_write_enable` extension is supported.
6629endif::VK_EXT_color_write_enable[]
6630ifdef::VK_EXT_multisampled_render_to_single_sampled[]
6631  * <<features-multisampledRenderToSingleSampled,
6632    pname:multisampledRenderToSingleSampled>>, if the
6633    `apiext:VK_EXT_multisampled_render_to_single_sampled` extension is
6634    supported.
6635endif::VK_EXT_multisampled_render_to_single_sampled[]
6636ifdef::VK_EXT_image_compression_control[]
6637  * <<features-imageCompressionControl, pname:imageCompressionControl>>, if
6638    the `apiext:VK_EXT_image_compression_control` extension is supported.
6639ifdef::VK_EXT_image_compression_control_swapchain[]
6640  * <<features-imageCompressionControlSwapchain,
6641    pname:imageCompressionControlSwapchain>>, if the
6642    `apiext:VK_EXT_image_compression_control_swapchain` extension is
6643    supported.
6644endif::VK_EXT_image_compression_control_swapchain[]
6645endif::VK_EXT_image_compression_control[]
6646ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
6647  * <<features-shaderEarlyAndLateFragmentTests,
6648    pname:shaderEarlyAndLateFragmentTests>>, if the
6649    `apiext:VK_AMD_shader_early_and_late_fragment_tests` extension is
6650    supported.
6651endif::VK_AMD_shader_early_and_late_fragment_tests[]
6652ifdef::VK_EXT_non_seamless_cube_map[]
6653  * <<features-nonSeamlessCubeMap, pname:nonSeamlessCubeMap>>, if the
6654    `apiext:VK_EXT_non_seamless_cube_map` extension is supported.
6655endif::VK_EXT_non_seamless_cube_map[]
6656ifdef::VK_EXT_shader_module_identifier[]
6657  * <<features-shaderModuleIdentifier, pname:shaderModuleIdentifier>>, if
6658    `apiext:VK_EXT_shader_module_identifier` extension is supported.
6659endif::VK_EXT_shader_module_identifier[]
6660ifdef::VK_EXT_pipeline_robustness[]
6661  * <<features-pipelineRobustness, pname:pipelineRobustness>>, if the
6662    `apiext:VK_EXT_pipeline_robustness` extension is supported.
6663endif::VK_EXT_pipeline_robustness[]
6664ifdef::VK_QCOM_image_processing[]
6665  * <<features-textureSampleWeighted, pname:textureSampleWeighted>>,
6666    <<features-textureBlockMatch, pname:TextureBlockMatch>>, and
6667    <<features-textureBoxFilter, pname:TextureBoxFilter>> if
6668    `apiext:VK_QCOM_image_processing` extension is supported.
6669endif::VK_QCOM_image_processing[]
6670ifdef::VK_QCOM_tile_properties[]
6671  * <<features-tileProperties, pname:tileProperties>> if
6672    `apiext:VK_QCOM_tile_properties` extension is supported.
6673endif::VK_QCOM_tile_properties[]
6674ifdef::VK_EXT_attachment_feedback_loop_layout[]
6675  * <<features-attachmentFeedbackLoopLayout,
6676    pname:attachmentFeedbackLoopLayout>>, if the
6677    `apiext:VK_EXT_attachment_feedback_loop_layout` extension is supported.
6678endif::VK_EXT_attachment_feedback_loop_layout[]
6679ifdef::VK_EXT_depth_clamp_zero_one[]
6680  * <<features-depthClampZeroOne, pname:depthClampZeroOne>>, if the
6681    `apiext:VK_EXT_depth_clamp_zero_one` extension is supported.
6682endif::VK_EXT_depth_clamp_zero_one[]
6683ifdef::VK_EXT_device_fault[]
6684  * <<features-deviceFault, pname:deviceFault>>, if the
6685    `apiext:VK_EXT_device_fault` extension is supported.
6686endif::VK_EXT_device_fault[]
6687ifdef::VK_EXT_device_address_binding_report[]
6688  * <<features-reportAddressBinding, pname:reportAddressBinding>>, if the
6689    `apiext:VK_EXT_device_address_binding_report` extension is supported.
6690endif::VK_EXT_device_address_binding_report[]
6691ifdef::VK_EXT_opacity_micromap[]
6692  * <<features-micromap, pname:micromap>>, if the
6693    `apiext:VK_EXT_opacity_micromap` extension is supported.
6694endif::VK_EXT_opacity_micromap[]
6695ifdef::VK_EXT_swapchain_maintenance1[]
6696  * <<features-swapchainMaintenance1, pname:swapchainMaintenance1>>, if the
6697    `apiext:VK_EXT_swapchain_maintenance1` extension is supported.
6698endif::VK_EXT_swapchain_maintenance1[]
6699ifdef::VK_EXT_extended_dynamic_state3[]
6700  * <<features-tessellationShader, pname:tessellationShader>>, if the
6701    <<features-extendedDynamicState3TessellationDomainOrigin,
6702    pname:extendedDynamicState3TessellationDomainOrigin>> feature is
6703    supported.
6704  * <<features-depthClamp, pname:depthClamp>>, if the
6705    <<features-extendedDynamicState3DepthClampEnable,
6706    pname:extendedDynamicState3DepthClampEnable>> feature is supported.
6707  * <<features-fillModeNonSolid, pname:fillModeNonSolid>>, if the
6708    <<features-extendedDynamicState3PolygonMode,
6709    pname:extendedDynamicState3PolygonMode>> feature is supported.
6710  * <<features-alphaToOne, pname:alphaToOne>>, if the
6711    <<features-extendedDynamicState3AlphaToOneEnable,
6712    pname:extendedDynamicState3AlphaToOneEnable>> feature is supported.
6713  * <<features-logicOp, pname:logicOp>>, if the
6714    <<features-extendedDynamicState3LogicOpEnable,
6715    pname:extendedDynamicState3LogicOpEnable>> feature is supported.
6716ifdef::VK_EXT_transform_feedback[]
6717  * <<features-geometryStreams, pname:geometryStreams>>, if the
6718    <<features-extendedDynamicState3RasterizationStream,
6719    pname:extendedDynamicState3RasterizationStream>> feature is supported.
6720endif::VK_EXT_transform_feedback[]
6721ifdef::VK_EXT_conservative_rasterization[]
6722  * `apiext:VK_EXT_conservative_rasterization` extension, if the
6723    <<features-extendedDynamicState3ConservativeRasterizationMode,
6724    pname:extendedDynamicState3ConservativeRasterizationMode>> feature is
6725    supported.
6726  * `apiext:VK_EXT_conservative_rasterization` extension, if the
6727    <<features-extendedDynamicState3ExtraPrimitiveOverestimationSize,
6728    pname:extendedDynamicState3ExtraPrimitiveOverestimationSize>> feature is
6729    supported.
6730endif::VK_EXT_conservative_rasterization[]
6731ifdef::VK_EXT_sample_locations[]
6732  * `apiext:VK_EXT_sample_locations` extension, if the
6733    <<features-extendedDynamicState3SampleLocationsEnable,
6734    pname:extendedDynamicState3SampleLocationsEnable>> feature is supported.
6735endif::VK_EXT_sample_locations[]
6736ifdef::VK_EXT_blend_operation_advanced[]
6737  * `apiext:VK_EXT_blend_operation_advanced` extension, if the
6738    <<features-extendedDynamicState3ColorBlendAdvanced,
6739    pname:extendedDynamicState3ColorBlendAdvanced>> feature is supported.
6740endif::VK_EXT_blend_operation_advanced[]
6741ifdef::VK_EXT_provoking_vertex[]
6742  * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the
6743    <<features-extendedDynamicState3ProvokingVertexMode,
6744    pname:extendedDynamicState3ProvokingVertexMode>> feature is supported.
6745endif::VK_EXT_provoking_vertex[]
6746ifdef::VK_EXT_line_rasterization[]
6747  * `apiext:VK_EXT_line_rasterization` extension, if the
6748    <<features-extendedDynamicState3LineRasterizationMode,
6749    pname:extendedDynamicState3LineRasterizationMode>> feature is supported.
6750  * `apiext:VK_EXT_line_rasterization` extension, if the
6751    <<features-extendedDynamicState3LineStippleEnable,
6752    pname:extendedDynamicState3LineStippleEnable>> feature is supported.
6753endif::VK_EXT_line_rasterization[]
6754ifdef::VK_EXT_depth_clip_control[]
6755  * <<features-depthClipControl, pname:depthClipControl>>, if the
6756    <<features-extendedDynamicState3DepthClipNegativeOneToOne,
6757    pname:extendedDynamicState3DepthClipNegativeOneToOne>> feature is
6758    supported.
6759endif::VK_EXT_depth_clip_control[]
6760ifdef::VK_NV_clip_space_w_scaling[]
6761  * `apiext:VK_NV_clip_space_w_scaling` extension, if the
6762    <<features-extendedDynamicState3ViewportWScalingEnable,
6763    pname:extendedDynamicState3ViewportWScalingEnable>> feature is
6764    supported.
6765endif::VK_NV_clip_space_w_scaling[]
6766ifdef::VK_NV_viewport_swizzle[]
6767  * `apiext:VK_NV_viewport_swizzle` extension, if the
6768    <<features-extendedDynamicState3ViewportSwizzle,
6769    pname:extendedDynamicState3ViewportSwizzle>> feature is supported.
6770endif::VK_NV_viewport_swizzle[]
6771ifdef::VK_NV_fragment_coverage_to_color[]
6772  * `apiext:VK_NV_fragment_coverage_to_color` extension, if the
6773    <<features-extendedDynamicState3CoverageToColorEnable,
6774    pname:extendedDynamicState3CoverageToColorEnable>> feature is supported.
6775  * `apiext:VK_NV_fragment_coverage_to_color` extension, if the
6776    <<features-extendedDynamicState3CoverageToColorLocation,
6777    pname:extendedDynamicState3CoverageToColorLocation>> feature is
6778    supported.
6779endif::VK_NV_fragment_coverage_to_color[]
6780ifdef::VK_NV_framebuffer_mixed_samples[]
6781  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
6782    <<features-extendedDynamicState3CoverageModulationMode,
6783    pname:extendedDynamicState3CoverageModulationMode>> feature is
6784    supported.
6785  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
6786    <<features-extendedDynamicState3CoverageModulationTableEnable,
6787    pname:extendedDynamicState3CoverageModulationTableEnable>> feature is
6788    supported.
6789  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
6790    <<features-extendedDynamicState3CoverageModulationTable,
6791    pname:extendedDynamicState3CoverageModulationTable>> feature is
6792    supported.
6793endif::VK_NV_framebuffer_mixed_samples[]
6794ifdef::VK_NV_coverage_reduction_mode[]
6795  * <<features-coverageReductionMode, pname:coverageReductionMode>>, if the
6796    <<features-extendedDynamicState3CoverageReductionMode,
6797    pname:extendedDynamicState3CoverageReductionMode>> feature is supported.
6798endif::VK_NV_coverage_reduction_mode[]
6799ifdef::VK_NV_representative_fragment_test[]
6800  * <<features-representativeFragmentTest,
6801    pname:representativeFragmentTest>>, if the
6802    <<features-extendedDynamicState3RepresentativeFragmentTestEnable,
6803    pname:extendedDynamicState3RepresentativeFragmentTestEnable>> feature is
6804    supported.
6805endif::VK_NV_representative_fragment_test[]
6806ifdef::VK_NV_shading_rate_image[]
6807  * <<features-shadingRateImage, pname:shadingRateImage>>, if the
6808    <<features-extendedDynamicState3ShadingRateImageEnable,
6809    pname:extendedDynamicState3ShadingRateImageEnable>> feature is
6810    supported.
6811endif::VK_NV_shading_rate_image[]
6812endif::VK_EXT_extended_dynamic_state3[]
6813ifdef::VK_QCOM_multiview_per_view_viewports[]
6814  * <<features-multiview-per-view-viewports,
6815    pname:multiviewPerViewViewports>>, if the
6816    `apiext:VK_QCOM_multiview_per_view_viewports` extension is supported.
6817endif::VK_QCOM_multiview_per_view_viewports[]
6818
6819
6820All other features defined in the Specification are optional:.
6821
6822
6823ifdef::VK_VERSION_1_3[]
6824[[profile-features]]
6825== Profile Features
6826
6827
6828[[profile-features-roadmap-2022]]
6829=== Roadmap 2022
6830
6831Implementations that claim support for the <<roadmap-2022, Roadmap 2022>>
6832profile must: support the following features:
6833
6834  * <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>>
6835  * <<features-imageCubeArray, pname:imageCubeArray>>
6836  * <<features-independentBlend, pname:independentBlend>>
6837  * <<features-sampleRateShading, pname:sampleRateShading>>
6838  * <<features-drawIndirectFirstInstance, pname:drawIndirectFirstInstance>>
6839  * <<features-depthClamp, pname:depthClamp>>
6840  * <<features-depthBiasClamp, pname:depthBiasClamp>>
6841  * <<features-samplerAnisotropy, pname:samplerAnisotropy>>
6842  * <<features-occlusionQueryPrecise, pname:occlusionQueryPrecise>>
6843  * <<features-fragmentStoresAndAtomics, pname:fragmentStoresAndAtomics>>
6844  * <<features-shaderStorageImageExtendedFormats,
6845    pname:shaderStorageImageExtendedFormats>>
6846  * <<features-shaderUniformBufferArrayDynamicIndexing,
6847    pname:shaderUniformBufferArrayDynamicIndexing>>
6848  * <<features-shaderSampledImageArrayDynamicIndexing,
6849    pname:shaderSampledImageArrayDynamicIndexing>>
6850  * <<features-shaderStorageBufferArrayDynamicIndexing,
6851    pname:shaderStorageBufferArrayDynamicIndexing>>
6852  * <<features-shaderStorageImageArrayDynamicIndexing,
6853    pname:shaderStorageImageArrayDynamicIndexing>>
6854  * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>
6855  * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>
6856  * <<features-descriptorIndexing, pname:descriptorIndexing>>
6857  * <<features-shaderUniformTexelBufferArrayDynamicIndexing,
6858    pname:shaderUniformTexelBufferArrayDynamicIndexing>>
6859  * <<features-shaderStorageTexelBufferArrayDynamicIndexing,
6860    pname:shaderStorageTexelBufferArrayDynamicIndexing>>
6861  * <<features-shaderUniformBufferArrayNonUniformIndexing,
6862    pname:shaderUniformBufferArrayNonUniformIndexing>>
6863  * <<features-shaderSampledImageArrayNonUniformIndexing,
6864    pname:shaderSampledImageArrayNonUniformIndexing>>
6865  * <<features-shaderStorageBufferArrayNonUniformIndexing,
6866    pname:shaderStorageBufferArrayNonUniformIndexing>>
6867  * <<features-shaderStorageImageArrayNonUniformIndexing,
6868    pname:shaderStorageImageArrayNonUniformIndexing>>
6869  * <<features-shaderUniformTexelBufferArrayNonUniformIndexing,
6870    pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
6871  * <<features-shaderStorageTexelBufferArrayNonUniformIndexing,
6872    pname:shaderStorageTexelBufferArrayNonUniformIndexing>>
6873  * <<features-descriptorBindingSampledImageUpdateAfterBind,
6874    pname:descriptorBindingSampledImageUpdateAfterBind>>
6875  * <<features-descriptorBindingStorageImageUpdateAfterBind,
6876    pname:descriptorBindingStorageImageUpdateAfterBind>>
6877  * <<features-descriptorBindingStorageBufferUpdateAfterBind,
6878    pname:descriptorBindingStorageBufferUpdateAfterBind>>
6879  * <<features-descriptorBindingUniformTexelBufferUpdateAfterBind,
6880    pname:descriptorBindingUniformTexelBufferUpdateAfterBind>>
6881  * <<features-descriptorBindingStorageTexelBufferUpdateAfterBind,
6882    pname:descriptorBindingStorageTexelBufferUpdateAfterBind>>
6883  * <<features-descriptorBindingUpdateUnusedWhilePending,
6884    pname:descriptorBindingUpdateUnusedWhilePending>>
6885  * <<features-descriptorBindingPartiallyBound,
6886    pname:descriptorBindingPartiallyBound>>
6887  * <<features-descriptorBindingVariableDescriptorCount,
6888    pname:descriptorBindingVariableDescriptorCount>>
6889  * <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
6890  * <<features-scalarBlockLayout, pname:scalarBlockLayout>>
6891endif::VK_VERSION_1_3[]
6892
6893