• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2021 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[width="100%",options="header"]
63|====
64| Extension                                 | Feature(s)
65ifdef::VK_VERSION_1_2[]
66ifdef::VK_KHR_shader_draw_parameters[]
67| `apiext:VK_KHR_shader_draw_parameters`       | <<features-shaderDrawParameters,pname:shaderDrawParameters>>
68endif::VK_KHR_shader_draw_parameters[]
69ifdef::VK_KHR_draw_indirect_count[]
70| `apiext:VK_KHR_draw_indirect_count`          | <<features-drawIndirectCount,pname:drawIndirectCount>>
71endif::VK_KHR_draw_indirect_count[]
72ifdef::VK_KHR_sampler_mirror_clamp_to_edge[]
73| `apiext:VK_KHR_sampler_mirror_clamp_to_edge` | <<features-samplerMirrorClampToEdge,pname:samplerMirrorClampToEdge>>
74endif::VK_KHR_sampler_mirror_clamp_to_edge[]
75ifdef::VK_EXT_descriptor_indexing[]
76| `apiext:VK_EXT_descriptor_indexing`          | <<features-descriptorIndexing,pname:descriptorIndexing>>
77endif::VK_EXT_descriptor_indexing[]
78ifdef::VK_EXT_sampler_filter_minmax[]
79| `apiext:VK_EXT_sampler_filter_minmax`        | <<features-samplerFilterMinmax,pname:samplerFilterMinmax>>
80endif::VK_EXT_sampler_filter_minmax[]
81ifdef::VK_EXT_shader_viewport_index_layer[]
82| `apiext:VK_EXT_shader_viewport_index_layer`  | <<features-shaderOutputViewportIndex,pname:shaderOutputViewportIndex>>, <<features-shaderOutputLayer,pname:shaderOutputLayer>>
83endif::VK_EXT_shader_viewport_index_layer[]
84endif::VK_VERSION_1_2[]
85|====
86
87[open,refpage='vkGetPhysicalDeviceFeatures',desc='Reports capabilities of a physical device',type='protos']
88--
89To query supported features, call:
90
91include::{generated}/api/protos/vkGetPhysicalDeviceFeatures.txt[]
92
93  * pname:physicalDevice is the physical device from which to query the
94    supported features.
95  * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures
96    structure in which the physical device features are returned.
97    For each feature, a value of ename:VK_TRUE specifies that the feature is
98    supported on this physical device, and ename:VK_FALSE specifies that the
99    feature is not supported.
100
101include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures.txt[]
102--
103
104Fine-grained features used by a logical device must: be enabled at
105sname:VkDevice creation time.
106If a feature is enabled that the physical device does not support,
107sname:VkDevice creation will fail and return
108ename:VK_ERROR_FEATURE_NOT_PRESENT.
109
110The fine-grained features are enabled by passing a pointer to the
111sname:VkPhysicalDeviceFeatures structure via the pname:pEnabledFeatures
112member of the slink:VkDeviceCreateInfo structure that is passed into the
113fname:vkCreateDevice call.
114If a member of pname:pEnabledFeatures is set to ename:VK_TRUE or
115ename:VK_FALSE, then the device will be created with the indicated feature
116enabled or disabled, respectively.
117ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
118Features can: also be enabled by using the slink:VkPhysicalDeviceFeatures2
119structure.
120endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
121
122If an application wishes to enable all features supported by a device, it
123can: simply pass in the sname:VkPhysicalDeviceFeatures structure that was
124previously returned by fname:vkGetPhysicalDeviceFeatures.
125To disable an individual feature, the application can: set the desired
126member to ename:VK_FALSE in the same structure.
127Setting pname:pEnabledFeatures to `NULL`
128ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
129and not including a slink:VkPhysicalDeviceFeatures2 in the pname:pNext chain
130of slink:VkDeviceCreateInfo
131endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
132is equivalent to setting all members of the structure to ename:VK_FALSE.
133
134[NOTE]
135.Note
136====
137Some features, such as pname:robustBufferAccess, may: incur a runtime
138performance cost.
139Application writers should: carefully consider the implications of enabling
140all supported features.
141====
142
143ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
144[open,refpage='vkGetPhysicalDeviceFeatures2',desc='Reports capabilities of a physical device',type='protos']
145--
146To query supported features defined by the core or extensions, call:
147
148ifdef::VK_VERSION_1_1[]
149include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2.txt[]
150endif::VK_VERSION_1_1[]
151
152ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command]
153
154ifdef::VK_KHR_get_physical_device_properties2[]
155include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2KHR.txt[]
156endif::VK_KHR_get_physical_device_properties2[]
157
158  * pname:physicalDevice is the physical device from which to query the
159    supported features.
160  * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures2
161    structure in which the physical device features are returned.
162
163Each structure in pname:pFeatures and its pname:pNext chain contains members
164corresponding to fine-grained features.
165fname:vkGetPhysicalDeviceFeatures2 writes each member to a boolean value
166indicating whether that feature is supported.
167
168include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures2.txt[]
169--
170
171[open,refpage='VkPhysicalDeviceFeatures2',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs']
172--
173The sname:VkPhysicalDeviceFeatures2 structure is defined as:
174
175include::{generated}/api/structs/VkPhysicalDeviceFeatures2.txt[]
176
177ifdef::VK_KHR_get_physical_device_properties2[]
178or the equivalent
179
180include::{generated}/api/structs/VkPhysicalDeviceFeatures2KHR.txt[]
181endif::VK_KHR_get_physical_device_properties2[]
182
183  * pname:sType is the type of this structure.
184  * pname:pNext is `NULL` or a pointer to a structure extending this
185    structure.
186  * pname:features is a slink:VkPhysicalDeviceFeatures structure describing
187    the fine-grained features of the Vulkan 1.0 API.
188
189The pname:pNext chain of this structure is used to extend the structure with
190features defined by extensions.
191This structure can: be used in flink:vkGetPhysicalDeviceFeatures2 or can: be
192included in the pname:pNext chain of a slink:VkDeviceCreateInfo structure,
193in which case it controls which features are enabled in the device in lieu
194of pname:pEnabledFeatures.
195
196include::{generated}/validity/structs/VkPhysicalDeviceFeatures2.txt[]
197--
198endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
199
200[open,refpage='VkPhysicalDeviceFeatures',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs']
201--
202The sname:VkPhysicalDeviceFeatures structure is defined as:
203
204include::{generated}/api/structs/VkPhysicalDeviceFeatures.txt[]
205
206This structure describes the following features:
207
208  * [[features-robustBufferAccess]] pname:robustBufferAccess specifies that
209    accesses to buffers are bounds-checked against the range of the buffer
210    descriptor (as determined by sname:VkDescriptorBufferInfo::pname:range,
211    slink:VkBufferViewCreateInfo::pname:range, or the size of the buffer).
212    Out of bounds accesses must: not cause application termination, and the
213    effects of shader loads, stores, and atomics must: conform to an
214    implementation-dependent behavior as described below.
215  ** A buffer access is considered to be out of bounds if any of the
216     following are true:
217  *** The pointer was formed by code:OpImageTexelPointer and the coordinate
218      is less than zero or greater than or equal to the number of whole
219      elements in the bound range.
220  *** The pointer was not formed by code:OpImageTexelPointer and the object
221      pointed to is not wholly contained within the bound range.
222ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
223      This includes accesses performed via _variable pointers_ where the
224      buffer descriptor being accessed cannot be statically determined.
225      Uninitialized pointers and pointers equal to code:OpConstantNull are
226      treated as pointing to a zero-sized object, so all accesses through
227      such pointers are considered to be out of bounds.
228endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
229ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
230      Buffer accesses through buffer device addresses are not
231      bounds-checked.
232endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
233ifdef::VK_NV_cooperative_matrix[]
234      If the
235      <<features-cooperativeMatrixRobustBufferAccess,pname:cooperativeMatrixRobustBufferAccess>>
236      feature is not enabled, then accesses using
237      code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV
238      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 enabled,
276      loads of offsets between the end of the descriptor range and the end
277      of the descriptor range rounded up to a multiple of
278      <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>>
279      bytes must: return either zero values or the contents of the memory at
280      the offset being loaded.
281      Loads of offsets past the descriptor range rounded up to a multiple of
282      <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>>
283      bytes must: return zero values.
284  *** If the access is to a storage buffer and
285      <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled,
286      loads of offsets between the end of the descriptor range and the end
287      of the descriptor range rounded up to a multiple of
288      <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>>
289      bytes must: return either zero values or the contents of the memory at
290      the offset being loaded.
291      Loads of offsets past the descriptor range rounded up to a multiple of
292      <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>>
293      bytes must: return zero values.
294      Similarly, stores to addresses between the end of the descriptor range
295      and the end of the descriptor range rounded up to a multiple of
296      <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>>
297      bytes may: be discarded.
298  *** Non-atomic accesses to storage buffers that are a multiple of 32 bits
299      may: be decomposed into 32-bit accesses that are individually
300      bounds-checked.
301  *** If the access is to an index buffer and
302      <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled,
303      zero values must: be returned.
304  *** If the access is to a uniform texel buffer or storage texel buffer and
305      <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled,
306      zero values must: be returned, and then
307      <<textures-conversion-to-rgba,Conversion to RGBA>> is applied based on
308      the buffer view's format.
309endif::VK_EXT_robustness2[]
310  *** Values from anywhere within the memory range(s) bound to the buffer
311      (possibly including bytes of memory past the end of the buffer, up to
312      the end of the bound range).
313  *** Zero values, or [eq]#(0,0,0,x)# vectors for vector reads where x is a
314      valid value represented in the type of the vector components and may:
315      be any of:
316  **** 0, 1, or the maximum representable positive integer value, for signed
317       or unsigned integer components
318  **** 0.0 or 1.0, for floating-point components
319  ** Out-of-bounds writes may: modify values within the memory range(s)
320     bound to the buffer, but must: not modify any other memory.
321ifdef::VK_EXT_robustness2[]
322  *** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is
323      enabled, out of bounds writes must: not modify any memory.
324endif::VK_EXT_robustness2[]
325  ** Out-of-bounds atomics may: modify values within the memory range(s)
326     bound to the buffer, but must: not modify any other memory, and return
327     an undefined: value.
328ifdef::VK_EXT_robustness2[]
329  *** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is
330      enabled, out of bounds atomics must: not modify any memory, and return
331      an undefined: value.
332  ** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is
333     disabled, vertex
334endif::VK_EXT_robustness2[]
335ifndef::VK_EXT_robustness2[]
336  ** Vertex
337endif::VK_EXT_robustness2[]
338     input attributes are considered out of bounds if the offset of the
339     attribute in the bound vertex buffer range plus the size of the
340     attribute is greater than either:
341+
342  *** code:vertexBufferRangeSize, if [eq]#code:bindingStride == 0#; or
343  *** [eq]#(code:vertexBufferRangeSize - (code:vertexBufferRangeSize %
344      code:bindingStride))#
345+
346where code:vertexBufferRangeSize is the byte size of the memory range bound
347to the vertex buffer binding and code:bindingStride is the byte stride of
348the corresponding vertex input binding.
349Further, if any vertex input attribute using a specific vertex input binding
350is out of bounds, then all vertex input attributes using that vertex input
351binding for that vertex shader invocation are considered out of bounds.
352  *** If a vertex input attribute is out of bounds, it will be assigned one
353      of the following values:
354  **** Values from anywhere within the memory range(s) bound to the buffer,
355       converted according to the format of the attribute.
356  **** Zero values, format converted according to the format of the
357       attribute.
358  **** Zero values, or [eq]#(0,0,0,x)# vectors, as described above.
359ifdef::VK_EXT_robustness2[]
360  ** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is
361     enabled, vertex input attributes are considered out of bounds if the
362     offset of the attribute in the bound vertex buffer range plus the size
363     of the attribute is greater than the byte size of the memory range
364     bound to the vertex buffer binding.
365  *** If a vertex input attribute is out of bounds, the
366      <<fxvertex-input-extraction,raw data>> extracted are zero values, and
367      missing G, B, or A components are <<fxvertex-input-extraction,filled
368      with [eq]#(0,0,1)#>>.
369endif::VK_EXT_robustness2[]
370  ** If pname:robustBufferAccess is not enabled, applications must: not
371     perform out of bounds accesses.
372  * [[features-fullDrawIndexUint32]] pname:fullDrawIndexUint32 specifies the
373    full 32-bit range of indices is supported for indexed draw calls when
374    using a elink:VkIndexType of ename:VK_INDEX_TYPE_UINT32.
375    pname:maxDrawIndexedIndexValue is the maximum index value that may: be
376    used (aside from the primitive restart index, which is always 2^32^-1
377    when the elink:VkIndexType is ename:VK_INDEX_TYPE_UINT32).
378    If this feature is supported, pname:maxDrawIndexedIndexValue must: be
379    2^32^-1; otherwise it must: be no smaller than 2^24^-1.
380    See <<limits-maxDrawIndexedIndexValue,maxDrawIndexedIndexValue>>.
381  * [[features-imageCubeArray]] pname:imageCubeArray specifies whether image
382    views with a elink:VkImageViewType of
383    ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the
384    corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V
385    capabilities can: be used in shader code.
386  * [[features-independentBlend]] pname:independentBlend specifies whether
387    the sname:VkPipelineColorBlendAttachmentState settings are controlled
388    independently per-attachment.
389    If this feature is not enabled, the
390    sname:VkPipelineColorBlendAttachmentState settings for all color
391    attachments must: be identical.
392    Otherwise, a different sname:VkPipelineColorBlendAttachmentState can: be
393    provided for each bound color attachment.
394  * [[features-geometryShader]] pname:geometryShader specifies whether
395    geometry shaders are supported.
396    If this feature is not enabled, the ename:VK_SHADER_STAGE_GEOMETRY_BIT
397    and ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT enum values must: not be
398    used.
399    This also specifies whether shader modules can: declare the
400    code:Geometry capability.
401  * [[features-tessellationShader]] pname:tessellationShader specifies
402    whether tessellation control and evaluation shaders are supported.
403    If this feature is not enabled, the
404    ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
405    ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
406    ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
407    ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, and
408    ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO enum
409    values must: not be used.
410    This also specifies whether shader modules can: declare the
411    code:Tessellation capability.
412  * [[features-sampleRateShading]] pname:sampleRateShading specifies whether
413    <<primsrast-sampleshading,Sample Shading>> and multisample interpolation
414    are supported.
415    If this feature is not enabled, the pname:sampleShadingEnable member of
416    the slink:VkPipelineMultisampleStateCreateInfo structure must: be set to
417    ename:VK_FALSE and the pname:minSampleShading member is ignored.
418    This also specifies whether shader modules can: declare the
419    code:SampleRateShading capability.
420  * [[features-dualSrcBlend]] pname:dualSrcBlend specifies whether blend
421    operations which take two sources are supported.
422    If this feature is not enabled, the ename:VK_BLEND_FACTOR_SRC1_COLOR,
423    ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
424    ename:VK_BLEND_FACTOR_SRC1_ALPHA, and
425    ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA enum values must: not be used
426    as source or destination blending factors.
427    See <<framebuffer-dsb>>.
428  * [[features-logicOp]] pname:logicOp specifies whether logic operations
429    are supported.
430    If this feature is not enabled, the pname:logicOpEnable member of the
431    slink:VkPipelineColorBlendStateCreateInfo structure must: be set to
432    ename:VK_FALSE, and the pname:logicOp member is ignored.
433  * [[features-multiDrawIndirect]] pname:multiDrawIndirect specifies whether
434    multiple draw indirect is supported.
435    If this feature is not enabled, the pname:drawCount parameter to the
436    fname:vkCmdDrawIndirect and fname:vkCmdDrawIndexedIndirect commands
437    must: be 0 or 1.
438    The pname:maxDrawIndirectCount member of the
439    sname:VkPhysicalDeviceLimits structure must: also be 1 if this feature
440    is not supported.
441    See <<limits-maxDrawIndirectCount,maxDrawIndirectCount>>.
442  * [[features-drawIndirectFirstInstance]] pname:drawIndirectFirstInstance
443    specifies whether indirect drawing calls support the pname:firstInstance
444    parameter.
445    If this feature is not enabled, the pname:firstInstance member of all
446    sname:VkDrawIndirectCommand and sname:VkDrawIndexedIndirectCommand
447    structures that are provided to the fname:vkCmdDrawIndirect and
448    fname:vkCmdDrawIndexedIndirect commands must: be 0.
449  * [[features-depthClamp]] pname:depthClamp specifies whether depth
450    clamping is supported.
451    If this feature is not enabled, the pname:depthClampEnable member of the
452    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
453    ename:VK_FALSE.
454    Otherwise, setting pname:depthClampEnable to ename:VK_TRUE will enable
455    depth clamping.
456  * [[features-depthBiasClamp]] pname:depthBiasClamp specifies whether depth
457    bias clamping is supported.
458    If this feature is not enabled, the pname:depthBiasClamp member of the
459    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
460    0.0 unless the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is
461    enabled, and the pname:depthBiasClamp parameter to
462    fname:vkCmdSetDepthBias must: be set to 0.0.
463  * [[features-fillModeNonSolid]] pname:fillModeNonSolid specifies whether
464    point and wireframe fill modes are supported.
465    If this feature is not enabled, the ename:VK_POLYGON_MODE_POINT and
466    ename:VK_POLYGON_MODE_LINE enum values must: not be used.
467  * [[features-depthBounds]] pname:depthBounds specifies whether depth
468    bounds tests are supported.
469    If this feature is not enabled, the pname:depthBoundsTestEnable member
470    of the slink:VkPipelineDepthStencilStateCreateInfo structure must: be
471    set to ename:VK_FALSE.
472    When pname:depthBoundsTestEnable is set to ename:VK_FALSE, the
473    pname:minDepthBounds and pname:maxDepthBounds members of the
474    slink:VkPipelineDepthStencilStateCreateInfo structure are ignored.
475  * [[features-wideLines]] pname:wideLines specifies whether lines with
476    width other than 1.0 are supported.
477    If this feature is not enabled, the pname:lineWidth member of the
478    slink:VkPipelineRasterizationStateCreateInfo structure must: be set to
479    1.0 unless the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is
480    enabled, and the pname:lineWidth parameter to fname:vkCmdSetLineWidth
481    must: be set to 1.0.
482    When this feature is supported, the range and granularity of supported
483    line widths are indicated by the pname:lineWidthRange and
484    pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits
485    structure, respectively.
486  * [[features-largePoints]] pname:largePoints specifies whether points with
487    size greater than 1.0 are supported.
488    If this feature is not enabled, only a point size of 1.0 written by a
489    shader is supported.
490    The range and granularity of supported point sizes are indicated by the
491    pname:pointSizeRange and pname:pointSizeGranularity members of the
492    sname:VkPhysicalDeviceLimits structure, respectively.
493  * [[features-alphaToOne]] pname:alphaToOne specifies whether the
494    implementation is able to replace the alpha value of the fragment shader
495    color output in the <<fragops-covg, Multisample Coverage>> fragment
496    operation.
497    If this feature is not enabled, then the pname:alphaToOneEnable member
498    of the slink:VkPipelineMultisampleStateCreateInfo structure must: be set
499    to ename:VK_FALSE.
500    Otherwise setting pname:alphaToOneEnable to ename:VK_TRUE will enable
501    alpha-to-one behavior.
502  * [[features-multiViewport]] pname:multiViewport specifies whether more
503    than one viewport is supported.
504    If this feature is not enabled:
505  ** The pname:viewportCount and pname:scissorCount members of the
506     slink:VkPipelineViewportStateCreateInfo structure must: be set to 1.
507  ** The pname:firstViewport and pname:viewportCount parameters to the
508     fname:vkCmdSetViewport command must: be set to 0 and 1, respectively.
509  ** The pname:firstScissor and pname:scissorCount parameters to the
510     fname:vkCmdSetScissor command must: be set to 0 and 1, respectively.
511ifdef::VK_NV_scissor_exclusive[]
512  ** The pname:exclusiveScissorCount member of the
513     slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure
514     must: be set to 0 or 1.
515  ** The pname:firstExclusiveScissor and pname:exclusiveScissorCount
516     parameters to the fname:vkCmdSetExclusiveScissorNV command must: be set
517     to 0 and 1, respectively.
518endif::VK_NV_scissor_exclusive[]
519  * [[features-samplerAnisotropy]] pname:samplerAnisotropy specifies whether
520    anisotropic filtering is supported.
521    If this feature is not enabled, the pname:anisotropyEnable member of the
522    slink:VkSamplerCreateInfo structure must: be ename:VK_FALSE.
523  * [[features-textureCompressionETC2]] pname:textureCompressionETC2
524    specifies whether all of the ETC2 and EAC compressed texture formats are
525    supported.
526    If this feature is enabled, then the
527    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
528    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
529    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
530    be supported in pname:optimalTilingFeatures for the following formats:
531+
532  ** ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK
533  ** ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK
534  ** ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
535  ** ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
536  ** ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
537  ** ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
538  ** ename:VK_FORMAT_EAC_R11_UNORM_BLOCK
539  ** ename:VK_FORMAT_EAC_R11_SNORM_BLOCK
540  ** ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK
541  ** ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK
542+
543To query for additional properties, or if the feature is not enabled,
544flink:vkGetPhysicalDeviceFormatProperties and
545flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
546supported properties of individual formats as normal.
547
548  * [[features-textureCompressionASTC_LDR]] pname:textureCompressionASTC_LDR
549    specifies whether all of the ASTC LDR compressed texture formats are
550    supported.
551    If this feature is enabled, then the
552    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
553    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
554    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
555    be supported in pname:optimalTilingFeatures for the following formats:
556+
557  ** ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK
558  ** ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK
559  ** ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK
560  ** ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK
561  ** ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK
562  ** ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK
563  ** ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK
564  ** ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK
565  ** ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK
566  ** ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK
567  ** ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK
568  ** ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK
569  ** ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK
570  ** ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK
571  ** ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK
572  ** ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK
573  ** ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK
574  ** ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK
575  ** ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK
576  ** ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK
577  ** ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK
578  ** ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK
579  ** ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK
580  ** ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK
581  ** ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK
582  ** ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK
583  ** ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK
584  ** ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK
585+
586To query for additional properties, or if the feature is not enabled,
587flink:vkGetPhysicalDeviceFormatProperties and
588flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
589supported properties of individual formats as normal.
590
591  * [[features-textureCompressionBC]] pname:textureCompressionBC specifies
592    whether all of the BC compressed texture formats are supported.
593    If this feature is enabled, then the
594    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
595    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
596    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
597    be supported in pname:optimalTilingFeatures for the following formats:
598+
599  ** ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK
600  ** ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK
601  ** ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK
602  ** ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK
603  ** ename:VK_FORMAT_BC2_UNORM_BLOCK
604  ** ename:VK_FORMAT_BC2_SRGB_BLOCK
605  ** ename:VK_FORMAT_BC3_UNORM_BLOCK
606  ** ename:VK_FORMAT_BC3_SRGB_BLOCK
607  ** ename:VK_FORMAT_BC4_UNORM_BLOCK
608  ** ename:VK_FORMAT_BC4_SNORM_BLOCK
609  ** ename:VK_FORMAT_BC5_UNORM_BLOCK
610  ** ename:VK_FORMAT_BC5_SNORM_BLOCK
611  ** ename:VK_FORMAT_BC6H_UFLOAT_BLOCK
612  ** ename:VK_FORMAT_BC6H_SFLOAT_BLOCK
613  ** ename:VK_FORMAT_BC7_UNORM_BLOCK
614  ** ename:VK_FORMAT_BC7_SRGB_BLOCK
615+
616To query for additional properties, or if the feature is not enabled,
617flink:vkGetPhysicalDeviceFormatProperties and
618flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
619supported properties of individual formats as normal.
620
621  * [[features-occlusionQueryPrecise]] pname:occlusionQueryPrecise specifies
622    whether occlusion queries returning actual sample counts are supported.
623    Occlusion queries are created in a sname:VkQueryPool by specifying the
624    pname:queryType of ename:VK_QUERY_TYPE_OCCLUSION in the
625    slink:VkQueryPoolCreateInfo structure which is passed to
626    fname:vkCreateQueryPool.
627    If this feature is enabled, queries of this type can: enable
628    ename:VK_QUERY_CONTROL_PRECISE_BIT in the pname:flags parameter to
629    fname:vkCmdBeginQuery.
630    If this feature is not supported, the implementation supports only
631    boolean occlusion queries.
632    When any samples are passed, boolean queries will return a non-zero
633    result value, otherwise a result value of zero is returned.
634    When this feature is enabled and ename:VK_QUERY_CONTROL_PRECISE_BIT is
635    set, occlusion queries will report the actual number of samples passed.
636  * [[features-pipelineStatisticsQuery]] pname:pipelineStatisticsQuery
637    specifies whether the pipeline statistics queries are supported.
638    If this feature is not enabled, queries of type
639    ename:VK_QUERY_TYPE_PIPELINE_STATISTICS cannot: be created, and none of
640    the elink:VkQueryPipelineStatisticFlagBits bits can: be set in the
641    pname:pipelineStatistics member of the slink:VkQueryPoolCreateInfo
642    structure.
643  * [[features-vertexPipelineStoresAndAtomics]]
644    pname:vertexPipelineStoresAndAtomics specifies whether storage buffers
645    and images support stores and atomic operations in the vertex,
646    tessellation, and geometry shader stages.
647    If this feature is not enabled, all storage image, storage texel buffer,
648    and storage buffer variables used by these stages in shader modules
649    must: be decorated with the code:NonWritable decoration (or the
650    code:readonly memory qualifier in GLSL).
651  * [[features-fragmentStoresAndAtomics]] pname:fragmentStoresAndAtomics
652    specifies whether storage buffers and images support stores and atomic
653    operations in the fragment shader stage.
654    If this feature is not enabled, all storage image, storage texel buffer,
655    and storage buffer variables used by the fragment stage in shader
656    modules must: be decorated with the code:NonWritable decoration (or the
657    code:readonly memory qualifier in GLSL).
658  * [[features-shaderTessellationAndGeometryPointSize]]
659    pname:shaderTessellationAndGeometryPointSize specifies whether the
660    code:PointSize built-in decoration is available in the tessellation
661    control, tessellation evaluation, and geometry shader stages.
662    If this feature is not enabled, members decorated with the
663    code:PointSize built-in decoration must: not be read from or written to
664    and all points written from a tessellation or geometry shader will have
665    a size of 1.0.
666    This also specifies whether shader modules can: declare the
667    code:TessellationPointSize capability for tessellation control and
668    evaluation shaders, or if the shader modules can: declare the
669    code:GeometryPointSize capability for geometry shaders.
670    An implementation supporting this feature must: also support one or both
671    of the <<features-tessellationShader,pname:tessellationShader>> or
672    <<features-geometryShader,pname:geometryShader>> features.
673  * [[features-shaderImageGatherExtended]] pname:shaderImageGatherExtended
674    specifies whether the extended set of image gather instructions are
675    available in shader code.
676    If this feature is not enabled, the code:OpImage*Gather instructions do
677    not support the code:Offset and code:ConstOffsets operands.
678    This also specifies whether shader modules can: declare the
679    code:ImageGatherExtended capability.
680  * [[features-shaderStorageImageExtendedFormats]]
681    pname:shaderStorageImageExtendedFormats specifies whether all the
682    "`storage image extended formats`" below are supported; if this feature
683    is supported, then the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT must:
684    be supported in pname:optimalTilingFeatures for the following formats:
685+
686  ** ename:VK_FORMAT_R16G16_SFLOAT
687  ** ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32
688  ** ename:VK_FORMAT_R16_SFLOAT
689  ** ename:VK_FORMAT_R16G16B16A16_UNORM
690  ** ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32
691  ** ename:VK_FORMAT_R16G16_UNORM
692  ** ename:VK_FORMAT_R8G8_UNORM
693  ** ename:VK_FORMAT_R16_UNORM
694  ** ename:VK_FORMAT_R8_UNORM
695  ** ename:VK_FORMAT_R16G16B16A16_SNORM
696  ** ename:VK_FORMAT_R16G16_SNORM
697  ** ename:VK_FORMAT_R8G8_SNORM
698  ** ename:VK_FORMAT_R16_SNORM
699  ** ename:VK_FORMAT_R8_SNORM
700  ** ename:VK_FORMAT_R16G16_SINT
701  ** ename:VK_FORMAT_R8G8_SINT
702  ** ename:VK_FORMAT_R16_SINT
703  ** ename:VK_FORMAT_R8_SINT
704  ** ename:VK_FORMAT_A2B10G10R10_UINT_PACK32
705  ** ename:VK_FORMAT_R16G16_UINT
706  ** ename:VK_FORMAT_R8G8_UINT
707  ** ename:VK_FORMAT_R16_UINT
708  ** ename:VK_FORMAT_R8_UINT
709+
710[NOTE]
711.Note
712====
713pname:shaderStorageImageExtendedFormats feature only adds a guarantee of
714format support, which is specified for the whole physical device.
715Therefore enabling or disabling the feature via flink:vkCreateDevice has no
716practical effect.
717
718To query for additional properties, or if the feature is not supported,
719flink:vkGetPhysicalDeviceFormatProperties and
720flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
721supported properties of individual formats, as usual rules allow.
722
723ename:VK_FORMAT_R32G32_UINT, ename:VK_FORMAT_R32G32_SINT, and
724ename:VK_FORMAT_R32G32_SFLOAT from code:StorageImageExtendedFormats SPIR-V
725capability, are already covered by core Vulkan
726<<formats-mandatory-features-32bit,mandatory format support>>.
727====
728
729  * [[features-shaderStorageImageMultisample]]
730    pname:shaderStorageImageMultisample specifies whether multisampled
731    storage images are supported.
732    If this feature is not enabled, images that are created with a
733    pname:usage that includes ename:VK_IMAGE_USAGE_STORAGE_BIT must: be
734    created with pname:samples equal to ename:VK_SAMPLE_COUNT_1_BIT.
735    This also specifies whether shader modules can: declare the
736    code:StorageImageMultisample and code:ImageMSArray capabilities.
737  * [[features-shaderStorageImageReadWithoutFormat]]
738    pname:shaderStorageImageReadWithoutFormat specifies whether storage
739    images require a format qualifier to be specified when reading.
740ifdef::VK_KHR_format_feature_flags2[]
741    pname:shaderStorageImageReadWithoutFormat applies only to formats listed
742    in the <<formats-without-shader-storage-format,storage without format>>
743    list.
744endif::VK_KHR_format_feature_flags2[]
745  * [[features-shaderStorageImageWriteWithoutFormat]]
746    pname:shaderStorageImageWriteWithoutFormat specifies whether storage
747    images require a format qualifier to be specified when writing.
748ifdef::VK_KHR_format_feature_flags2[]
749    pname:shaderStorageImageWriteWithoutFormat applies only to formats
750    listed in the <<formats-without-shader-storage-format,storage without
751    format>> list.
752endif::VK_KHR_format_feature_flags2[]
753  * [[features-shaderUniformBufferArrayDynamicIndexing]]
754    pname:shaderUniformBufferArrayDynamicIndexing specifies whether arrays
755    of uniform buffers can: be indexed by _dynamically uniform_ integer
756    expressions in shader code.
757    If this feature is not enabled, resources with a descriptor type of
758    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
759    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: be indexed only by
760    constant integral expressions when aggregated into arrays in shader
761    code.
762    This also specifies whether shader modules can: declare the
763    code:UniformBufferArrayDynamicIndexing capability.
764  * [[features-shaderSampledImageArrayDynamicIndexing]]
765    pname:shaderSampledImageArrayDynamicIndexing specifies whether arrays of
766    samplers or sampled images can: be indexed by dynamically uniform
767    integer expressions in shader code.
768    If this feature is not enabled, resources with a descriptor type of
769    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
770    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
771    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: be indexed only by constant
772    integral expressions when aggregated into arrays in shader code.
773    This also specifies whether shader modules can: declare the
774    code:SampledImageArrayDynamicIndexing capability.
775  * [[features-shaderStorageBufferArrayDynamicIndexing]]
776    pname:shaderStorageBufferArrayDynamicIndexing specifies whether arrays
777    of storage buffers can: be indexed by dynamically uniform integer
778    expressions in shader code.
779    If this feature is not enabled, resources with a descriptor type of
780    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
781    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: be indexed only by
782    constant integral expressions when aggregated into arrays in shader
783    code.
784    This also specifies whether shader modules can: declare the
785    code:StorageBufferArrayDynamicIndexing capability.
786  * [[features-shaderStorageImageArrayDynamicIndexing]]
787    pname:shaderStorageImageArrayDynamicIndexing specifies whether arrays of
788    storage images can: be indexed by dynamically uniform integer
789    expressions in shader code.
790    If this feature is not enabled, resources with a descriptor type of
791    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: be indexed only by constant
792    integral expressions when aggregated into arrays in shader code.
793    This also specifies whether shader modules can: declare the
794    code:StorageImageArrayDynamicIndexing capability.
795  * [[features-shaderClipDistance]] pname:shaderClipDistance specifies
796    whether clip distances are supported in shader code.
797    If this feature is not enabled, any members decorated with the
798    code:ClipDistance built-in decoration must: not be read from or written
799    to in shader modules.
800    This also specifies whether shader modules can: declare the
801    code:ClipDistance capability.
802  * [[features-shaderCullDistance]] pname:shaderCullDistance specifies
803    whether cull distances are supported in shader code.
804    If this feature is not enabled, any members decorated with the
805    code:CullDistance built-in decoration must: not be read from or written
806    to in shader modules.
807    This also specifies whether shader modules can: declare the
808    code:CullDistance capability.
809  * [[features-shaderFloat64]] pname:shaderFloat64 specifies whether 64-bit
810    floats (doubles) are supported in shader code.
811    If this feature is not enabled, 64-bit floating-point types must: not be
812    used in shader code.
813    This also specifies whether shader modules can: declare the code:Float64
814    capability.
815    Declaring and using 64-bit floats is enabled for all storage classes
816    that SPIR-V allows with the code:Float64 capability.
817  * [[features-shaderInt64]] pname:shaderInt64 specifies whether 64-bit
818    integers (signed and unsigned) are supported in shader code.
819    If this feature is not enabled, 64-bit integer types must: not be used
820    in shader code.
821    This also specifies whether shader modules can: declare the code:Int64
822    capability.
823    Declaring and using 64-bit integers is enabled for all storage classes
824    that SPIR-V allows with the code:Int64 capability.
825  * [[features-shaderInt16]] pname:shaderInt16 specifies whether 16-bit
826    integers (signed and unsigned) are supported in shader code.
827    If this feature is not enabled, 16-bit integer types must: not be used
828    in shader code.
829    This also specifies whether shader modules can: declare the code:Int16
830    capability.
831    However, this only enables a subset of the storage classes that SPIR-V
832    allows for the code:Int16 SPIR-V capability: Declaring and using 16-bit
833    integers in the code:Private,
834ifndef::VK_KHR_workgroup_memory_explicit_layout[]
835    code:Workgroup,
836endif::VK_KHR_workgroup_memory_explicit_layout[]
837ifdef::VK_KHR_workgroup_memory_explicit_layout[]
838    code:Workgroup (for non-Block variables),
839endif::VK_KHR_workgroup_memory_explicit_layout[]
840    and code:Function storage classes is enabled, while declaring them in
841    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
842    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
843    not enabled.
844  * [[features-shaderResourceResidency]] pname:shaderResourceResidency
845    specifies whether image operations that return resource residency
846    information are supported in shader code.
847    If this feature is not enabled, the code:OpImageSparse* instructions
848    must: not be used in shader code.
849    This also specifies whether shader modules can: declare the
850    code:SparseResidency capability.
851    The feature requires at least one of the ptext:sparseResidency* features
852    to be supported.
853  * [[features-shaderResourceMinLod]] pname:shaderResourceMinLod specifies
854    whether image operations specifying the minimum resource LOD are
855    supported in shader code.
856    If this feature is not enabled, the code:MinLod image operand must: not
857    be used in shader code.
858    This also specifies whether shader modules can: declare the code:MinLod
859    capability.
860  * [[features-sparseBinding]] pname:sparseBinding specifies whether
861    resource memory can: be managed at opaque sparse block level instead of
862    at the object level.
863    If this feature is not enabled, resource memory must: be bound only on a
864    per-object basis using the fname:vkBindBufferMemory and
865    fname:vkBindImageMemory commands.
866    In this case, buffers and images must: not be created with
867    ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and
868    ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in the pname:flags member
869    of the slink:VkBufferCreateInfo and slink:VkImageCreateInfo structures,
870    respectively.
871    Otherwise resource memory can: be managed as described in
872    <<sparsememory-sparseresourcefeatures,Sparse Resource Features>>.
873  * [[features-sparseResidencyBuffer]] pname:sparseResidencyBuffer specifies
874    whether the device can: access partially resident buffers.
875    If this feature is not enabled, buffers must: not be created with
876    ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags
877    member of the slink:VkBufferCreateInfo structure.
878  * [[features-sparseResidencyImage2D]] pname:sparseResidencyImage2D
879    specifies whether the device can: access partially resident 2D images
880    with 1 sample per pixel.
881    If this feature is not enabled, images with an pname:imageType of
882    ename:VK_IMAGE_TYPE_2D and pname:samples set to
883    ename:VK_SAMPLE_COUNT_1_BIT must: not be created with
884    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
885    of the slink:VkImageCreateInfo structure.
886  * [[features-sparseResidencyImage3D]] pname:sparseResidencyImage3D
887    specifies whether the device can: access partially resident 3D images.
888    If this feature is not enabled, images with an pname:imageType of
889    ename:VK_IMAGE_TYPE_3D must: not be created with
890    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
891    of the slink:VkImageCreateInfo structure.
892  * [[features-sparseResidency2Samples]] pname:sparseResidency2Samples
893    specifies whether the physical device can: access partially resident 2D
894    images with 2 samples per pixel.
895    If this feature is not enabled, images with an pname:imageType of
896    ename:VK_IMAGE_TYPE_2D and pname:samples set to
897    ename:VK_SAMPLE_COUNT_2_BIT must: not be created with
898    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
899    of the slink:VkImageCreateInfo structure.
900  * [[features-sparseResidency4Samples]] pname:sparseResidency4Samples
901    specifies whether the physical device can: access partially resident 2D
902    images with 4 samples per pixel.
903    If this feature is not enabled, images with an pname:imageType of
904    ename:VK_IMAGE_TYPE_2D and pname:samples set to
905    ename:VK_SAMPLE_COUNT_4_BIT must: not be created with
906    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
907    of the slink:VkImageCreateInfo structure.
908  * [[features-sparseResidency8Samples]] pname:sparseResidency8Samples
909    specifies whether the physical device can: access partially resident 2D
910    images with 8 samples per pixel.
911    If this feature is not enabled, images with an pname:imageType of
912    ename:VK_IMAGE_TYPE_2D and pname:samples set to
913    ename:VK_SAMPLE_COUNT_8_BIT must: not be created with
914    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
915    of the slink:VkImageCreateInfo structure.
916  * [[features-sparseResidency16Samples]] pname:sparseResidency16Samples
917    specifies whether the physical device can: access partially resident 2D
918    images with 16 samples per pixel.
919    If this feature is not enabled, images with an pname:imageType of
920    ename:VK_IMAGE_TYPE_2D and pname:samples set to
921    ename:VK_SAMPLE_COUNT_16_BIT must: not be created with
922    ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member
923    of the slink:VkImageCreateInfo structure.
924  * [[features-sparseResidencyAliased]] pname:sparseResidencyAliased
925    specifies whether the physical device can: correctly access data aliased
926    into multiple locations.
927    If this feature is not enabled, the
928    ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT and
929    ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT enum values must: not be used
930    in pname:flags members of the slink:VkBufferCreateInfo and
931    slink:VkImageCreateInfo structures, respectively.
932  * [[features-variableMultisampleRate]] pname:variableMultisampleRate
933    specifies whether all pipelines that will be bound to a command buffer
934    during a <<renderpass-noattachments, subpass which uses no attachments>>
935    must: have the same value for
936    slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
937    If set to ename:VK_TRUE, the implementation supports variable
938    multisample rates in a subpass which uses no attachments.
939    If set to ename:VK_FALSE, then all pipelines bound in such a subpass
940    must: have the same multisample rate.
941    This has no effect in situations where a subpass uses any attachments.
942  * [[features-inheritedQueries]] pname:inheritedQueries specifies whether a
943    secondary command buffer may: be executed while a query is active.
944
945include::{generated}/validity/structs/VkPhysicalDeviceFeatures.txt[]
946--
947
948ifdef::VK_VERSION_1_2[]
949[open,refpage='VkPhysicalDeviceVulkan11Features',desc='Structure describing the Vulkan 1.1 features that can be supported by an implementation',type='structs']
950--
951The sname:VkPhysicalDeviceVulkan11Features structure is defined as:
952
953include::{generated}/api/structs/VkPhysicalDeviceVulkan11Features.txt[]
954
955This structure describes the following features:
956
957  * pname:sType is the type of this structure.
958  * pname:pNext is `NULL` or a pointer to a structure extending this
959    structure.
960
961:anchor-prefix:
962include::{chapters}/features.txt[tag=VK_KHR_16bit_storage-features]
963include::{chapters}/features.txt[tag=VK_KHR_multiview-features]
964include::{chapters}/features.txt[tag=VK_KHR_variable_pointers-features]
965include::{chapters}/features.txt[tag=VK_KHR_protected_memory-features]
966include::{chapters}/features.txt[tag=VK_KHR_sampler_ycbcr_conversion-features]
967include::{chapters}/features.txt[tag=VK_KHR_shader_draw_parameters-features]
968
969:refpage: VkPhysicalDeviceVulkan11Features
970include::{chapters}/features.txt[tag=features]
971
972include::{generated}/validity/structs/VkPhysicalDeviceVulkan11Features.txt[]
973--
974
975[open,refpage='VkPhysicalDeviceVulkan12Features',desc='Structure describing the Vulkan 1.2 features that can be supported by an implementation',type='structs']
976--
977The sname:VkPhysicalDeviceVulkan12Features structure is defined as:
978
979include::{generated}/api/structs/VkPhysicalDeviceVulkan12Features.txt[]
980
981This structure describes the following features:
982
983  * pname:sType is the type of this structure.
984  * pname:pNext is `NULL` or a pointer to a structure extending this
985    structure.
986
987:anchor-prefix:
988  * [[features-samplerMirrorClampToEdge]] pname:samplerMirrorClampToEdge
989    indicates whether the implementation supports the
990    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.
991    If this feature is not enabled, the
992    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode
993    must: not be used.
994  * [[features-drawIndirectCount]] pname:drawIndirectCount indicates whether
995    the implementation supports the flink:vkCmdDrawIndirectCount and
996    flink:vkCmdDrawIndexedIndirectCount functions.
997    If this feature is not enabled, these functions must: not be used.
998include::{chapters}/features.txt[tag=VK_KHR_8bit_storage-features]
999include::{chapters}/features.txt[tag=VK_KHR_shader_atomic_int64-features]
1000include::{chapters}/features.txt[tag=VK_KHR_shader_float16_int8-features]
1001  * [[features-descriptorIndexing]] pname:descriptorIndexing indicates
1002    whether the implementation supports the minimum set of descriptor
1003    indexing features as described in the <<features-requirements,Feature
1004    Requirements>> section.
1005    Enabling the pname:descriptorIndexing member when flink:vkCreateDevice
1006    is called does not imply the other minimum descriptor indexing features
1007    are also enabled.
1008    Those other descriptor indexing features must: be enabled individually
1009    as needed by the application.
1010include::{chapters}/features.txt[tag=VK_EXT_descriptor_indexing-features]
1011  * [[features-samplerFilterMinmax]] pname:samplerFilterMinmax indicates
1012    whether the implementation supports a minimum set of required formats
1013    supporting min/max filtering as defined by the
1014    <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,pname:filterMinmaxSingleComponentFormats>>
1015    property minimum requirements.
1016    If this feature is not enabled, then no slink:VkSamplerCreateInfo
1017    pname:pNext chain can include a slink:VkSamplerReductionModeCreateInfo
1018    structure.
1019include::{chapters}/features.txt[tag=VK_EXT_scalar_block_layout-features]
1020include::{chapters}/features.txt[tag=VK_KHR_imageless_framebuffer-features]
1021include::{chapters}/features.txt[tag=VK_KHR_uniform_buffer_standard_layout-features]
1022include::{chapters}/features.txt[tag=VK_KHR_shader_subgroup_extended_types-features]
1023include::{chapters}/features.txt[tag=VK_KHR_separate_depth_stencil_layouts-features]
1024include::{chapters}/features.txt[tag=VK_EXT_host_query_reset-features]
1025include::{chapters}/features.txt[tag=VK_KHR_timeline_semaphore-features]
1026include::{chapters}/features.txt[tag=VK_EXT_buffer_device_address-features]
1027include::{chapters}/features.txt[tag=VK_KHR_vulkan_memory_model-features]
1028  * [[features-shaderOutputViewportIndex]] pname:shaderOutputViewportIndex
1029    indicates whether the implementation supports the
1030    code:ShaderViewportIndex SPIR-V capability enabling variables decorated
1031    with the code:ViewportIndex built-in to be exported from vertex or
1032    tessellation evaluation shaders.
1033    If this feature is not enabled, the code:ViewportIndex built-in
1034    decoration must: not be used on outputs in vertex or tessellation
1035    evaluation shaders.
1036  * [[features-shaderOutputLayer]] pname:shaderOutputLayer indicates whether
1037    the implementation supports the code:ShaderLayer SPIR-V capability
1038    enabling variables decorated with the code:Layer built-in to be exported
1039    from vertex or tessellation evaluation shaders.
1040    If this feature is not enabled, the code:Layer built-in decoration must:
1041    not be used on outputs in vertex or tessellation evaluation shaders.
1042  * [[features-subgroupBroadcastDynamicId]] If
1043    pname:subgroupBroadcastDynamicId is ename:VK_TRUE, the "`Id`" operand of
1044    code:OpGroupNonUniformBroadcast can: be dynamically uniform within a
1045    subgroup, and the "`Index`" operand of
1046    code:OpGroupNonUniformQuadBroadcast can: be dynamically uniform within
1047    the derivative group.
1048    If it is ename:VK_FALSE, these operands must: be constants.
1049
1050:refpage: VkPhysicalDeviceVulkan12Features
1051include::{chapters}/features.txt[tag=features]
1052
1053include::{generated}/validity/structs/VkPhysicalDeviceVulkan12Features.txt[]
1054--
1055endif::VK_VERSION_1_2[]
1056
1057ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
1058[open,refpage='VkPhysicalDeviceVariablePointersFeatures',desc='Structure describing variable pointers features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointersFeaturesKHR VkPhysicalDeviceVariablePointerFeaturesKHR']
1059--
1060The sname:VkPhysicalDeviceVariablePointersFeatures structure is defined as:
1061
1062include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeatures.txt[]
1063
1064ifdef::VK_VERSION_1_1[]
1065include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeatures.txt[]
1066endif::VK_VERSION_1_1[]
1067
1068ifdef::VK_KHR_variable_pointers[]
1069or the equivalent
1070
1071include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeaturesKHR.txt[]
1072
1073include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeaturesKHR.txt[]
1074endif::VK_KHR_variable_pointers[]
1075
1076This structure describes the following features:
1077
1078  * pname:sType is the type of this structure.
1079  * pname:pNext is `NULL` or a pointer to a structure extending this
1080    structure.
1081
1082// Must have preceding whitespace
1083ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1084ifndef::VK_VERSION_1_2[:anchor-prefix:]
1085// tag::VK_KHR_variable_pointers-features[]
1086  * [[{anchor-prefix}features-variablePointersStorageBuffer]]
1087    pname:variablePointersStorageBuffer specifies whether the implementation
1088    supports the SPIR-V code:VariablePointersStorageBuffer capability.
1089    When this feature is not enabled, shader modules must: not declare the
1090    `SPV_KHR_variable_pointers` extension or the
1091    code:VariablePointersStorageBuffer capability.
1092  * [[{anchor-prefix}features-variablePointers]] pname:variablePointers
1093    specifies whether the implementation supports the SPIR-V
1094    code:VariablePointers capability.
1095    When this feature is not enabled, shader modules must: not declare the
1096    code:VariablePointers capability.
1097// end::VK_KHR_variable_pointers-features[]
1098
1099:refpage: VkPhysicalDeviceVariablePointersFeatures
1100include::{chapters}/features.txt[tag=features]
1101
1102.Valid Usage
1103****
1104  * [[VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431]]
1105    If pname:variablePointers is enabled then
1106    pname:variablePointersStorageBuffer must: also be enabled
1107****
1108
1109include::{generated}/validity/structs/VkPhysicalDeviceVariablePointersFeatures.txt[]
1110--
1111endif::VK_VERSION_1_1,VK_KHR_variable_pointers[]
1112
1113ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
1114[open,refpage='VkPhysicalDeviceMultiviewFeatures',desc='Structure describing multiview features that can be supported by an implementation',type='structs']
1115--
1116The sname:VkPhysicalDeviceMultiviewFeatures structure is defined as:
1117
1118include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeatures.txt[]
1119
1120ifdef::VK_KHR_multiview[]
1121or the equivalent
1122
1123include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeaturesKHR.txt[]
1124endif::VK_KHR_multiview[]
1125
1126This structure describes the following features:
1127
1128  * pname:sType is the type of this structure.
1129  * pname:pNext is `NULL` or a pointer to a structure extending this
1130    structure.
1131
1132// Must have preceding whitespace
1133ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1134ifndef::VK_VERSION_1_2[:anchor-prefix:]
1135// tag::VK_KHR_multiview-features[]
1136  * [[{anchor-prefix}features-multiview]] pname:multiview specifies whether
1137    the implementation supports multiview rendering within a render pass.
1138    If this feature is not enabled, the view mask of each subpass must:
1139    always be zero.
1140  * [[{anchor-prefix}features-multiview-gs]] pname:multiviewGeometryShader
1141    specifies whether the implementation supports multiview rendering within
1142    a render pass, with <<geometry,geometry shaders>>.
1143    If this feature is not enabled, then a pipeline compiled against a
1144    subpass with a non-zero view mask must: not include a geometry shader.
1145  * [[{anchor-prefix}features-multiview-tess]]
1146    pname:multiviewTessellationShader specifies whether the implementation
1147    supports multiview rendering within a render pass, with
1148    <<tessellation,tessellation shaders>>.
1149    If this feature is not enabled, then a pipeline compiled against a
1150    subpass with a non-zero view mask must: not include any tessellation
1151    shaders.
1152// end::VK_KHR_multiview-features[]
1153
1154:refpage: VkPhysicalDeviceMultiviewFeatures
1155include::{chapters}/features.txt[tag=features]
1156
1157.Valid Usage
1158****
1159  * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580]]
1160    If pname:multiviewGeometryShader is enabled then pname:multiview must:
1161    also be enabled
1162  * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581]]
1163    If pname:multiviewTessellationShader is enabled then pname:multiview
1164    must: also be enabled
1165****
1166
1167include::{generated}/validity/structs/VkPhysicalDeviceMultiviewFeatures.txt[]
1168--
1169endif::VK_VERSION_1_1,VK_KHR_multiview[]
1170
1171ifdef::VK_EXT_shader_atomic_float[]
1172[open,refpage='VkPhysicalDeviceShaderAtomicFloatFeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float',type='structs']
1173--
1174The slink:VkPhysicalDeviceShaderAtomicFloatFeaturesEXT structure is defined
1175as:
1176
1177include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.txt[]
1178
1179This structure describes the following features:
1180
1181  * pname:sType is the type of this structure.
1182  * pname:pNext is `NULL` or a pointer to a structure extending this
1183    structure.
1184
1185// tag::VK_EXT_shader_atomic_float-features[]
1186  * [[features-shaderBufferFloat32Atomics]] pname:shaderBufferFloat32Atomics
1187    indicates whether shaders can: perform 32-bit floating-point load, store
1188    and exchange atomic operations on storage buffers.
1189  * [[features-shaderBufferFloat32AtomicAdd]]
1190    pname:shaderBufferFloat32AtomicAdd indicates whether shaders can:
1191    perform 32-bit floating-point add atomic operations on storage buffers.
1192  * [[features-shaderBufferFloat64Atomics]] pname:shaderBufferFloat64Atomics
1193    indicates whether shaders can: perform 64-bit floating-point load, store
1194    and exchange atomic operations on storage buffers.
1195  * [[features-shaderBufferFloat64AtomicAdd]]
1196    pname:shaderBufferFloat64AtomicAdd indicates whether shaders can:
1197    perform 64-bit floating-point add atomic operations on storage buffers.
1198  * [[features-shaderSharedFloat32Atomics]] pname:shaderSharedFloat32Atomics
1199    indicates whether shaders can: perform 32-bit floating-point load, store
1200    and exchange atomic operations on shared memory.
1201  * [[features-shaderSharedFloat32AtomicAdd]]
1202    pname:shaderSharedFloat32AtomicAdd indicates whether shaders can:
1203    perform 32-bit floating-point add atomic operations on shared memory.
1204  * [[features-shaderSharedFloat64Atomics]] pname:shaderSharedFloat64Atomics
1205    indicates whether shaders can: perform 64-bit floating-point load, store
1206    and exchange atomic operations on shared memory.
1207  * [[features-shaderSharedFloat64AtomicAdd]]
1208    pname:shaderSharedFloat64AtomicAdd indicates whether shaders can:
1209    perform 64-bit floating-point add atomic operations on shared memory.
1210  * [[features-shaderImageFloat32Atomics]] pname:shaderImageFloat32Atomics
1211    indicates whether shaders can: perform 32-bit floating-point load, store
1212    and exchange atomic image operations.
1213  * [[features-shaderImageFloat32AtomicAdd]]
1214    pname:shaderImageFloat32AtomicAdd indicates whether shaders can: perform
1215    32-bit floating-point add atomic image operations.
1216  * [[features-sparseImageFloat32Atomics]] pname:sparseImageFloat32Atomics
1217    indicates whether 32-bit floating-point load, store and exchange atomic
1218    operations can: be used on sparse images.
1219  * [[features-sparseImageFloat32AtomicAdd]]
1220    pname:sparseImageFloat32AtomicAdd indicates whether 32-bit
1221    floating-point add atomic operations can: be used on sparse images.
1222// end::VK_EXT_shader_atomic_float-features[]
1223
1224:refpage: VkPhysicalDeviceShaderAtomicFloatFeaturesEXT
1225include::{chapters}/features.txt[tag=features]
1226
1227include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.txt[]
1228--
1229endif::VK_EXT_shader_atomic_float[]
1230
1231ifdef::VK_EXT_shader_atomic_float2[]
1232[open,refpage='VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float2',type='structs']
1233--
1234The slink:VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT structure is defined
1235as:
1236
1237include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.txt[]
1238
1239This structure describes the following features:
1240
1241  * pname:sType is the type of this structure.
1242  * pname:pNext is `NULL` or a pointer to a structure extending this
1243    structure.
1244
1245// tag::VK_EXT_shader_atomic_float2-features[]
1246  * [[features-shaderBufferFloat16Atomics]] pname:shaderBufferFloat16Atomics
1247    indicates whether shaders can: perform 16-bit floating-point load,
1248    store, and exchange atomic operations on storage buffers.
1249  * [[features-shaderBufferFloat16AtomicAdd]]
1250    pname:shaderBufferFloat16AtomicAdd indicates whether shaders can:
1251    perform 16-bit floating-point add atomic operations on storage buffers.
1252  * [[features-shaderBufferFloat16AtomicMinMax]]
1253    pname:shaderBufferFloat16AtomicMinMax indicates whether shaders can:
1254    perform 16-bit floating-point min and max atomic operations on storage
1255    buffers.
1256  * [[features-shaderBufferFloat32AtomicMinMax]]
1257    pname:shaderBufferFloat32AtomicMinMax indicates whether shaders can:
1258    perform 32-bit floating-point min and max atomic operations on storage
1259    buffers.
1260  * [[features-shaderBufferFloat64AtomicMinMax]]
1261    pname:shaderBufferFloat64AtomicMinMax indicates whether shaders can:
1262    perform 64-bit floating-point min and max atomic operations on storage
1263    buffers.
1264  * [[features-shaderSharedFloat16Atomics]] pname:shaderSharedFloat16Atomics
1265    indicates whether shaders can: perform 16-bit floating-point load, store
1266    and exchange atomic operations on shared memory.
1267  * [[features-shaderSharedFloat16AtomicAdd]]
1268    pname:shaderSharedFloat16AtomicAdd indicates whether shaders can:
1269    perform 16-bit floating-point add atomic operations on shared memory.
1270  * [[features-shaderSharedFloat16AtomicMinMax]]
1271    pname:shaderSharedFloat16AtomicMinMax indicates whether shaders can:
1272    perform 16-bit floating-point min and max atomic operations on shared
1273    memory.
1274  * [[features-shaderSharedFloat32AtomicMinMax]]
1275    pname:shaderSharedFloat32AtomicMinMax indicates whether shaders can:
1276    perform 32-bit floating-point min and max atomic operations on shared
1277    memory.
1278  * [[features-shaderSharedFloat64AtomicMinMax]]
1279    pname:shaderSharedFloat64AtomicMinMax indicates whether shaders can:
1280    perform 64-bit floating-point min and max atomic operations on shared
1281    memory.
1282  * [[features-shaderImageFloat32AtomicMinMax]]
1283    pname:shaderImageFloat32AtomicMinMax indicates whether shaders can:
1284    perform 32-bit floating-point min and max atomic image operations.
1285  * [[features-sparseImageFloat32AtomicMinMax]]
1286    pname:sparseImageFloat32AtomicMinMax indicates whether 32-bit
1287    floating-point min and max atomic operations can: be used on sparse
1288    images.
1289// end::VK_EXT_shader_atomic_float2-features[]
1290
1291:refpage: VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT
1292include::{chapters}/features.txt[tag=features]
1293
1294include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.txt[]
1295--
1296endif::VK_EXT_shader_atomic_float2[]
1297
1298ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
1299[open,refpage='VkPhysicalDeviceShaderAtomicInt64Features',desc='Structure describing features supported by VK_KHR_shader_atomic_int64',type='structs',alias='VkPhysicalDeviceShaderAtomicInt64FeaturesKHR']
1300--
1301The slink:VkPhysicalDeviceShaderAtomicInt64Features structure is defined as:
1302
1303include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64Features.txt[]
1304
1305ifdef::VK_KHR_shader_atomic_int64[]
1306or the equivalent
1307
1308include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.txt[]
1309endif::VK_KHR_shader_atomic_int64[]
1310
1311This structure describes the following features:
1312
1313  * pname:sType is the type of this structure.
1314  * pname:pNext is `NULL` or a pointer to a structure extending this
1315    structure.
1316
1317// Must have preceding whitespace
1318ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1319ifndef::VK_VERSION_1_2[:anchor-prefix:]
1320// tag::VK_KHR_shader_atomic_int64-features[]
1321  * [[{anchor-prefix}features-shaderBufferInt64Atomics]]
1322    pname:shaderBufferInt64Atomics indicates whether shaders can: perform
1323    64-bit unsigned and signed integer atomic operations on buffers.
1324  * [[{anchor-prefix}features-shaderSharedInt64Atomics]]
1325    pname:shaderSharedInt64Atomics indicates whether shaders can: perform
1326    64-bit unsigned and signed integer atomic operations on shared memory.
1327// end::VK_KHR_shader_atomic_int64-features[]
1328
1329:refpage: VkPhysicalDeviceShaderAtomicInt64Features
1330include::{chapters}/features.txt[tag=features]
1331
1332include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicInt64Features.txt[]
1333--
1334endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
1335
1336ifdef::VK_EXT_shader_image_atomic_int64[]
1337[open,refpage='VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_image_atomic_int64',type='structs']
1338--
1339The slink:VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT structure is
1340defined as:
1341
1342include::{generated}/api/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.txt[]
1343
1344This structure describes the following features:
1345
1346  * pname:sType is the type of this structure.
1347  * pname:pNext is `NULL` or a pointer to a structure extending this
1348    structure.
1349  * [[features-shaderImageInt64Atomics]] pname:shaderImageInt64Atomics
1350    indicates whether shaders can: support 64-bit unsigned and signed
1351    integer atomic operations on images.
1352  * [[features-sparseImageInt64Atomics]] pname:sparseImageInt64Atomics
1353    indicates whether 64-bit integer atomics can: be used on sparse images.
1354
1355:refpage: VkPhysicalDeviceShaderAtomicInt64FeaturesEXT
1356include::{chapters}/features.txt[tag=features]
1357
1358include::{generated}/validity/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.txt[]
1359--
1360endif::VK_EXT_shader_image_atomic_int64[]
1361
1362ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[]
1363[open,refpage='VkPhysicalDevice8BitStorageFeatures',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs',alias='VkPhysicalDevice8BitStorageFeaturesKHR']
1364--
1365The slink:VkPhysicalDevice8BitStorageFeatures structure is defined as:
1366
1367include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeatures.txt[]
1368
1369ifdef::VK_KHR_8bit_storage[]
1370or the equivalent
1371
1372include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[]
1373endif::VK_KHR_8bit_storage[]
1374
1375This structure describes the following features:
1376
1377  * pname:sType is the type of this structure.
1378  * pname:pNext is `NULL` or a pointer to a structure extending this
1379    structure.
1380
1381// Must have preceding whitespace
1382ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1383ifndef::VK_VERSION_1_2[:anchor-prefix:]
1384// tag::VK_KHR_8bit_storage-features[]
1385  * [[{anchor-prefix}features-storageBuffer8BitAccess]]
1386    pname:storageBuffer8BitAccess indicates whether objects in the
1387    code:StorageBuffer,
1388ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,]
1389ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1390    or code:PhysicalStorageBuffer
1391endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1392    storage class with the code:Block decoration can: have 8-bit integer
1393    members.
1394    If this feature is not enabled, 8-bit integer members must: not be used
1395    in such objects.
1396    This also indicates whether shader modules can: declare the
1397    code:StorageBuffer8BitAccess capability.
1398  * [[{anchor-prefix}features-uniformAndStorageBuffer8BitAccess]]
1399    pname:uniformAndStorageBuffer8BitAccess indicates whether objects in the
1400    code:Uniform storage class with the code:Block decoration can: have
1401    8-bit integer members.
1402    If this feature is not enabled, 8-bit integer members must: not be used
1403    in such objects.
1404    This also indicates whether shader modules can: declare the
1405    code:UniformAndStorageBuffer8BitAccess capability.
1406  * [[{anchor-prefix}features-storagePushConstant8]]
1407    pname:storagePushConstant8 indicates whether objects in the
1408    code:PushConstant storage class can: have 8-bit integer members.
1409    If this feature is not enabled, 8-bit integer members must: not be used
1410    in such objects.
1411    This also indicates whether shader modules can: declare the
1412    code:StoragePushConstant8 capability.
1413// end::VK_KHR_8bit_storage-features[]
1414
1415:refpage: VkPhysicalDevice8BitStorageFeatures
1416include::{chapters}/features.txt[tag=features]
1417
1418include::{generated}/validity/structs/VkPhysicalDevice8BitStorageFeatures.txt[]
1419--
1420endif::VK_VERSION_1_2,VK_KHR_8bit_storage[]
1421
1422ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
1423[open,refpage='VkPhysicalDevice16BitStorageFeatures',desc='Structure describing features supported by VK_KHR_16bit_storage',type='structs']
1424--
1425The slink:VkPhysicalDevice16BitStorageFeatures structure is defined as:
1426
1427include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeatures.txt[]
1428
1429ifdef::VK_KHR_16bit_storage[]
1430or the equivalent
1431
1432include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeaturesKHR.txt[]
1433endif::VK_KHR_16bit_storage[]
1434
1435This structure describes the following features:
1436
1437  * pname:sType is the type of this structure.
1438  * pname:pNext is `NULL` or a pointer to a structure extending this
1439    structure.
1440
1441// Must have preceding whitespace
1442ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1443ifndef::VK_VERSION_1_2[:anchor-prefix:]
1444// tag::VK_KHR_16bit_storage-features[]
1445  * [[{anchor-prefix}features-storageBuffer16BitAccess]]
1446    pname:storageBuffer16BitAccess specifies whether objects in the
1447    code:StorageBuffer,
1448ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,]
1449ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1450    or code:PhysicalStorageBuffer
1451endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[]
1452    storage class with the code:Block decoration can: have 16-bit integer
1453    and 16-bit floating-point members.
1454    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1455    members must: not be used in such objects.
1456    This also specifies whether shader modules can: declare the
1457    code:StorageBuffer16BitAccess capability.
1458  * [[{anchor-prefix}features-uniformAndStorageBuffer16BitAccess]]
1459    pname:uniformAndStorageBuffer16BitAccess specifies whether objects in
1460    the code:Uniform storage class with the code:Block decoration can: have
1461    16-bit integer and 16-bit floating-point members.
1462    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1463    members must: not be used in such objects.
1464    This also specifies whether shader modules can: declare the
1465    code:UniformAndStorageBuffer16BitAccess capability.
1466  * [[{anchor-prefix}features-storagePushConstant16]]
1467    pname:storagePushConstant16 specifies whether objects in the
1468    code:PushConstant storage class can: have 16-bit integer and 16-bit
1469    floating-point members.
1470    If this feature is not enabled, 16-bit integer or floating-point members
1471    must: not be used in such objects.
1472    This also specifies whether shader modules can: declare the
1473    code:StoragePushConstant16 capability.
1474  * [[{anchor-prefix}features-storageInputOutput16]]
1475    pname:storageInputOutput16 specifies whether objects in the code:Input
1476    and code:Output storage classes can: have 16-bit integer and 16-bit
1477    floating-point members.
1478    If this feature is not enabled, 16-bit integer or 16-bit floating-point
1479    members must: not be used in such objects.
1480    This also specifies whether shader modules can: declare the
1481    code:StorageInputOutput16 capability.
1482// end::VK_KHR_16bit_storage-features[]
1483
1484:refpage: VkPhysicalDevice16BitStorageFeatures
1485include::{chapters}/features.txt[tag=features]
1486
1487include::{generated}/validity/structs/VkPhysicalDevice16BitStorageFeatures.txt[]
1488--
1489endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
1490
1491ifdef::VK_VERSION_1_2,VK_KHR_shader_float16_int8[]
1492[open,refpage='VkPhysicalDeviceShaderFloat16Int8Features',desc='Structure describing features supported by VK_KHR_shader_float16_int8',type='structs',alias='VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR']
1493--
1494The sname:VkPhysicalDeviceShaderFloat16Int8Features structure is defined as:
1495
1496include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8Features.txt[]
1497
1498ifdef::VK_KHR_shader_float16_int8[]
1499or the equivalent
1500
1501include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.txt[]
1502
1503include::{generated}/api/structs/VkPhysicalDeviceFloat16Int8FeaturesKHR.txt[]
1504endif::VK_KHR_shader_float16_int8[]
1505
1506This structure describes the following features:
1507
1508  * pname:sType is the type of this structure.
1509  * pname:pNext is `NULL` or a pointer to a structure extending this
1510    structure.
1511
1512// Must have preceding whitespace
1513ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1514ifndef::VK_VERSION_1_2[:anchor-prefix:]
1515// tag::VK_KHR_shader_float16_int8-features[]
1516  * [[{anchor-prefix}features-shaderFloat16]] pname:shaderFloat16 indicates
1517    whether 16-bit floats (halfs) are supported in shader code.
1518    This also indicates whether shader modules can: declare the code:Float16
1519    capability.
1520    However, this only enables a subset of the storage classes that SPIR-V
1521    allows for the code:Float16 SPIR-V capability: Declaring and using
1522    16-bit floats in the code:Private,
1523ifndef::VK_KHR_workgroup_memory_explicit_layout[]
1524    code:Workgroup,
1525endif::VK_KHR_workgroup_memory_explicit_layout[]
1526ifdef::VK_KHR_workgroup_memory_explicit_layout[]
1527    code:Workgroup (for non-Block variables),
1528endif::VK_KHR_workgroup_memory_explicit_layout[]
1529    and code:Function storage classes is enabled, while declaring them in
1530    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
1531    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
1532    not enabled.
1533  * [[{anchor-prefix}features-shaderInt8]] pname:shaderInt8 indicates
1534    whether 8-bit integers (signed and unsigned) are supported in shader
1535    code.
1536    This also indicates whether shader modules can: declare the code:Int8
1537    capability.
1538    However, this only enables a subset of the storage classes that SPIR-V
1539    allows for the code:Int8 SPIR-V capability: Declaring and using 8-bit
1540    integers in the code:Private,
1541ifndef::VK_KHR_workgroup_memory_explicit_layout[]
1542    code:Workgroup,
1543endif::VK_KHR_workgroup_memory_explicit_layout[]
1544ifdef::VK_KHR_workgroup_memory_explicit_layout[]
1545    code:Workgroup (for non-Block variables),
1546endif::VK_KHR_workgroup_memory_explicit_layout[]
1547    and code:Function storage classes is enabled, while declaring them in
1548    the interface storage classes (e.g., code:UniformConstant, code:Uniform,
1549    code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is
1550    not enabled.
1551// end::VK_KHR_shader_float16_int8-features[]
1552
1553:refpage: VkPhysicalDeviceShaderFloat16Int8Features
1554include::{chapters}/features.txt[tag=features]
1555
1556include::{generated}/validity/structs/VkPhysicalDeviceShaderFloat16Int8Features.txt[]
1557--
1558endif::VK_VERSION_1_2,VK_KHR_shader_float16_int8[]
1559
1560ifdef::VK_KHR_shader_clock[]
1561[open,refpage='VkPhysicalDeviceShaderClockFeaturesKHR',desc='Structure describing features supported by VK_KHR_shader_clock',type='structs']
1562--
1563The slink:VkPhysicalDeviceShaderClockFeaturesKHR structure is defined as:
1564
1565include::{generated}/api/structs/VkPhysicalDeviceShaderClockFeaturesKHR.txt[]
1566
1567This structure describes the following features:
1568
1569  * pname:sType is the type of this structure.
1570  * pname:pNext is `NULL` or a pointer to a structure extending this
1571    structure.
1572  * [[features-shaderSubgroupClock]] pname:shaderSubgroupClock indicates
1573    whether shaders can: perform code:Subgroup scoped clock reads.
1574  * [[features-shaderDeviceClock]] pname:shaderDeviceClock indicates whether
1575    shaders can: perform code:Device scoped clock reads.
1576
1577:refpage: VkPhysicalDeviceShaderClockFeaturesKHR
1578include::{chapters}/features.txt[tag=features]
1579
1580include::{generated}/validity/structs/VkPhysicalDeviceShaderClockFeaturesKHR.txt[]
1581--
1582endif::VK_KHR_shader_clock[]
1583
1584ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1585[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeatures',desc='Structure describing {YCbCr} conversion features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR']
1586--
1587The sname:VkPhysicalDeviceSamplerYcbcrConversionFeatures structure is
1588defined as:
1589
1590include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.txt[]
1591
1592ifdef::VK_KHR_sampler_ycbcr_conversion[]
1593or the equivalent
1594
1595include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.txt[]
1596endif::VK_KHR_sampler_ycbcr_conversion[]
1597
1598This structure describes the following feature:
1599
1600  * pname:sType is the type of this structure.
1601  * pname:pNext is `NULL` or a pointer to a structure extending this
1602    structure.
1603
1604// Must have preceding whitespace
1605ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1606ifndef::VK_VERSION_1_2[:anchor-prefix:]
1607// tag::VK_KHR_sampler_ycbcr_conversion-features[]
1608  * [[{anchor-prefix}features-samplerYcbcrConversion]]
1609    pname:samplerYcbcrConversion specifies whether the implementation
1610    supports <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>>.
1611    If pname:samplerYcbcrConversion is ename:VK_FALSE, sampler {YCbCr}
1612    conversion is not supported, and samplers using sampler {YCbCr}
1613    conversion must: not be used.
1614// end::VK_KHR_sampler_ycbcr_conversion-features[]
1615
1616:refpage: VkPhysicalDeviceSamplerYcbcrConversionFeatures
1617include::{chapters}/features.txt[tag=features]
1618
1619include::{generated}/validity/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.txt[]
1620--
1621endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
1622
1623ifdef::VK_VERSION_1_1[]
1624[open,refpage='VkPhysicalDeviceProtectedMemoryFeatures',desc='Structure describing protected memory features that can be supported by an implementation',type='structs']
1625--
1626The sname:VkPhysicalDeviceProtectedMemoryFeatures structure is defined as:
1627
1628include::{generated}/api/structs/VkPhysicalDeviceProtectedMemoryFeatures.txt[]
1629
1630This structure describes the following feature:
1631
1632  * pname:sType is the type of this structure.
1633  * pname:pNext is `NULL` or a pointer to a structure extending this
1634    structure.
1635
1636// Must have preceding whitespace
1637ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1638ifndef::VK_VERSION_1_2[:anchor-prefix:]
1639// tag::VK_KHR_protected_memory-features[]
1640  * [[{anchor-prefix}features-protectedMemory]] pname:protectedMemory
1641    specifies whether protected memory is supported.
1642// end::VK_KHR_protected_memory-features[]
1643
1644:refpage: VkPhysicalDeviceProtectedMemoryFeatures
1645include::{chapters}/features.txt[tag=features]
1646
1647include::{generated}/validity/structs/VkPhysicalDeviceProtectedMemoryFeatures.txt[]
1648--
1649endif::VK_VERSION_1_1[]
1650
1651ifdef::VK_EXT_blend_operation_advanced[]
1652[open,refpage='VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',desc='Structure describing advanced blending features that can be supported by an implementation',type='structs']
1653--
1654The sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is
1655defined as:
1656
1657include::{generated}/api/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[]
1658
1659This structure describes the following feature:
1660
1661  * pname:sType is the type of this structure.
1662  * pname:pNext is `NULL` or a pointer to a structure extending this
1663    structure.
1664  * [[features-advancedBlendCoherentOperations]]
1665    pname:advancedBlendCoherentOperations specifies whether blending using
1666    <<framebuffer-blend-advanced,advanced blend operations>> is guaranteed
1667    to execute atomically and in <<drawing-primitive-order, primitive
1668    order>>.
1669    If this is ename:VK_TRUE,
1670    ename:VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT is treated the
1671    same as ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, and advanced blending
1672    needs no additional synchronization over basic blending.
1673    If this is ename:VK_FALSE, then memory dependencies are required to
1674    guarantee order between two advanced blending operations that occur on
1675    the same sample.
1676
1677:refpage: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT
1678include::{chapters}/features.txt[tag=features]
1679
1680include::{generated}/validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[]
1681--
1682endif::VK_EXT_blend_operation_advanced[]
1683
1684ifdef::VK_EXT_conditional_rendering[]
1685[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']
1686--
1687The sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is
1688defined as:
1689
1690include::{generated}/api/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[]
1691
1692This structure describes the following features:
1693
1694  * pname:sType is the type of this structure.
1695  * pname:pNext is `NULL` or a pointer to a structure extending this
1696    structure.
1697  * [[features-conditionalRendering]] pname:conditionalRendering specifies
1698    whether conditional rendering is supported.
1699  * [[features-inheritedConditionalRendering]]
1700    pname:inheritedConditionalRendering specifies whether a secondary
1701    command buffer can: be executed while conditional rendering is active in
1702    the primary command buffer.
1703
1704:refpage: VkPhysicalDeviceConditionalRenderingFeaturesEXT
1705include::{chapters}/features.txt[tag=features]
1706
1707include::{generated}/validity/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[]
1708--
1709endif::VK_EXT_conditional_rendering[]
1710
1711ifdef::VK_VERSION_1_1[]
1712[open,refpage='VkPhysicalDeviceShaderDrawParametersFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderDrawParameterFeatures']
1713--
1714The sname:VkPhysicalDeviceShaderDrawParametersFeatures structure is defined
1715as:
1716
1717include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[]
1718
1719include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParameterFeatures.txt[]
1720
1721This structure describes the following feature:
1722
1723  * pname:sType is the type of this structure.
1724  * pname:pNext is `NULL` or a pointer to a structure extending this
1725    structure.
1726
1727// Must have preceding whitespace
1728ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1729ifndef::VK_VERSION_1_2[:anchor-prefix:]
1730// tag::VK_KHR_shader_draw_parameters-features[]
1731  * [[{anchor-prefix}features-shaderDrawParameters]]
1732    pname:shaderDrawParameters specifies whether the implementation supports
1733    the SPIR-V code:DrawParameters capability.
1734    When this feature is not enabled, shader modules must: not declare the
1735    `SPV_KHR_shader_draw_parameters` extension or the code:DrawParameters
1736    capability.
1737// end::VK_KHR_shader_draw_parameters-features[]
1738
1739:refpage: VkPhysicalDeviceShaderDrawParametersFeatures
1740include::{chapters}/features.txt[tag=features]
1741
1742include::{generated}/validity/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[]
1743--
1744endif::VK_VERSION_1_1[]
1745
1746ifdef::VK_NV_mesh_shader[]
1747[open,refpage='VkPhysicalDeviceMeshShaderFeaturesNV',desc='Structure describing mesh shading features that can be supported by an implementation',type='structs']
1748--
1749The sname:VkPhysicalDeviceMeshShaderFeaturesNV structure is defined as:
1750
1751include::{generated}/api/structs/VkPhysicalDeviceMeshShaderFeaturesNV.txt[]
1752
1753This structure describes the following features:
1754
1755  * pname:sType is the type of this structure.
1756  * pname:pNext is `NULL` or a pointer to a structure extending this
1757    structure.
1758  * [[features-taskShader]] pname:taskShader indicates whether the task
1759    shader stage is supported.
1760  * [[features-meshShader]] pname:meshShader indicates whether the mesh
1761    shader stage is supported.
1762
1763:refpage: VkPhysicalDeviceMeshShaderFeaturesNV
1764include::{chapters}/features.txt[tag=features]
1765
1766include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderFeaturesNV.txt[]
1767--
1768endif::VK_NV_mesh_shader[]
1769
1770ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
1771[open,refpage='VkPhysicalDeviceDescriptorIndexingFeatures',desc='Structure describing descriptor indexing features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceDescriptorIndexingFeaturesEXT']
1772--
1773The sname:VkPhysicalDeviceDescriptorIndexingFeatures structure is defined
1774as:
1775
1776include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeatures.txt[]
1777
1778ifdef::VK_EXT_descriptor_indexing[]
1779or the equivalent
1780
1781include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.txt[]
1782endif::VK_EXT_descriptor_indexing[]
1783
1784This structure describes the following features:
1785
1786  * pname:sType is the type of this structure.
1787  * pname:pNext is `NULL` or a pointer to a structure extending this
1788    structure.
1789
1790// Must have preceding whitespace
1791ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
1792ifndef::VK_VERSION_1_2[:anchor-prefix:]
1793// tag::VK_EXT_descriptor_indexing-features[]
1794  * [[{anchor-prefix}features-shaderInputAttachmentArrayDynamicIndexing]]
1795    pname:shaderInputAttachmentArrayDynamicIndexing indicates whether arrays
1796    of input attachments can: be indexed by dynamically uniform integer
1797    expressions in shader code.
1798    If this feature is not enabled, resources with a descriptor type of
1799    ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: be indexed only by
1800    constant integral expressions when aggregated into arrays in shader
1801    code.
1802    This also indicates whether shader modules can: declare the
1803    code:InputAttachmentArrayDynamicIndexing capability.
1804  * [[{anchor-prefix}features-shaderUniformTexelBufferArrayDynamicIndexing]]
1805    pname:shaderUniformTexelBufferArrayDynamicIndexing indicates whether
1806    arrays of uniform texel buffers can: be indexed by dynamically uniform
1807    integer expressions in shader code.
1808    If this feature is not enabled, resources with a descriptor type of
1809    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: be indexed only by
1810    constant integral expressions when aggregated into arrays in shader
1811    code.
1812    This also indicates whether shader modules can: declare the
1813    code:UniformTexelBufferArrayDynamicIndexing capability.
1814  * [[{anchor-prefix}features-shaderStorageTexelBufferArrayDynamicIndexing]]
1815    pname:shaderStorageTexelBufferArrayDynamicIndexing indicates whether
1816    arrays of storage texel buffers can: be indexed by dynamically uniform
1817    integer expressions in shader code.
1818    If this feature is not enabled, resources with a descriptor type of
1819    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: be indexed only by
1820    constant integral expressions when aggregated into arrays in shader
1821    code.
1822    This also indicates whether shader modules can: declare the
1823    code:StorageTexelBufferArrayDynamicIndexing capability.
1824  * [[{anchor-prefix}features-shaderUniformBufferArrayNonUniformIndexing]]
1825    pname:shaderUniformBufferArrayNonUniformIndexing indicates whether
1826    arrays of uniform buffers can: be indexed by non-uniform integer
1827    expressions in shader code.
1828    If this feature is not enabled, resources with a descriptor type of
1829    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
1830    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: not be indexed by
1831    non-uniform integer expressions when aggregated into arrays in shader
1832    code.
1833    This also indicates whether shader modules can: declare the
1834    code:UniformBufferArrayNonUniformIndexing capability.
1835  * [[{anchor-prefix}features-shaderSampledImageArrayNonUniformIndexing]]
1836    pname:shaderSampledImageArrayNonUniformIndexing indicates whether arrays
1837    of samplers or sampled images can: be indexed by non-uniform integer
1838    expressions in shader code.
1839    If this feature is not enabled, resources with a descriptor type of
1840    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
1841    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
1842    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: not be indexed by
1843    non-uniform integer expressions when aggregated into arrays in shader
1844    code.
1845    This also indicates whether shader modules can: declare the
1846    code:SampledImageArrayNonUniformIndexing capability.
1847  * [[{anchor-prefix}features-shaderStorageBufferArrayNonUniformIndexing]]
1848    pname:shaderStorageBufferArrayNonUniformIndexing indicates whether
1849    arrays of storage buffers can: be indexed by non-uniform integer
1850    expressions in shader code.
1851    If this feature is not enabled, resources with a descriptor type of
1852    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
1853    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: not be indexed by
1854    non-uniform integer expressions when aggregated into arrays in shader
1855    code.
1856    This also indicates whether shader modules can: declare the
1857    code:StorageBufferArrayNonUniformIndexing capability.
1858  * [[{anchor-prefix}features-shaderStorageImageArrayNonUniformIndexing]]
1859    pname:shaderStorageImageArrayNonUniformIndexing indicates whether arrays
1860    of storage images can: be indexed by non-uniform integer expressions in
1861    shader code.
1862    If this feature is not enabled, resources with a descriptor type of
1863    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: not be indexed by
1864    non-uniform integer expressions when aggregated into arrays in shader
1865    code.
1866    This also indicates whether shader modules can: declare the
1867    code:StorageImageArrayNonUniformIndexing capability.
1868  * [[{anchor-prefix}features-shaderInputAttachmentArrayNonUniformIndexing]]
1869    pname:shaderInputAttachmentArrayNonUniformIndexing indicates whether
1870    arrays of input attachments can: be indexed by non-uniform integer
1871    expressions in shader code.
1872    If this feature is not enabled, resources with a descriptor type of
1873    ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: not be indexed by
1874    non-uniform integer expressions when aggregated into arrays in shader
1875    code.
1876    This also indicates whether shader modules can: declare the
1877    code:InputAttachmentArrayNonUniformIndexing capability.
1878  * [[{anchor-prefix}features-shaderUniformTexelBufferArrayNonUniformIndexing]]
1879    pname:shaderUniformTexelBufferArrayNonUniformIndexing indicates whether
1880    arrays of uniform texel buffers can: be indexed by non-uniform integer
1881    expressions in shader code.
1882    If this feature is not enabled, resources with a descriptor type of
1883    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: not be indexed by
1884    non-uniform integer expressions when aggregated into arrays in shader
1885    code.
1886    This also indicates whether shader modules can: declare the
1887    code:UniformTexelBufferArrayNonUniformIndexing capability.
1888  * [[{anchor-prefix}features-shaderStorageTexelBufferArrayNonUniformIndexing]]
1889    pname:shaderStorageTexelBufferArrayNonUniformIndexing indicates whether
1890    arrays of storage texel buffers can: be indexed by non-uniform integer
1891    expressions in shader code.
1892    If this feature is not enabled, resources with a descriptor type of
1893    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: not be indexed by
1894    non-uniform integer expressions when aggregated into arrays in shader
1895    code.
1896    This also indicates whether shader modules can: declare the
1897    code:StorageTexelBufferArrayNonUniformIndexing capability.
1898  * [[{anchor-prefix}features-descriptorBindingUniformBufferUpdateAfterBind]]
1899    pname:descriptorBindingUniformBufferUpdateAfterBind indicates whether
1900    the implementation supports updating uniform buffer descriptors after a
1901    set is bound.
1902    If this feature is not enabled,
1903    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1904    ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER.
1905  * [[{anchor-prefix}features-descriptorBindingSampledImageUpdateAfterBind]]
1906    pname:descriptorBindingSampledImageUpdateAfterBind indicates whether the
1907    implementation supports updating sampled image descriptors after a set
1908    is bound.
1909    If this feature is not enabled,
1910    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1911    ename:VK_DESCRIPTOR_TYPE_SAMPLER,
1912    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or
1913    ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.
1914  * [[{anchor-prefix}features-descriptorBindingStorageImageUpdateAfterBind]]
1915    pname:descriptorBindingStorageImageUpdateAfterBind indicates whether the
1916    implementation supports updating storage image descriptors after a set
1917    is bound.
1918    If this feature is not enabled,
1919    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1920    ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.
1921  * [[{anchor-prefix}features-descriptorBindingStorageBufferUpdateAfterBind]]
1922    pname:descriptorBindingStorageBufferUpdateAfterBind indicates whether
1923    the implementation supports updating storage buffer descriptors after a
1924    set is bound.
1925    If this feature is not enabled,
1926    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1927    ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER.
1928  * [[{anchor-prefix}features-descriptorBindingUniformTexelBufferUpdateAfterBind]]
1929    pname:descriptorBindingUniformTexelBufferUpdateAfterBind indicates
1930    whether the implementation supports updating uniform texel buffer
1931    descriptors after a set is bound.
1932    If this feature is not enabled,
1933    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1934    ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.
1935  * [[{anchor-prefix}features-descriptorBindingStorageTexelBufferUpdateAfterBind]]
1936    pname:descriptorBindingStorageTexelBufferUpdateAfterBind indicates
1937    whether the implementation supports updating storage texel buffer
1938    descriptors after a set is bound.
1939    If this feature is not enabled,
1940    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
1941    ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.
1942  * [[{anchor-prefix}features-descriptorBindingUpdateUnusedWhilePending]]
1943    pname:descriptorBindingUpdateUnusedWhilePending indicates whether the
1944    implementation supports updating descriptors while the set is in use.
1945    If this feature is not enabled,
1946    ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT must: not be
1947    used.
1948  * [[{anchor-prefix}features-descriptorBindingPartiallyBound]]
1949    pname:descriptorBindingPartiallyBound indicates whether the
1950    implementation supports statically using a descriptor set binding in
1951    which some descriptors are not valid.
1952    If this feature is not enabled,
1953    ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT must: not be used.
1954  * [[{anchor-prefix}features-descriptorBindingVariableDescriptorCount]]
1955    pname:descriptorBindingVariableDescriptorCount indicates whether the
1956    implementation supports descriptor sets with a variable-sized last
1957    binding.
1958    If this feature is not enabled,
1959    ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT must: not be
1960    used.
1961  * [[{anchor-prefix}features-runtimeDescriptorArray]]
1962    pname:runtimeDescriptorArray indicates whether the implementation
1963    supports the SPIR-V code:RuntimeDescriptorArray capability.
1964    If this feature is not enabled, descriptors must: not be declared in
1965    runtime arrays.
1966// end::VK_EXT_descriptor_indexing-features[]
1967
1968:refpage: VkPhysicalDeviceDescriptorIndexingFeatures
1969include::{chapters}/features.txt[tag=features]
1970
1971include::{generated}/validity/structs/VkPhysicalDeviceDescriptorIndexingFeatures.txt[]
1972--
1973endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
1974
1975ifdef::VK_EXT_vertex_attribute_divisor[]
1976[open,refpage='VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT',desc='Structure describing if fetching of vertex attribute may be repeated for instanced rendering',type='structs']
1977--
1978The sname:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT structure is
1979defined as:
1980
1981include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.txt[]
1982
1983This structure describes the following features:
1984
1985  * pname:sType is the type of this structure.
1986  * pname:pNext is `NULL` or a pointer to a structure extending this
1987    structure.
1988  * [[features-vertexAttributeInstanceRateDivisor]]
1989    pname:vertexAttributeInstanceRateDivisor specifies whether vertex
1990    attribute fetching may be repeated in case of instanced rendering.
1991  * [[features-vertexAttributeInstanceRateZeroDivisor]]
1992    pname:vertexAttributeInstanceRateZeroDivisor specifies whether a zero
1993    value for sname:VkVertexInputBindingDivisorDescriptionEXT::pname:divisor
1994    is supported.
1995
1996:refpage: VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
1997include::{chapters}/features.txt[tag=features]
1998
1999include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.txt[]
2000--
2001endif::VK_EXT_vertex_attribute_divisor[]
2002
2003ifdef::VK_EXT_astc_decode_mode[]
2004[open,refpage='VkPhysicalDeviceASTCDecodeFeaturesEXT',desc='Structure describing ASTC decode mode features',type='structs']
2005--
2006The sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is defined as:
2007
2008include::{generated}/api/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[]
2009
2010This structure describes the following feature:
2011
2012  * pname:sType is the type of this structure.
2013  * pname:pNext is `NULL` or a pointer to a structure extending this
2014    structure.
2015  * [[features-astc-decodeModeSharedExponent]]
2016    pname:decodeModeSharedExponent indicates whether the implementation
2017    supports decoding ASTC compressed formats to
2018    ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision.
2019
2020:refpage: VkPhysicalDeviceASTCDecodeFeaturesEXT
2021include::{chapters}/features.txt[tag=features]
2022
2023include::{generated}/validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[]
2024--
2025endif::VK_EXT_astc_decode_mode[]
2026
2027ifdef::VK_EXT_transform_feedback[]
2028[open,refpage='VkPhysicalDeviceTransformFeedbackFeaturesEXT',desc='Structure describing transform feedback features that can be supported by an implementation',type='structs']
2029--
2030The sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined
2031as:
2032
2033include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[]
2034
2035This structure describes the following features:
2036
2037  * pname:sType is the type of this structure.
2038  * pname:pNext is `NULL` or a pointer to a structure extending this
2039    structure.
2040  * [[features-transformFeedback]] pname:transformFeedback indicates whether
2041    the implementation supports transform feedback and shader modules can:
2042    declare the code:TransformFeedback capability.
2043  * [[features-geometryStreams]] pname:geometryStreams indicates whether the
2044    implementation supports the code:GeometryStreams SPIR-V capability.
2045
2046:refpage: VkPhysicalDeviceTransformFeedbackFeaturesEXT
2047include::{chapters}/features.txt[tag=features]
2048
2049include::{generated}/validity/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[]
2050--
2051endif::VK_EXT_transform_feedback[]
2052
2053ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2054[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeatures',desc='Structure describing features supported by the memory model',type='structs']
2055--
2056The sname:VkPhysicalDeviceVulkanMemoryModelFeatures structure is defined as:
2057
2058include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.txt[]
2059
2060ifdef::VK_KHR_vulkan_memory_model[]
2061or the equivalent
2062
2063include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[]
2064endif::VK_KHR_vulkan_memory_model[]
2065
2066This structure describes the following features:
2067
2068  * pname:sType is the type of this structure.
2069  * pname:pNext is `NULL` or a pointer to a structure extending this
2070    structure.
2071
2072// Must have preceding whitespace
2073ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2074ifndef::VK_VERSION_1_2[:anchor-prefix:]
2075// tag::VK_KHR_vulkan_memory_model-features[]
2076  * [[{anchor-prefix}features-vulkanMemoryModel]] pname:vulkanMemoryModel
2077    indicates whether the Vulkan Memory Model is supported, as defined in
2078    <<memory-model,Vulkan Memory Model>>.
2079    This also indicates whether shader modules can: declare the
2080    code:VulkanMemoryModel capability.
2081  * [[{anchor-prefix}features-vulkanMemoryModelDeviceScope]]
2082    pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory
2083    Model can use code:Device scope synchronization.
2084    This also indicates whether shader modules can: declare the
2085    code:VulkanMemoryModelDeviceScope capability.
2086  * [[{anchor-prefix}features-vulkanMemoryModelAvailabilityVisibilityChains]]
2087    pname:vulkanMemoryModelAvailabilityVisibilityChains indicates whether
2088    the Vulkan Memory Model can use <<memory-model-availability-visibility,
2089    availability and visibility chains>> with more than one element.
2090// end::VK_KHR_vulkan_memory_model-features[]
2091
2092:refpage: VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
2093include::{chapters}/features.txt[tag=features]
2094
2095include::{generated}/validity/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.txt[]
2096--
2097endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2098
2099ifdef::VK_EXT_inline_uniform_block[]
2100[open,refpage='VkPhysicalDeviceInlineUniformBlockFeaturesEXT',desc='Structure describing inline uniform block features that can be supported by an implementation',type='structs']
2101--
2102The sname:VkPhysicalDeviceInlineUniformBlockFeaturesEXT structure is defined
2103as:
2104
2105include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.txt[]
2106
2107This structure describes the following features:
2108
2109  * pname:sType is the type of this structure.
2110  * pname:pNext is `NULL` or a pointer to a structure extending this
2111    structure.
2112  * [[features-inlineUniformBlock]] pname:inlineUniformBlock indicates
2113    whether the implementation supports inline uniform block descriptors.
2114    If this feature is not enabled,
2115    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT must: not be used.
2116  * [[features-descriptorBindingInlineUniformBlockUpdateAfterBind]]
2117    pname:descriptorBindingInlineUniformBlockUpdateAfterBind
2118ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2119    is ename:VK_FALSE and reserved for future use.
2120endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2121ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2122    indicates whether the implementation supports updating inline uniform
2123    block descriptors after a set is bound.
2124    If this feature is not enabled,
2125    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2126    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT.
2127endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2128
2129:refpage: VkPhysicalDeviceInlineUniformBlockFeaturesEXT
2130include::{chapters}/features.txt[tag=features]
2131
2132include::{generated}/validity/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.txt[]
2133--
2134endif::VK_EXT_inline_uniform_block[]
2135
2136ifdef::VK_NV_representative_fragment_test[]
2137[open,refpage='VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV',desc='Structure describing the representative fragment test features that can be supported by an implementation',type='structs']
2138--
2139The sname:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure is
2140defined as:
2141
2142include::{generated}/api/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.txt[]
2143
2144This structure describes the following feature:
2145
2146  * pname:sType is the type of this structure.
2147  * pname:pNext is `NULL` or a pointer to a structure extending this
2148    structure.
2149  * [[features-representativeFragmentTest]] pname:representativeFragmentTest
2150    indicates whether the implementation supports the representative
2151    fragment test.
2152    See <<fragops-rep-frag-test, Representative Fragment Test>>.
2153
2154:refpage: VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
2155include::{chapters}/features.txt[tag=features]
2156
2157include::{generated}/validity/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.txt[]
2158--
2159endif::VK_NV_representative_fragment_test[]
2160
2161ifdef::VK_NV_scissor_exclusive[]
2162[open,refpage='VkPhysicalDeviceExclusiveScissorFeaturesNV',desc='Structure describing exclusive scissor features that can be supported by an implementation',type='structs']
2163--
2164The sname:VkPhysicalDeviceExclusiveScissorFeaturesNV structure is defined
2165as:
2166
2167include::{generated}/api/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.txt[]
2168
2169This structure describes the following feature:
2170
2171  * pname:sType is the type of this structure.
2172  * pname:pNext is `NULL` or a pointer to a structure extending this
2173    structure.
2174  * [[features-exclusiveScissor]] pname:exclusiveScissor indicates that the
2175    implementation supports the exclusive scissor test.
2176
2177See <<fragops-exclusive-scissor,Exclusive Scissor Test>> for more
2178information.
2179
2180:refpage: VkPhysicalDeviceExclusiveScissorFeaturesNV
2181include::{chapters}/features.txt[tag=features]
2182
2183include::{generated}/validity/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.txt[]
2184--
2185endif::VK_NV_scissor_exclusive[]
2186
2187ifdef::VK_NV_corner_sampled_image[]
2188[open,refpage='VkPhysicalDeviceCornerSampledImageFeaturesNV',desc='Structure describing corner sampled image features that can be supported by an implementation',type='structs']
2189--
2190The sname:VkPhysicalDeviceCornerSampledImageFeaturesNV structure is defined
2191as:
2192
2193include::{generated}/api/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.txt[]
2194
2195This structure describes the following feature:
2196
2197  * pname:sType is the type of this structure.
2198  * pname:pNext is `NULL` or a pointer to a structure extending this
2199    structure.
2200  * [[features-cornersampledimage]] pname:cornerSampledImage specifies
2201    whether images can be created with a
2202    slink:VkImageCreateInfo::pname:flags containing
2203    ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV.
2204    See <<resources-images-corner-sampled,Corner-Sampled Images>>.
2205
2206:refpage: VkPhysicalDeviceCornerSampledImageFeaturesNV
2207include::{chapters}/features.txt[tag=features]
2208
2209include::{generated}/validity/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.txt[]
2210--
2211endif::VK_NV_corner_sampled_image[]
2212
2213ifdef::VK_NV_compute_shader_derivatives[]
2214[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesNV',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs']
2215--
2216The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure is
2217defined as:
2218
2219include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.txt[]
2220
2221This structure describes the following features:
2222
2223  * pname:sType is the type of this structure.
2224  * pname:pNext is `NULL` or a pointer to a structure extending this
2225    structure.
2226  * [[features-computeDerivativeGroupQuads]]
2227    pname:computeDerivativeGroupQuads indicates that the implementation
2228    supports the code:ComputeDerivativeGroupQuadsNV SPIR-V capability.
2229  * [[features-computeDerivativeGroupLinear]]
2230    pname:computeDerivativeGroupLinear indicates that the implementation
2231    supports the code:ComputeDerivativeGroupLinearNV SPIR-V capability.
2232
2233See <<shaders-scope-quad, Quad shader scope>> for more information.
2234
2235:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures.
2236include::{chapters}/features.txt[tag=features]
2237
2238include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.txt[]
2239--
2240endif::VK_NV_compute_shader_derivatives[]
2241
2242ifdef::VK_NV_fragment_shader_barycentric[]
2243[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs']
2244--
2245The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV structure is
2246defined as:
2247
2248include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[]
2249
2250This structure describes the following feature:
2251
2252  * pname:sType is the type of this structure.
2253  * pname:pNext is `NULL` or a pointer to a structure extending this
2254    structure.
2255  * [[features-fragmentShaderBarycentric]] pname:fragmentShaderBarycentric
2256    indicates that the implementation supports the code:BaryCoordNV and
2257    code:BaryCoordNoPerspNV SPIR-V fragment shader built-ins and supports
2258    the code:PerVertexNV SPIR-V decoration on fragment shader input
2259    variables.
2260
2261See <<primsrast-barycentric,Barycentric Interpolation>> for more
2262information.
2263
2264:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV
2265include::{chapters}/features.txt[tag=features]
2266
2267include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[]
2268--
2269endif::VK_NV_fragment_shader_barycentric[]
2270
2271ifdef::VK_NV_shader_image_footprint[]
2272[open,refpage='VkPhysicalDeviceShaderImageFootprintFeaturesNV',desc='Structure describing shader image footprint features that can be supported by an implementation',type='structs']
2273--
2274The sname:VkPhysicalDeviceShaderImageFootprintFeaturesNV structure is
2275defined as:
2276
2277include::{generated}/api/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.txt[]
2278
2279This structure describes the following feature:
2280
2281  * pname:sType is the type of this structure.
2282  * pname:pNext is `NULL` or a pointer to a structure extending this
2283    structure.
2284  * [[features-imageFootprint]] pname:imageFootprint specifies whether the
2285    implementation supports the code:ImageFootprintNV SPIR-V capability.
2286
2287See <<textures-footprint,Texel Footprint Evaluation>> for more information.
2288
2289:refpage: VkPhysicalDeviceShaderImageFootprintFeaturesNV
2290include::{chapters}/features.txt[tag=features]
2291
2292include::{generated}/validity/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.txt[]
2293--
2294endif::VK_NV_shader_image_footprint[]
2295
2296ifdef::VK_NV_shading_rate_image[]
2297[open,refpage='VkPhysicalDeviceShadingRateImageFeaturesNV',desc='Structure describing shading rate image features that can be supported by an implementation',type='structs']
2298--
2299The sname:VkPhysicalDeviceShadingRateImageFeaturesNV structure is defined
2300as:
2301
2302include::{generated}/api/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.txt[]
2303
2304This structure describes the following features:
2305
2306  * pname:sType is the type of this structure.
2307  * pname:pNext is `NULL` or a pointer to a structure extending this
2308    structure.
2309  * [[features-shadingRateImage]] pname:shadingRateImage indicates that the
2310    implementation supports the use of a shading rate image to derive an
2311    effective shading rate for fragment processing.
2312    It also indicates that the implementation supports the
2313    code:ShadingRateNV SPIR-V execution mode.
2314  * [[features-shadingRateCoarseSampleOrder]]
2315    pname:shadingRateCoarseSampleOrder indicates that the implementation
2316    supports a user-configurable ordering of coverage samples in fragments
2317    larger than one pixel.
2318
2319See <<primsrast-shading-rate-image, Shading Rate Image>> for more
2320information.
2321
2322:refpage: VkPhysicalDeviceShadingRateImageFeaturesNV
2323include::{chapters}/features.txt[tag=features]
2324
2325include::{generated}/validity/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.txt[]
2326--
2327endif::VK_NV_shading_rate_image[]
2328
2329ifdef::VK_EXT_fragment_density_map[]
2330[open,refpage='VkPhysicalDeviceFragmentDensityMapFeaturesEXT',desc='Structure describing fragment density map features that can be supported by an implementation',type='structs']
2331--
2332The sname:VkPhysicalDeviceFragmentDensityMapFeaturesEXT structure is defined
2333as:
2334
2335include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.txt[]
2336
2337This structure describes the following features:
2338
2339  * pname:sType is the type of this structure.
2340  * pname:pNext is `NULL` or a pointer to a structure extending this
2341    structure.
2342  * [[features-fragmentDensityMap]] pname:fragmentDensityMap specifies
2343    whether the implementation supports render passes with a fragment
2344    density map attachment.
2345    If this feature is not enabled and the pname:pNext chain of
2346    slink:VkRenderPassCreateInfo includes a
2347    slink:VkRenderPassFragmentDensityMapCreateInfoEXT structure,
2348    pname:fragmentDensityMapAttachment must: be ename:VK_ATTACHMENT_UNUSED.
2349  * [[features-fragmentDensityMapDynamic]] pname:fragmentDensityMapDynamic
2350    specifies whether the implementation supports dynamic fragment density
2351    map image views.
2352    If this feature is not enabled,
2353    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT must:
2354    not be included in slink:VkImageViewCreateInfo::pname:flags.
2355  * [[features-fragmentDensityMapNonSubsampledImages]]
2356    pname:fragmentDensityMapNonSubsampledImages specifies whether the
2357    implementation supports regular non-subsampled image attachments with
2358    fragment density map render passes.
2359    If this feature is not enabled, render passes with a
2360    <<renderpass-fragmentdensitymapattachment,fragment density map
2361    attachment>> must: only have <<samplers-subsamplesampler,subsampled
2362    attachments>> bound.
2363
2364:refpage: VkPhysicalDeviceFragmentDensityMapFeaturesEXT
2365include::{chapters}/features.txt[tag=features]
2366
2367include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.txt[]
2368--
2369endif::VK_EXT_fragment_density_map[]
2370
2371ifdef::VK_EXT_fragment_density_map2[]
2372[open,refpage='VkPhysicalDeviceFragmentDensityMap2FeaturesEXT',desc='Structure describing additional fragment density map features that can be supported by an implementation',type='structs']
2373--
2374The sname:VkPhysicalDeviceFragmentDensityMap2FeaturesEXT structure is
2375defined as:
2376
2377include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.txt[]
2378
2379This structure describes the following features:
2380
2381  * pname:sType is the type of this structure.
2382  * pname:pNext is `NULL` or a pointer to a structure extending this
2383    structure.
2384  * [[features-fragmentDensityMapDeferred]] pname:fragmentDensityMapDeferred
2385    specifies whether the implementation supports deferred reads of fragment
2386    density map image views.
2387    If this feature is not enabled,
2388    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT must:
2389    not be included in sname:VkImageViewCreateInfo::pname:flags.
2390
2391:refpage: VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
2392include::{chapters}/features.txt[tag=features]
2393
2394include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.txt[]
2395--
2396endif::VK_EXT_fragment_density_map2[]
2397
2398ifdef::VK_HUAWEI_invocation_mask[]
2399[open,refpage='VkPhysicalDeviceInvocationMaskFeaturesHUAWEI',desc='Structure describing invocation mask features that can be supported by an implementation',type='structs']
2400--
2401The sname:VkPhysicalDeviceInvocationMaskFeaturesHUAWEI structure is defined
2402as:
2403
2404include::{generated}/api/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.txt[]
2405
2406This structure describes the following features:
2407
2408  * pname:sType is the type of this structure.
2409  * pname:pNext is `NULL` or a pointer to a structure extending this
2410    structure.
2411  * [[features-invocationMask]] pname:invocationMask indicates that the
2412    implementation supports the use of an invocation mask image to optimize
2413    the ray dispatch.
2414
2415:refpage: VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
2416include::{chapters}/features.txt[tag=features]
2417
2418include::{generated}/validity/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.txt[]
2419--
2420endif::VK_HUAWEI_invocation_mask[]
2421
2422ifdef::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2423[open,refpage='VkPhysicalDeviceScalarBlockLayoutFeatures',desc='Structure indicating support for scalar block layouts',type='structs',alias='VkPhysicalDeviceScalarBlockLayoutFeaturesEXT']
2424--
2425The sname:VkPhysicalDeviceScalarBlockLayoutFeatures structure is defined as:
2426
2427include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.txt[]
2428
2429ifdef::VK_EXT_scalar_block_layout[]
2430or the equivalent
2431
2432include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.txt[]
2433endif::VK_EXT_scalar_block_layout[]
2434
2435This structure describes the following feature:
2436
2437  * pname:sType is the type of this structure.
2438  * pname:pNext is `NULL` or a pointer to a structure extending this
2439    structure.
2440
2441// Must have preceding whitespace
2442ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2443ifndef::VK_VERSION_1_2[:anchor-prefix:]
2444// tag::VK_EXT_scalar_block_layout-features[]
2445  * [[{anchor-prefix}features-scalarBlockLayout]] pname:scalarBlockLayout
2446    indicates that the implementation supports the layout of resource blocks
2447    in shaders using <<interfaces-alignment-requirements, scalar
2448    alignment>>.
2449// end::VK_EXT_scalar_block_layout-features[]
2450
2451:refpage: VkPhysicalDeviceScalarBlockLayoutFeatures
2452include::{chapters}/features.txt[tag=features]
2453
2454include::{generated}/validity/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.txt[]
2455--
2456endif::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2457
2458ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2459[open,refpage='VkPhysicalDeviceUniformBufferStandardLayoutFeatures',desc='Structure indicating support for std430-like packing in uniform buffers',type='structs',alias='VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR']
2460--
2461The sname:VkPhysicalDeviceUniformBufferStandardLayoutFeatures structure is
2462defined as:
2463
2464include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.txt[]
2465
2466ifdef::VK_KHR_uniform_buffer_standard_layout[]
2467or the equivalent
2468
2469include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.txt[]
2470endif::VK_KHR_uniform_buffer_standard_layout[]
2471
2472This structure describes the following feature:
2473
2474  * pname:sType is the type of this structure.
2475  * pname:pNext is `NULL` or a pointer to a structure extending this
2476    structure.
2477
2478// Must have preceding whitespace
2479ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2480ifndef::VK_VERSION_1_2[:anchor-prefix:]
2481// tag::VK_KHR_uniform_buffer_standard_layout-features[]
2482  * [[{anchor-prefix}features-uniformBufferStandardLayout]]
2483    pname:uniformBufferStandardLayout indicates that the implementation
2484    supports the same layouts for uniform buffers as for storage and other
2485    kinds of buffers.
2486    See <<interfaces-resources-standard-layout,Standard Buffer Layout>>.
2487// end::VK_KHR_uniform_buffer_standard_layout-features[]
2488
2489:refpage: VkPhysicalDeviceUniformBufferStandardLayoutFeatures
2490include::{chapters}/features.txt[tag=features]
2491
2492include::{generated}/validity/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.txt[]
2493--
2494endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2495
2496ifdef::VK_EXT_depth_clip_enable[]
2497[open,refpage='VkPhysicalDeviceDepthClipEnableFeaturesEXT',desc='Structure indicating support for explicit enable of depth clip',type='structs']
2498--
2499The sname:VkPhysicalDeviceDepthClipEnableFeaturesEXT structure is defined
2500as:
2501
2502include::{generated}/api/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.txt[]
2503
2504This structure describes the following feature:
2505
2506  * pname:sType is the type of this structure.
2507  * pname:pNext is `NULL` or a pointer to a structure extending this
2508    structure.
2509  * [[features-depthClipEnable]] pname:depthClipEnable indicates that the
2510    implementation supports setting the depth clipping operation explicitly
2511    via the slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT
2512    pipeline state.
2513    Otherwise depth clipping is only enabled when
2514    slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is
2515    set to ename:VK_FALSE.
2516
2517:refpage: VkPhysicalDeviceDepthClipEnableFeaturesEXT
2518include::{chapters}/features.txt[tag=features]
2519
2520include::{generated}/validity/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.txt[]
2521--
2522endif::VK_EXT_depth_clip_enable[]
2523
2524ifdef::VK_EXT_memory_priority[]
2525[open,refpage='VkPhysicalDeviceMemoryPriorityFeaturesEXT',desc='Structure describing memory priority features that can be supported by an implementation',type='structs']
2526--
2527The sname:VkPhysicalDeviceMemoryPriorityFeaturesEXT structure is defined as:
2528
2529include::{generated}/api/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.txt[]
2530
2531This structure describes the following feature:
2532
2533  * pname:sType is the type of this structure.
2534  * pname:pNext is `NULL` or a pointer to a structure extending this
2535    structure.
2536  * [[features-memoryPriority]] pname:memoryPriority indicates that the
2537    implementation supports memory priorities specified at memory allocation
2538    time via slink:VkMemoryPriorityAllocateInfoEXT.
2539
2540:refpage: VkPhysicalDeviceMemoryPriorityFeaturesEXT
2541include::{chapters}/features.txt[tag=features]
2542
2543include::{generated}/validity/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.txt[]
2544--
2545endif::VK_EXT_memory_priority[]
2546
2547ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2548[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeatures',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferDeviceAddressFeaturesKHR']
2549--
2550The sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure is defined
2551as:
2552
2553include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.txt[]
2554
2555ifdef::VK_KHR_buffer_device_address[]
2556or the equivalent
2557
2558include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.txt[]
2559endif::VK_KHR_buffer_device_address[]
2560
2561This structure describes the following features:
2562
2563  * pname:sType is the type of this structure.
2564  * pname:pNext is `NULL` or a pointer to a structure extending this
2565    structure.
2566
2567// Must have preceding whitespace
2568ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2569ifndef::VK_VERSION_1_2[:anchor-prefix:]
2570// tag::VK_EXT_buffer_device_address-features[]
2571  * [[{anchor-prefix}features-bufferDeviceAddress]]
2572    pname:bufferDeviceAddress indicates that the implementation supports
2573    accessing buffer memory in shaders as storage buffers via an address
2574    queried from flink:vkGetBufferDeviceAddress.
2575  * [[{anchor-prefix}features-bufferDeviceAddressCaptureReplay]]
2576    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2577    supports saving and reusing buffer and device addresses, e.g. for trace
2578    capture and replay.
2579  * [[{anchor-prefix}features-bufferDeviceAddressMultiDevice]]
2580    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2581    supports the pname:bufferDeviceAddress
2582ifndef::VK_KHR_ray_tracing_pipeline+VK_KHR_ray_query[feature]
2583ifdef::VK_KHR_ray_tracing_pipeline[]
2584ifndef::VK_KHR_ray_query[]
2585    and pname:rayTracingPipeline features
2586endif::VK_KHR_ray_query[]
2587ifdef::VK_KHR_ray_query[]
2588    , pname:rayTracingPipeline and pname:rayQuery features
2589endif::VK_KHR_ray_query[]
2590endif::VK_KHR_ray_tracing_pipeline[]
2591ifndef::VK_KHR_ray_tracing_pipeline[]
2592ifdef::VK_KHR_ray_query[]
2593    and pname:rayQuery features
2594endif::VK_KHR_ray_query[]
2595endif::VK_KHR_ray_tracing_pipeline[]
2596    for logical devices created with multiple physical devices.
2597    If this feature is not supported, buffer
2598ifdef::VK_KHR_acceleration_structure[]
2599    and acceleration structure
2600endif::VK_KHR_acceleration_structure[]
2601    addresses must: not be queried on a logical device created with more
2602    than one physical device.
2603// end::VK_EXT_buffer_device_address-features[]
2604
2605[NOTE]
2606.Note
2607====
2608pname:bufferDeviceAddressMultiDevice exists to allow certain legacy
2609platforms to be able to support pname:bufferDeviceAddress without needing to
2610support shared GPU virtual addresses for multi-device configurations.
2611====
2612
2613See flink:vkGetBufferDeviceAddress for more information.
2614
2615:refpage: VkPhysicalDeviceBufferDeviceAddressFeatures
2616include::{chapters}/features.txt[tag=features]
2617
2618include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.txt[]
2619--
2620endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2621
2622ifdef::VK_EXT_buffer_device_address[]
2623[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferAddressFeaturesEXT']
2624--
2625The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
2626defined as:
2627
2628include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[]
2629
2630include::{generated}/api/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.txt[]
2631
2632This structure describes the following features:
2633
2634  * pname:sType is the type of this structure.
2635  * pname:pNext is `NULL` or a pointer to a structure extending this
2636    structure.
2637  * [[features-bufferDeviceAddressEXT]] pname:bufferDeviceAddress indicates
2638    that the implementation supports accessing buffer memory in shaders as
2639    storage buffers via an address queried from
2640    flink:vkGetBufferDeviceAddressEXT.
2641  * [[features-bufferDeviceAddressCaptureReplayEXT]]
2642    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2643    supports saving and reusing buffer addresses, e.g. for trace capture and
2644    replay.
2645  * [[features-bufferDeviceAddressMultiDeviceEXT]]
2646    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2647    supports the pname:bufferDeviceAddress feature for logical devices
2648    created with multiple physical devices.
2649    If this feature is not supported, buffer addresses must: not be queried
2650    on a logical device created with more than one physical device.
2651
2652:refpage: VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
2653include::{chapters}/features.txt[tag=features]
2654
2655ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2656[NOTE]
2657.Note
2658====
2659The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure has the
2660same members as the sname:VkPhysicalDeviceBufferDeviceAddressFeatures
2661structure, but the functionality indicated by the members is expressed
2662differently.
2663The features indicated by the
2664sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure requires
2665additional flags to be passed at memory allocation time, and the capture and
2666replay mechanism is built around opaque capture addresses for buffer and
2667memory objects.
2668====
2669endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2670
2671include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[]
2672--
2673endif::VK_EXT_buffer_device_address[]
2674
2675ifdef::VK_NV_dedicated_allocation_image_aliasing[]
2676[open,refpage='VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',desc='Structure describing dedicated allocation image aliasing features that can be supported by an implementation',type='structs']
2677--
2678The sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
2679structure is defined as:
2680
2681include::{generated}/api/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[]
2682
2683This structure describes the following feature:
2684
2685  * pname:sType is the type of this structure.
2686  * pname:pNext is `NULL` or a pointer to a structure extending this
2687    structure.
2688  * [[features-dedicatedAllocationImageAliasing]]
2689    pname:dedicatedAllocationImageAliasing indicates that the implementation
2690    supports aliasing of compatible image objects on a dedicated allocation.
2691
2692:refpage: VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
2693include::{chapters}/features.txt[tag=features]
2694
2695include::{generated}/validity/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[]
2696--
2697endif::VK_NV_dedicated_allocation_image_aliasing[]
2698
2699ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
2700[open,refpage='VkPhysicalDeviceImagelessFramebufferFeatures',desc='Structure indicating support for imageless framebuffers',type='structs',alias='VkPhysicalDeviceImagelessFramebufferFeaturesKHR']
2701--
2702The sname:VkPhysicalDeviceImagelessFramebufferFeatures structure is defined
2703as:
2704
2705include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeatures.txt[]
2706
2707ifdef::VK_KHR_imageless_framebuffer[]
2708or the equivalent
2709
2710include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.txt[]
2711endif::VK_KHR_imageless_framebuffer[]
2712
2713This structure describes the following feature:
2714
2715  * pname:sType is the type of this structure.
2716  * pname:pNext is `NULL` or a pointer to a structure extending this
2717    structure.
2718
2719// Must have preceding whitespace
2720ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2721ifndef::VK_VERSION_1_2[:anchor-prefix:]
2722// tag::VK_KHR_imageless_framebuffer-features[]
2723  * [[{anchor-prefix}features-imagelessFramebuffer]]
2724    pname:imagelessFramebuffer indicates that the implementation supports
2725    specifying the image view for attachments at render pass begin time via
2726    slink:VkRenderPassAttachmentBeginInfo.
2727// end::VK_KHR_imageless_framebuffer-features[]
2728
2729:refpage: VkPhysicalDeviceImagelessFramebufferFeatures
2730include::{chapters}/features.txt[tag=features]
2731
2732include::{generated}/validity/structs/VkPhysicalDeviceImagelessFramebufferFeatures.txt[]
2733--
2734endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
2735
2736ifdef::VK_EXT_fragment_shader_interlock[]
2737[open,refpage='VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',desc='Structure describing fragment shader interlock features that can be supported by an implementation',type='structs']
2738--
2739The sname:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure is
2740defined as:
2741
2742include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.txt[]
2743
2744This structure describes the following features:
2745
2746  * pname:sType is the type of this structure.
2747  * pname:pNext is `NULL` or a pointer to a structure extending this
2748    structure.
2749  * [[features-fragmentShaderSampleInterlock]]
2750    pname:fragmentShaderSampleInterlock indicates that the implementation
2751    supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability.
2752  * [[features-fragmentShaderPixelInterlock]]
2753    pname:fragmentShaderPixelInterlock indicates that the implementation
2754    supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability.
2755  * [[features-fragmentShaderShadingRateInterlock]]
2756    pname:fragmentShaderShadingRateInterlock indicates that the
2757    implementation supports the code:FragmentShaderShadingRateInterlockEXT
2758    SPIR-V capability.
2759
2760:refpage: VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
2761include::{chapters}/features.txt[tag=features]
2762
2763include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.txt[]
2764--
2765endif::VK_EXT_fragment_shader_interlock[]
2766
2767ifdef::VK_NV_cooperative_matrix[]
2768[open,refpage='VkPhysicalDeviceCooperativeMatrixFeaturesNV',desc='Structure describing cooperative matrix features that can be supported by an implementation',type='structs']
2769--
2770The sname:VkPhysicalDeviceCooperativeMatrixFeaturesNV structure is defined
2771as:
2772
2773include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.txt[]
2774
2775This structure describes the following features:
2776
2777  * pname:sType is the type of this structure.
2778  * pname:pNext is `NULL` or a pointer to a structure extending this
2779    structure.
2780  * [[features-cooperativeMatrix]] pname:cooperativeMatrix indicates that
2781    the implementation supports the code:CooperativeMatrixNV SPIR-V
2782    capability.
2783  * [[features-cooperativeMatrixRobustBufferAccess]]
2784    pname:cooperativeMatrixRobustBufferAccess indicates that the
2785    implementation supports robust buffer access for SPIR-V
2786    code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV
2787    instructions.
2788
2789:refpage: VkPhysicalDeviceCooperativeMatrixFeaturesNV
2790include::{chapters}/features.txt[tag=features]
2791
2792include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.txt[]
2793--
2794endif::VK_NV_cooperative_matrix[]
2795
2796ifdef::VK_EXT_ycbcr_image_arrays[]
2797[open,refpage='VkPhysicalDeviceYcbcrImageArraysFeaturesEXT',desc='Structure describing extended {YCbCr} image creation features that can be supported by an implementation',type='structs']
2798--
2799The sname:VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure is defined
2800as:
2801
2802include::{generated}/api/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.txt[]
2803
2804This structure describes the following feature:
2805
2806  * pname:sType is the type of this structure.
2807  * pname:pNext is `NULL` or a pointer to a structure extending this
2808    structure.
2809  * [[features-ycbcrImageArrays]] pname:ycbcrImageArrays indicates that the
2810    implementation supports creating images with a format that requires
2811    <<formats-requiring-sampler-ycbcr-conversion, {YCbCr} conversion>> and
2812    has multiple array layers.
2813
2814:refpage: VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
2815include::{chapters}/features.txt[tag=features]
2816
2817include::{generated}/validity/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.txt[]
2818--
2819endif::VK_EXT_ycbcr_image_arrays[]
2820
2821ifdef::VK_VERSION_1_1[]
2822ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
2823[open,refpage='VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures',desc='Structure describing the extended types subgroups support feature for an implementation',type='structs',alias='VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR']
2824--
2825The sname:VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures structure is
2826defined as:
2827
2828include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.txt[]
2829
2830ifdef::VK_KHR_shader_subgroup_extended_types[]
2831or the equivalent
2832
2833include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.txt[]
2834endif::VK_KHR_shader_subgroup_extended_types[]
2835
2836This structure describes the following feature:
2837
2838  * pname:sType is the type of this structure.
2839  * pname:pNext is `NULL` or a pointer to a structure extending this
2840    structure.
2841
2842// Must have preceding whitespace
2843ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2844ifndef::VK_VERSION_1_2[:anchor-prefix:]
2845// tag::VK_KHR_shader_subgroup_extended_types-features[]
2846  * [[{anchor-prefix}features-subgroup-extended-types]]
2847    pname:shaderSubgroupExtendedTypes is a boolean specifying whether
2848    subgroup operations can use 8-bit integer, 16-bit integer, 64-bit
2849    integer, 16-bit floating-point, and vectors of these types in
2850    <<shaders-group-operations,group operations>> with
2851    <<shaders-scope-subgroup, subgroup scope>>, if the implementation
2852    supports the types.
2853// end::VK_KHR_shader_subgroup_extended_types-features[]
2854
2855:refpage: VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
2856include::{chapters}/features.txt[tag=features]
2857
2858include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.txt[]
2859--
2860endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
2861endif::VK_VERSION_1_1[]
2862
2863ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
2864[open,refpage='VkPhysicalDeviceHostQueryResetFeatures',desc='Structure describing whether queries can be reset from the host',type='structs',alias='VkPhysicalDeviceHostQueryResetFeaturesEXT']
2865--
2866The sname:VkPhysicalDeviceHostQueryResetFeatures structure is defined as:
2867
2868include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeatures.txt[]
2869
2870ifdef::VK_EXT_host_query_reset[]
2871or the equivalent
2872
2873include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeaturesEXT.txt[]
2874endif::VK_EXT_host_query_reset[]
2875
2876This structure describes the following feature:
2877
2878  * pname:sType is the type of this structure.
2879  * pname:pNext is `NULL` or a pointer to a structure extending this
2880    structure.
2881
2882// Must have preceding whitespace
2883ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2884ifndef::VK_VERSION_1_2[:anchor-prefix:]
2885// tag::VK_EXT_host_query_reset-features[]
2886  * [[{anchor-prefix}features-hostQueryReset]] pname:hostQueryReset
2887    indicates that the implementation supports resetting queries from the
2888    host with flink:vkResetQueryPool.
2889// end::VK_EXT_host_query_reset-features[]
2890
2891:refpage: VkPhysicalDeviceHostQueryResetFeatures
2892include::{chapters}/features.txt[tag=features]
2893
2894include::{generated}/validity/structs/VkPhysicalDeviceHostQueryResetFeatures.txt[]
2895--
2896endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
2897
2898ifdef::VK_INTEL_shader_integer_functions2[]
2899[open,refpage='VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',desc='Structure describing shader integer functions that can be supported by an implementation',type='structs']
2900--
2901The sname:VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure is
2902defined as:
2903
2904include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.txt[]
2905
2906This structure describes the following feature:
2907
2908  * pname:sType is the type of this structure.
2909  * pname:pNext is `NULL` or a pointer to a structure extending this
2910    structure.
2911  * [[features-shaderIntegerFunctions2]] pname:shaderIntegerFunctions2
2912    indicates that the implementation supports the
2913    code:IntegerFunctions2INTEL SPIR-V capability.
2914
2915:refpage: VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures.
2916include::{chapters}/features.txt[tag=features]
2917
2918include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.txt[]
2919--
2920endif::VK_INTEL_shader_integer_functions2[]
2921
2922ifdef::VK_NV_coverage_reduction_mode[]
2923[open,refpage='VkPhysicalDeviceCoverageReductionModeFeaturesNV',desc='Structure describing the coverage reduction mode features that can be supported by an implementation',type='structs']
2924--
2925The sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
2926defined as:
2927
2928include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[]
2929
2930This structure describes the following feature:
2931
2932  * pname:sType is the type of this structure.
2933  * pname:pNext is `NULL` or a pointer to a structure extending this
2934    structure.
2935  * [[features-coverageReductionMode]] pname:coverageReductionMode indicates
2936    whether the implementation supports coverage reduction modes.
2937    See <<fragops-coverage-reduction, Coverage Reduction>>.
2938
2939:refpage: VkPhysicalDeviceCoverageReductionModeFeaturesNV
2940include::{chapters}/features.txt[tag=features]
2941
2942include::{generated}/validity/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[]
2943--
2944endif::VK_NV_coverage_reduction_mode[]
2945
2946ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
2947[open,refpage='VkPhysicalDeviceTimelineSemaphoreFeatures',desc='Structure describing timeline semaphore features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTimelineSemaphoreFeaturesKHR']
2948--
2949The sname:VkPhysicalDeviceTimelineSemaphoreFeatures structure is defined as:
2950
2951include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.txt[]
2952
2953ifdef::VK_KHR_timeline_semaphore[]
2954or the equivalent
2955
2956include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.txt[]
2957endif::VK_KHR_timeline_semaphore[]
2958
2959This structure describes the following feature:
2960
2961  * pname:sType is the type of this structure.
2962  * pname:pNext is `NULL` or a pointer to a structure extending this
2963    structure.
2964
2965// Must have preceding whitespace
2966ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2967ifndef::VK_VERSION_1_2[:anchor-prefix:]
2968// tag::VK_KHR_timeline_semaphore-features[]
2969  * [[{anchor-prefix}features-timelineSemaphore]] pname:timelineSemaphore
2970    indicates whether semaphores created with a elink:VkSemaphoreType of
2971    ename:VK_SEMAPHORE_TYPE_TIMELINE are supported.
2972// end::VK_KHR_timeline_semaphore-features[]
2973
2974:refpage: VkPhysicalDeviceTimelineSemaphoreFeatures
2975include::{chapters}/features.txt[tag=features]
2976
2977include::{generated}/validity/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.txt[]
2978--
2979endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
2980
2981ifdef::VK_EXT_index_type_uint8[]
2982[open,refpage='VkPhysicalDeviceIndexTypeUint8FeaturesEXT',desc='Structure describing whether uint8 index type can be used',type='structs']
2983--
2984The sname:VkPhysicalDeviceIndexTypeUint8FeaturesEXT structure is defined as:
2985
2986include::{generated}/api/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.txt[]
2987
2988This structure describes the following feature:
2989
2990  * pname:sType is the type of this structure.
2991  * pname:pNext is `NULL` or a pointer to a structure extending this
2992    structure.
2993  * [[features-indexTypeUint8]] pname:indexTypeUint8 indicates that
2994    ename:VK_INDEX_TYPE_UINT8_EXT can be used with
2995    flink:vkCmdBindIndexBuffer.
2996
2997:refpage: VkPhysicalDeviceIndexTypeUint8FeaturesEXT
2998include::{chapters}/features.txt[tag=features]
2999
3000include::{generated}/validity/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.txt[]
3001--
3002endif::VK_EXT_index_type_uint8[]
3003
3004ifdef::VK_EXT_primitive_topology_list_restart[]
3005[open,refpage='VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',desc='Structure describing whether list type primitives can support primitive restart',type='structs']
3006--
3007The sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure
3008is defined as:
3009
3010include::{generated}/api/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.txt[]
3011
3012The members of the
3013sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure
3014describe the following features:
3015
3016  * pname:sType is the type of this structure.
3017  * pname:pNext is `NULL` or a pointer to a structure extending this
3018    structure.
3019  * [[features-primitiveTopologyListRestart]]
3020    pname:primitiveTopologyListRestart indicates that list type primitives,
3021    ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
3022    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
3023    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
3024    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY and
3025    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, can: use the
3026    primitive restart index value in index buffers.
3027  * [[features-primitiveTopologyPatchListRestart]]
3028    pname:primitiveTopologyPatchListRestart indicates that the
3029    ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology can: use the primitive
3030    restart index value in index buffers.
3031
3032:refpage: VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
3033include::{chapters}/features.txt[tag=features]
3034
3035include::{generated}/validity/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.txt[]
3036--
3037endif::VK_EXT_primitive_topology_list_restart[]
3038
3039ifdef::VK_NV_shader_sm_builtins[]
3040[open,refpage='VkPhysicalDeviceShaderSMBuiltinsFeaturesNV',desc='Structure describing the shader SM Builtins features that can be supported by an implementation',type='structs']
3041--
3042The sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is defined
3043as:
3044
3045include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[]
3046
3047This structure describes the following feature:
3048
3049  * pname:sType is the type of this structure.
3050  * pname:pNext is `NULL` or a pointer to a structure extending this
3051    structure.
3052  * [[features-shaderSMBuiltins]] pname:shaderSMBuiltins indicates whether
3053    the implementation supports the SPIR-V code:ShaderSMBuiltinsNV
3054    capability.
3055
3056:refpage: VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
3057include::{chapters}/features.txt[tag=features]
3058
3059include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[]
3060--
3061endif::VK_NV_shader_sm_builtins[]
3062
3063ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3064[open,refpage='VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures',desc='Structure describing whether the implementation can do depth and stencil image barriers separately',type='structs',alias='VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR']
3065--
3066The sname:VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures structure is
3067defined as:
3068
3069include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.txt[]
3070
3071ifdef::VK_KHR_separate_depth_stencil_layouts[]
3072or the equivalent
3073
3074include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.txt[]
3075endif::VK_KHR_separate_depth_stencil_layouts[]
3076
3077This structure describes the following feature:
3078
3079  * pname:sType is the type of this structure.
3080  * pname:pNext is `NULL` or a pointer to a structure extending this
3081    structure.
3082
3083// Must have preceding whitespace
3084ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3085ifndef::VK_VERSION_1_2[:anchor-prefix:]
3086// tag::VK_KHR_separate_depth_stencil_layouts-features[]
3087  * [[{anchor-prefix}features-separateDepthStencilLayouts]]
3088    pname:separateDepthStencilLayouts indicates whether the implementation
3089    supports a sname:VkImageMemoryBarrier for a depth/stencil image with
3090    only one of ename:VK_IMAGE_ASPECT_DEPTH_BIT or
3091    ename:VK_IMAGE_ASPECT_STENCIL_BIT set, and whether
3092    ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
3093    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
3094    ename:VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or
3095    ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.
3096// end::VK_KHR_separate_depth_stencil_layouts-features[]
3097
3098:refpage: VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
3099include::{chapters}/features.txt[tag=features]
3100
3101include::{generated}/validity/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.txt[]
3102--
3103endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3104
3105ifdef::VK_KHR_pipeline_executable_properties[]
3106[open,refpage='VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR',desc='Structure describing whether pipeline executable properties are available',type='structs']
3107--
3108The sname:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure
3109is defined as:
3110
3111include::{generated}/api/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.txt[]
3112
3113This structure describes the following feature:
3114
3115  * pname:sType is the type of this structure.
3116  * pname:pNext is `NULL` or a pointer to a structure extending this
3117    structure.
3118  * [[features-pipelineExecutableInfo]] pname:pipelineExecutableInfo
3119    indicates that the implementation supports reporting properties and
3120    statistics about the pipeline executables associated with a compiled
3121    pipeline.
3122
3123:refpage: VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
3124include::{chapters}/features.txt[tag=features]
3125
3126include::{generated}/validity/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.txt[]
3127--
3128endif::VK_KHR_pipeline_executable_properties[]
3129
3130ifdef::VK_EXT_shader_demote_to_helper_invocation[]
3131[open,refpage='VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',desc='Structure describing the shader demote to helper invocations features that can be supported by an implementation',type='structs']
3132--
3133The sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
3134structure is defined as:
3135
3136include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[]
3137
3138This structure describes the following feature:
3139
3140  * pname:sType is the type of this structure.
3141  * pname:pNext is `NULL` or a pointer to a structure extending this
3142    structure.
3143  * [[features-shaderDemoteToHelperInvocation]]
3144    pname:shaderDemoteToHelperInvocation indicates whether the
3145    implementation supports the SPIR-V code:DemoteToHelperInvocationEXT
3146    capability.
3147
3148:refpage: VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
3149include::{chapters}/features.txt[tag=features]
3150
3151include::{generated}/validity/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[]
3152--
3153endif::VK_EXT_shader_demote_to_helper_invocation[]
3154
3155ifdef::VK_EXT_texel_buffer_alignment[]
3156[open,refpage='VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',desc='Structure describing the texel buffer alignment features that can be supported by an implementation',type='structs']
3157--
3158The sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
3159defined as:
3160
3161include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[]
3162
3163This structure describes the following feature:
3164
3165  * pname:sType is the type of this structure.
3166  * pname:pNext is `NULL` or a pointer to a structure extending this
3167    structure.
3168  * [[features-texelBufferAlignment]] pname:texelBufferAlignment indicates
3169    whether the implementation uses more specific alignment requirements
3170    advertised in slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
3171    rather than
3172    slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
3173
3174:refpage: VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
3175include::{chapters}/features.txt[tag=features]
3176
3177include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[]
3178--
3179endif::VK_EXT_texel_buffer_alignment[]
3180
3181ifdef::VK_EXT_texture_compression_astc_hdr[]
3182[open,refpage='VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',desc='Structure describing ASTC HDR features that can be supported by an implementation',type='structs']
3183--
3184The sname:VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT structure is
3185defined as:
3186
3187include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.txt[]
3188
3189This structure describes the following feature:
3190
3191  * pname:sType is the type of this structure.
3192  * pname:pNext is `NULL` or a pointer to a structure extending this
3193    structure.
3194  * [[features-textureCompressionASTC_HDR]] pname:textureCompressionASTC_HDR
3195    indicates whether all of the ASTC HDR compressed texture formats are
3196    supported.
3197    If this feature is enabled, then the
3198    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
3199    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
3200    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
3201    be supported in pname:optimalTilingFeatures for the following formats:
3202+
3203  ** ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT
3204  ** ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT
3205  ** ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT
3206  ** ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT
3207  ** ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT
3208  ** ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT
3209  ** ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT
3210  ** ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT
3211  ** ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT
3212  ** ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT
3213  ** ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT
3214  ** ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT
3215  ** ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT
3216  ** ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT
3217+
3218To query for additional properties, or if the feature is not enabled,
3219flink:vkGetPhysicalDeviceFormatProperties and
3220flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
3221supported properties of individual formats as normal.
3222
3223:refpage: VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
3224include::{chapters}/features.txt[tag=features]
3225
3226include::{generated}/validity/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.txt[]
3227--
3228endif::VK_EXT_texture_compression_astc_hdr[]
3229
3230ifdef::VK_EXT_line_rasterization[]
3231[open,refpage='VkPhysicalDeviceLineRasterizationFeaturesEXT',desc='Structure describing the line rasterization features that can be supported by an implementation',type='structs']
3232--
3233The sname:VkPhysicalDeviceLineRasterizationFeaturesEXT structure is defined
3234as:
3235
3236include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.txt[]
3237
3238This structure describes the following features:
3239
3240  * pname:sType is the type of this structure.
3241  * pname:pNext is `NULL` or a pointer to a structure extending this
3242    structure.
3243  * [[features-rectangularLines]] pname:rectangularLines indicates whether
3244    the implementation supports <<primsrast-lines,rectangular line
3245    rasterization>>.
3246  * [[features-bresenhamLines]] pname:bresenhamLines indicates whether the
3247    implementation supports <<primsrast-lines-bresenham,Bresenham-style line
3248    rasterization>>.
3249  * [[features-smoothLines]] pname:smoothLines indicates whether the
3250    implementation supports <<primsrast-lines-smooth,smooth line
3251    rasterization>>.
3252  * [[features-stippledRectangularLines]] pname:stippledRectangularLines
3253    indicates whether the implementation supports
3254    <<primsrast-lines-stipple,stippled line rasterization>> with
3255    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT lines, or with
3256    ename:VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT lines if
3257    slink:VkPhysicalDeviceLimits::pname:strictLines is ename:VK_TRUE.
3258  * [[features-stippledBresenhamLines]] pname:stippledBresenhamLines
3259    indicates whether the implementation supports
3260    <<primsrast-lines-stipple,stippled line rasterization>> with
3261    ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines.
3262  * [[features-stippledSmoothLines]] pname:stippledSmoothLines indicates
3263    whether the implementation supports <<primsrast-lines-stipple,stippled
3264    line rasterization>> with
3265    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT lines.
3266
3267:refpage: VkPhysicalDeviceLineRasterizationFeaturesEXT
3268include::{chapters}/features.txt[tag=features]
3269
3270include::{generated}/validity/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.txt[]
3271--
3272endif::VK_EXT_line_rasterization[]
3273
3274ifdef::VK_EXT_subgroup_size_control[]
3275[open,refpage='VkPhysicalDeviceSubgroupSizeControlFeaturesEXT',desc='Structure describing the subgroup size control features that can be supported by an implementation',type='structs']
3276--
3277The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure is
3278defined as:
3279
3280include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.txt[]
3281
3282This structure describes the following features:
3283
3284  * pname:sType is the type of this structure.
3285  * pname:pNext is `NULL` or a pointer to a structure extending this
3286    structure.
3287  * [[features-subgroupSizeControl]] pname:subgroupSizeControl indicates
3288    whether the implementation supports controlling shader subgroup sizes
3289    via the
3290    ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
3291    flag and the
3292    slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure.
3293  * [[features-computeFullSubgroups]] pname:computeFullSubgroups indicates
3294    whether the implementation supports requiring full subgroups in compute
3295    shaders via the
3296    ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
3297    flag.
3298
3299:refpage: VkPhysicalDeviceSubgroupSizeControlFeaturesEXT
3300include::{chapters}/features.txt[tag=features]
3301
3302[NOTE]
3303.Note
3304====
3305The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure was added
3306in version 2 of the `apiext:VK_EXT_subgroup_size_control` extension.
3307Version 1 implementations of this extension will not fill out the features
3308structure but applications may assume that both pname:subgroupSizeControl
3309and pname:computeFullSubgroups are supported if the extension is supported.
3310(See also the <<features-requirements, Feature Requirements>> section.)
3311Applications are advised to add a
3312sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure to the
3313pname:pNext chain of slink:VkDeviceCreateInfo to enable the features
3314regardless of the version of the extension supported by the implementation.
3315If the implementation only supports version 1, it will safely ignore the
3316sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure.
3317====
3318
3319include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.txt[]
3320--
3321endif::VK_EXT_subgroup_size_control[]
3322
3323ifdef::VK_AMD_device_coherent_memory[]
3324[open,refpage='VkPhysicalDeviceCoherentMemoryFeaturesAMD',desc='Structure describing whether device coherent memory can be supported by an implementation',type='structs']
3325--
3326The sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as:
3327
3328include::{generated}/api/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[]
3329
3330This structure describes the following feature:
3331
3332  * pname:sType is the type of this structure.
3333  * pname:pNext is `NULL` or a pointer to a structure extending this
3334    structure.
3335  * [[features-deviceCoherentMemory]] pname:deviceCoherentMemory indicates
3336    that the implementation supports <<VkMemoryPropertyFlagBits,device
3337    coherent memory>>.
3338
3339:refpage: VkPhysicalDeviceCoherentMemoryFeaturesAMD
3340include::{chapters}/features.txt[tag=features]
3341
3342include::{generated}/validity/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[]
3343--
3344endif::VK_AMD_device_coherent_memory[]
3345
3346ifdef::VK_KHR_acceleration_structure[]
3347[open,refpage='VkPhysicalDeviceAccelerationStructureFeaturesKHR',desc='Structure describing the acceleration structure features that can be supported by an implementation',type='structs']
3348--
3349The sname:VkPhysicalDeviceAccelerationStructureFeaturesKHR structure is
3350defined as:
3351
3352include::{generated}/api/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.txt[]
3353
3354This structure describes the following features:
3355
3356  * pname:sType is the type of this structure.
3357  * pname:pNext is `NULL` or a pointer to a structure extending this
3358    structure.
3359  * [[features-accelerationStructure]] pname:accelerationStructure indicates
3360    whether the implementation supports the acceleration structure
3361    functionality.
3362    See <<acceleration-structure,Acceleration Structures>>.
3363  * [[features-accelerationStructureCaptureReplay]]
3364    pname:accelerationStructureCaptureReplay indicates whether the
3365    implementation supports saving and reusing acceleration structure device
3366    addresses, e.g. for trace capture and replay.
3367  * [[features-accelerationStructureIndirectBuild]]
3368    pname:accelerationStructureIndirectBuild indicates whether the
3369    implementation supports indirect acceleration structure build commands,
3370    e.g. flink:vkCmdBuildAccelerationStructuresIndirectKHR.
3371  * [[features-accelerationStructureHostCommands]]
3372    pname:accelerationStructureHostCommands indicates whether the
3373    implementation supports host side acceleration structure commands, e.g.
3374    flink:vkBuildAccelerationStructuresKHR,
3375    flink:vkCopyAccelerationStructureKHR,
3376    flink:vkCopyAccelerationStructureToMemoryKHR,
3377    flink:vkCopyMemoryToAccelerationStructureKHR,
3378    flink:vkWriteAccelerationStructuresPropertiesKHR.
3379  * [[features-descriptorBindingAccelerationStructureUpdateAfterBind]]
3380    pname:descriptorBindingAccelerationStructureUpdateAfterBind indicates
3381    whether the implementation supports updating acceleration structure
3382    descriptors after a set is bound.
3383    If this feature is not enabled,
3384    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
3385    ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR.
3386
3387:refpage: VkPhysicalDeviceAccelerationStructureFeaturesKHR
3388include::{chapters}/features.txt[tag=features]
3389
3390include::{generated}/validity/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.txt[]
3391--
3392endif::VK_KHR_acceleration_structure[]
3393
3394ifdef::VK_KHR_ray_tracing_pipeline[]
3395[open,refpage='VkPhysicalDeviceRayTracingPipelineFeaturesKHR',desc='Structure describing the ray tracing features that can be supported by an implementation',type='structs']
3396--
3397The sname:VkPhysicalDeviceRayTracingPipelineFeaturesKHR structure is defined
3398as:
3399
3400include::{generated}/api/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.txt[]
3401
3402This structure describes the following features:
3403
3404  * pname:sType is the type of this structure.
3405  * pname:pNext is `NULL` or a pointer to a structure extending this
3406    structure.
3407  * [[features-rayTracingPipeline]] pname:rayTracingPipeline indicates
3408    whether the implementation supports the ray tracing pipeline
3409    functionality.
3410    See <<ray-tracing,Ray Tracing>>.
3411  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplay]]
3412    pname:rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether
3413    the implementation supports saving and reusing shader group handles,
3414    e.g. for trace capture and replay.
3415  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed]]
3416    pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed indicates
3417    whether the implementation supports reuse of shader group handles being
3418    arbitrarily mixed with creation of non-reused shader group handles.
3419    If this is ename:VK_FALSE, all reused shader group handles must: be
3420    specified before any non-reused handles may: be created.
3421  * [[features-rayTracingPipelineTraceRaysIndirect]]
3422    pname:rayTracingPipelineTraceRaysIndirect indicates whether the
3423    implementation supports indirect ray tracing commands, e.g.
3424    flink:vkCmdTraceRaysIndirectKHR.
3425  * [[features-rayTraversalPrimitiveCulling]]
3426    pname:rayTraversalPrimitiveCulling indicates whether the implementation
3427    supports <<ray-traversal-culling-primitive, primitive culling during ray
3428    traversal>>.
3429
3430:refpage: VkPhysicalDeviceRayTracingPipelineFeaturesKHR
3431include::{chapters}/features.txt[tag=features]
3432
3433.Valid Usage
3434****
3435  * [[VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575]]
3436    If pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed is
3437    ename:VK_TRUE, pname:rayTracingPipelineShaderGroupHandleCaptureReplay
3438    must: also be ename:VK_TRUE
3439****
3440
3441include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.txt[]
3442--
3443endif::VK_KHR_ray_tracing_pipeline[]
3444
3445ifdef::VK_KHR_ray_query[]
3446[open,refpage='VkPhysicalDeviceRayQueryFeaturesKHR',desc='Structure describing the ray query features that can be supported by an implementation',type='structs']
3447--
3448The sname:VkPhysicalDeviceRayQueryFeaturesKHR structure is defined as:
3449
3450include::{generated}/api/structs/VkPhysicalDeviceRayQueryFeaturesKHR.txt[]
3451
3452This structure describes the following feature:
3453
3454  * pname:sType is the type of this structure.
3455  * pname:pNext is `NULL` or a pointer to a structure extending this
3456    structure.
3457  * [[features-rayQuery]] pname:rayQuery indicates whether the
3458    implementation supports ray query (code:OpRayQueryProceedKHR)
3459    functionality.
3460
3461:refpage: VkPhysicalDeviceRayQueryFeaturesKHR
3462include::{chapters}/features.txt[tag=features]
3463
3464include::{generated}/validity/structs/VkPhysicalDeviceRayQueryFeaturesKHR.txt[]
3465--
3466endif::VK_KHR_ray_query[]
3467
3468ifdef::VK_EXT_extended_dynamic_state[]
3469[open,refpage='VkPhysicalDeviceExtendedDynamicStateFeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
3470--
3471The sname:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure is
3472defined as:
3473
3474include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.txt[]
3475
3476This structure describes the following feature:
3477
3478  * pname:sType is the type of this structure.
3479  * pname:pNext is `NULL` or a pointer to a structure extending this
3480    structure.
3481  * [[features-extendedDynamicState]] pname:extendedDynamicState indicates
3482    that the implementation supports the following dynamic states:
3483  ** ename:VK_DYNAMIC_STATE_CULL_MODE_EXT
3484  ** ename:VK_DYNAMIC_STATE_FRONT_FACE_EXT
3485  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
3486  ** ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT
3487  ** ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT
3488  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
3489  ** ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT
3490  ** ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT
3491  ** ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT
3492  ** ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT
3493  ** ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT
3494  ** ename:VK_DYNAMIC_STATE_STENCIL_OP_EXT
3495
3496:refpage: VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
3497include::{chapters}/features.txt[tag=features]
3498
3499include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.txt[]
3500--
3501endif::VK_EXT_extended_dynamic_state[]
3502
3503ifdef::VK_EXT_extended_dynamic_state2[]
3504[open,refpage='VkPhysicalDeviceExtendedDynamicState2FeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
3505--
3506The sname:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure is
3507defined as:
3508
3509include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.txt[]
3510
3511This structure describes the following features:
3512
3513  * pname:sType is the type of this structure.
3514  * pname:pNext is `NULL` or a pointer to a structure extending this
3515    structure.
3516  * [[features-extendedDynamicState2]] pname:extendedDynamicState2 indicates
3517    that the implementation supports the following dynamic states:
3518  ** ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT
3519  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
3520  ** ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT
3521  * [[features-extendedDynamicState2LogicOp]]
3522    pname:extendedDynamicState2LogicOp indicates that the implementation
3523    supports the following dynamic state:
3524  ** ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT
3525  * [[features-extendedDynamicState2PatchControlPoints]]
3526    pname:extendedDynamicState2PatchControlPoints indicates that the
3527    implementation supports the following dynamic state:
3528  ** ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
3529
3530:refpage: VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
3531include::{chapters}/features.txt[tag=features]
3532
3533include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.txt[]
3534--
3535endif::VK_EXT_extended_dynamic_state2[]
3536
3537ifdef::VK_NV_device_generated_commands[]
3538[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV',desc='Structure describing the device-generated commands features that can be supported by an implementation',type='structs']
3539--
3540The sname:VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV structure is
3541defined as:
3542
3543include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.txt[]
3544
3545This structure describes the following feature:
3546
3547  * pname:sType is the type of this structure.
3548  * pname:pNext is `NULL` or a pointer to a structure extending this
3549    structure.
3550  * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands
3551    indicates whether the implementation supports functionality to generate
3552    commands on the device.
3553    See <<device-generated-commands,Device-Generated Commands>>.
3554
3555:refpage: VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
3556include::{chapters}/features.txt[tag=features]
3557
3558include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.txt[]
3559--
3560endif::VK_NV_device_generated_commands[]
3561
3562ifdef::VK_NV_device_diagnostics_config[]
3563[open,refpage='VkPhysicalDeviceDiagnosticsConfigFeaturesNV',desc='Structure describing the device-generated diagnostic configuration features that can be supported by an implementation',type='structs']
3564--
3565The sname:VkPhysicalDeviceDiagnosticsConfigFeaturesNV structure is defined
3566as:
3567
3568include::{generated}/api/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.txt[]
3569
3570This structure describes the following feature:
3571
3572  * pname:sType is the type of this structure.
3573  * pname:pNext is `NULL` or a pointer to a structure extending this
3574    structure.
3575  * [[features-diagnosticsConfig]] pname:diagnosticsConfig indicates whether
3576    the implementation supports the ability to configure diagnostic tools.
3577
3578:refpage: VkPhysicalDeviceDiagnosticsConfigFeaturesNV
3579include::{chapters}/features.txt[tag=features]
3580
3581include::{generated}/validity/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.txt[]
3582--
3583endif::VK_NV_device_diagnostics_config[]
3584
3585ifdef::VK_EXT_device_memory_report[]
3586[open,refpage='VkPhysicalDeviceDeviceMemoryReportFeaturesEXT',desc='Structure describing whether device memory report callback can be supported by an implementation',type='structs']
3587--
3588The sname:VkPhysicalDeviceDeviceMemoryReportFeaturesEXT structure is defined
3589as:
3590
3591include::{generated}/api/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.txt[]
3592
3593This structure describes the following feature:
3594
3595  * pname:sType is the type of this structure.
3596  * pname:pNext is `NULL` or a pointer to a structure extending this
3597    structure.
3598  * [[features-deviceMemoryReport]] pname:deviceMemoryReport indicates
3599    whether the implementation supports the ability to register device
3600    memory report callbacks.
3601
3602:refpage: VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
3603include::{chapters}/features.txt[tag=features]
3604
3605include::{generated}/validity/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.txt[]
3606--
3607endif::VK_EXT_device_memory_report[]
3608
3609ifdef::VK_EXT_global_priority_query[]
3610[open,refpage='VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT',desc='Structure describing whether global priority query can be supported by an implementation',type='structs']
3611--
3612The sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT structure is
3613defined as:
3614
3615include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.txt[]
3616
3617The members of the sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT
3618structure describe the following features:
3619
3620  * pname:sType is the type of this structure.
3621  * pname:pNext is `NULL` or a pointer to a structure extending this
3622    structure.
3623  * [[features-globalPriorityQuery]] pname:globalPriorityQuery indicates
3624    whether the implementation supports the ability to query global queue
3625    priorities.
3626
3627:refpage: VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT
3628include::{chapters}/features.txt[tag=features]
3629
3630include::{generated}/validity/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.txt[]
3631--
3632endif::VK_EXT_global_priority_query[]
3633
3634ifdef::VK_EXT_pipeline_creation_cache_control[]
3635[open,refpage='VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT',desc='Structure describing whether pipeline cache control can be supported by an implementation',type='structs']
3636--
3637The sname:VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT structure
3638is defined as:
3639
3640include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.txt[]
3641
3642This structure describes the following feature:
3643
3644  * pname:sType is the type of this structure.
3645  * pname:pNext is `NULL` or a pointer to a structure extending this
3646    structure.
3647  * [[features-pipelineCreationCacheControl]]
3648    pname:pipelineCreationCacheControl indicates that the implementation
3649    supports:
3650  ** The following can: be used in stext:Vk*PipelineCreateInfo::pname:flags:
3651  *** ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
3652  *** ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
3653  ** The following can: be used in
3654     slink:VkPipelineCacheCreateInfo::pname:flags:
3655  *** ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT
3656
3657:refpage: VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT
3658include::{chapters}/features.txt[tag=features]
3659
3660include::{generated}/validity/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.txt[]
3661--
3662endif::VK_EXT_pipeline_creation_cache_control[]
3663
3664ifdef::VK_KHR_zero_initialize_workgroup_memory[]
3665[open,refpage='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',desc='Structure describing support for zero initialization of workgroup memory by an implementation',type='structs']
3666--
3667The sname:VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR structure
3668is defined as:
3669
3670include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.txt[]
3671
3672This structure describes the following feature:
3673
3674  * pname:sType is the type of this structure.
3675  * pname:pNext is `NULL` or a pointer to a structure extending this
3676    structure.
3677  * [[features-shaderZeroInitializeWorkgroupMemory]]
3678    pname:shaderZeroInitializeWorkgroupMemory specifies whether the
3679    implementation supports initializing a variable in Workgroup storage
3680    class.
3681
3682:refpage: VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
3683include::{chapters}/features.txt[tag=features]
3684
3685include::{generated}/validity/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.txt[]
3686--
3687endif::VK_KHR_zero_initialize_workgroup_memory[]
3688
3689ifdef::VK_EXT_private_data[]
3690[open,refpage='VkPhysicalDevicePrivateDataFeaturesEXT',desc='Structure specifying physical device support',type='structs']
3691--
3692
3693The sname:VkPhysicalDevicePrivateDataFeaturesEXT structure is defined as:
3694
3695include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeaturesEXT.txt[]
3696
3697This structure describes the following feature:
3698
3699  * pname:sType is the type of this structure.
3700  * pname:pNext is `NULL` or a pointer to a structure extending this
3701    structure.
3702  * [[features-privateData]] pname:privateData indicates whether the
3703    implementation supports private data.
3704    See <<private-data, Private Data>>.
3705
3706:refpage: VkPhysicalDevicePrivateDataFeaturesEXT
3707include::{chapters}/features.txt[tag=features]
3708
3709include::{generated}/validity/structs/VkPhysicalDevicePrivateDataFeaturesEXT.txt[]
3710--
3711endif::VK_EXT_private_data[]
3712
3713ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
3714[open,refpage='VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',desc='Structure describing support for shader subgroup uniform control flow by an implementation',type='structs']
3715--
3716The sname:VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
3717structure is defined as:
3718
3719include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.txt[]
3720
3721This structure describes the following feature:
3722
3723  * pname:sType is the type of this structure.
3724  * pname:pNext is `NULL` or a pointer to a structure extending this
3725    structure.
3726  * [[features-shaderSubgroupUniformControlFlow]]
3727    pname:shaderSubgroupUniformControlFlow specifies whether the
3728    implementation supports the shader execution mode
3729    code:SubgroupUniformControlFlowKHR
3730
3731:refpage: VkPhysicalDevicePrivateDataFeaturesEXT
3732include::{chapters}/features.txt[tag=features]
3733
3734include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.txt[]
3735--
3736endif::VK_KHR_shader_subgroup_uniform_control_flow[]
3737
3738ifdef::VK_EXT_robustness2[]
3739[open,refpage='VkPhysicalDeviceRobustness2FeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs']
3740--
3741The sname:VkPhysicalDeviceRobustness2FeaturesEXT structure is defined as:
3742
3743include::{generated}/api/structs/VkPhysicalDeviceRobustness2FeaturesEXT.txt[]
3744
3745This structure describes the following features:
3746
3747  * pname:sType is the type of this structure.
3748  * pname:pNext is `NULL` or a pointer to a structure extending this
3749    structure.
3750  * [[features-robustBufferAccess2]] pname:robustBufferAccess2 indicates
3751    whether buffer accesses are tightly bounds-checked against the range of
3752    the descriptor.
3753    Uniform buffers must: be bounds-checked to the range of the descriptor,
3754    where the range is rounded up to a multiple of
3755    <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>>.
3756    Storage buffers must: be bounds-checked to the range of the descriptor,
3757    where the range is rounded up to a multiple of
3758    <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>>.
3759    Out of bounds buffer loads will return zero values, and formatted loads
3760    will have [eq]#(0,0,1)# values inserted for missing G, B, or A
3761    components based on the format.
3762  * [[features-robustImageAccess2]] pname:robustImageAccess2 indicates
3763    whether image accesses are tightly bounds-checked against the dimensions
3764    of the image view.
3765    Out of bounds image loads will return zero values, with [eq]#(0,0,1)#
3766    values <<textures-conversion-to-rgba,inserted for missing G, B, or A
3767    components>> based on the format.
3768  * [[features-nullDescriptor]] pname:nullDescriptor indicates whether
3769    descriptors can: be written with a dlink:VK_NULL_HANDLE resource or
3770    view, which are considered valid to access and act as if the descriptor
3771    were bound to nothing.
3772
3773:refpage: VkPhysicalDeviceRobustness2FeaturesEXT
3774include::{chapters}/features.txt[tag=features]
3775
3776.Valid Usage
3777****
3778  * [[VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000]]
3779    If pname:robustBufferAccess2 is enabled then
3780    <<features-robustBufferAccess, pname:robustBufferAccess>> must: also be
3781    enabled
3782****
3783
3784include::{generated}/validity/structs/VkPhysicalDeviceRobustness2FeaturesEXT.txt[]
3785--
3786endif::VK_EXT_robustness2[]
3787
3788ifndef::VK_EXT_robustness2[]
3789[[features-nullDescriptor]] nullDescriptor support requires the
3790`apiext:VK_EXT_robustness2` extension.
3791endif::VK_EXT_robustness2[]
3792
3793ifdef::VK_EXT_image_robustness[]
3794[open,refpage='VkPhysicalDeviceImageRobustnessFeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs']
3795--
3796The sname:VkPhysicalDeviceImageRobustnessFeaturesEXT structure is defined
3797as:
3798
3799include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.txt[]
3800
3801This structure describes the following feature:
3802
3803  * pname:sType is the type of this structure.
3804  * pname:pNext is `NULL` or a pointer to a structure extending this
3805    structure.
3806  * [[features-robustImageAccess]] pname:robustImageAccess indicates whether
3807    image accesses are tightly bounds-checked against the dimensions of the
3808    image view.
3809    <<textures-input-validation,Invalid texels>> resulting from out of
3810    bounds image loads will be replaced as described in
3811    <<textures-texel-replacement,Texel Replacement>>, with either
3812    [eq]#(0,0,1)# or [eq]#(0,0,0)# values inserted for missing G, B, or A
3813    components based on the format.
3814
3815:refpage: VkPhysicalDeviceImageRobustnessFeaturesEXT
3816include::{chapters}/features.txt[tag=features]
3817
3818include::{generated}/validity/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.txt[]
3819--
3820endif::VK_EXT_image_robustness[]
3821
3822ifdef::VK_KHR_shader_terminate_invocation[]
3823[open,refpage='VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR',desc='Structure describing support for the SPIR-V code:SPV_KHR_terminate_invocation extension',type='structs']
3824--
3825The sname:VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR structure is
3826defined as:
3827
3828include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.txt[]
3829
3830This structure describes the following feature:
3831
3832  * pname:sType is the type of this structure.
3833  * pname:pNext is `NULL` or a pointer to a structure extending this
3834    structure.
3835  * [[features-shaderTerminateInvocation]] pname:shaderTerminateInvocation
3836    specifies whether the implementation supports SPIR-V modules that use
3837    the `SPV_KHR_terminate_invocation` extension.
3838
3839:refpage: VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR
3840include::{chapters}/features.txt[tag=features]
3841
3842include::{generated}/validity/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.txt[]
3843--
3844endif::VK_KHR_shader_terminate_invocation[]
3845
3846ifdef::VK_EXT_custom_border_color[]
3847[open,refpage='VkPhysicalDeviceCustomBorderColorFeaturesEXT',desc='Structure describing whether custom border colors can be supported by an implementation',type='structs']
3848--
3849The sname:VkPhysicalDeviceCustomBorderColorFeaturesEXT structure is defined
3850as:
3851
3852include::{generated}/api/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.txt[]
3853
3854This structure describes the following features:
3855
3856  * pname:sType is the type of this structure.
3857  * pname:pNext is `NULL` or a pointer to a structure extending this
3858    structure.
3859  * [[features-customBorderColors]] pname:customBorderColors indicates that
3860    the implementation supports providing a pname:borderColor value with one
3861    of the following values at sampler creation time:
3862  ** ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
3863  ** ename:VK_BORDER_COLOR_INT_CUSTOM_EXT
3864  * [[features-customBorderColorWithoutFormat]]
3865    pname:customBorderColorWithoutFormat indicates that explicit formats are
3866    not required for custom border colors and the value of the pname:format
3867    member of the slink:VkSamplerCustomBorderColorCreateInfoEXT structure
3868    may: be ename:VK_FORMAT_UNDEFINED.
3869    If this feature bit is not set, applications must: provide the
3870    elink:VkFormat of the image view(s) being sampled by this sampler in the
3871    pname:format member of the slink:VkSamplerCustomBorderColorCreateInfoEXT
3872    structure.
3873
3874:refpage: VkPhysicalDeviceCustomBorderColorFeaturesEXT
3875include::{chapters}/features.txt[tag=features]
3876
3877include::{generated}/validity/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.txt[]
3878--
3879endif::VK_EXT_custom_border_color[]
3880
3881ifdef::VK_EXT_border_color_swizzle[]
3882[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']
3883--
3884The sname:VkPhysicalDeviceBorderColorSwizzleFeaturesEXT structure is defined
3885as:
3886
3887include::{generated}/api/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.txt[]
3888
3889This structure describes the following features:
3890
3891  * pname:sType is the type of this structure.
3892  * pname:pNext is `NULL` or a pointer to a structure extending this
3893    structure.
3894  * [[features-borderColorSwizzle]] pname:borderColorSwizzle indicates that
3895    defined values are returned by sampled image operations when used with a
3896    sampler that uses a ename:VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
3897    ename:VK_BORDER_COLOR_INT_OPAQUE_BLACK,
3898    ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, or
3899    ename:VK_BORDER_COLOR_INT_CUSTOM_EXT pname:borderColor and an image view
3900    that uses a non-<<resources-image-views-identity-mappings,identity
3901    component mapping>>, when either pname:borderColorSwizzleFromImage is
3902    enabled or the slink:VkSamplerBorderColorComponentMappingCreateInfoEXT
3903    is specified.
3904  * [[features-borderColorSwizzleFromImage]]
3905    pname:borderColorSwizzleFromImage indicates that the implementation will
3906    return the correct border color values from sampled image operations
3907    under the conditions expressed above, without the application having to
3908    specify the border color component mapping when creating the sampler
3909    object.
3910    If this feature bit is not set, applications can: chain a
3911    slink:VkSamplerBorderColorComponentMappingCreateInfoEXT structure when
3912    creating samplers for use with image views that do not have an
3913    <<resources-image-views-identity-mappings,identity swizzle>> and, when
3914    those samplers are combined with image views using the same component
3915    mapping, sampled image operations that use opaque black or custom border
3916    colors will return the correct border color values.
3917
3918:refpage: VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
3919include::{chapters}/features.txt[tag=features]
3920
3921include::{generated}/validity/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.txt[]
3922--
3923endif::VK_EXT_border_color_swizzle[]
3924
3925ifdef::VK_KHR_portability_subset[]
3926[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']
3927--
3928The sname:VkPhysicalDevicePortabilitySubsetFeaturesKHR structure is defined
3929as:
3930
3931include::{generated}/api/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.txt[]
3932
3933This structure describes the following features:
3934
3935  * pname:sType is the type of this structure.
3936  * pname:pNext is `NULL` or a pointer to a structure extending this
3937    structure.
3938  * [[features-constantAlphaColorBlendFactors]]
3939    pname:constantAlphaColorBlendFactors indicates whether this
3940    implementation supports constant _alpha_ <<framebuffer-blendfactors>>
3941    used as source or destination _color_ <<framebuffer-blending>>.
3942  * [[features-events]] pname:events indicates whether this implementation
3943    supports synchronization using <<synchronization-events>>.
3944  * [[features-imageViewFormatReinterpretation]]
3945    pname:imageViewFormatReinterpretation indicates whether this
3946    implementation supports a sname:VkImageView being created with a texel
3947    format containing a different number of components, or a different
3948    number of bits in each component, than the texel format of the
3949    underlying sname:VkImage.
3950  * [[features-imageViewFormatSwizzle]] pname:imageViewFormatSwizzle
3951    indicates whether this implementation supports remapping format
3952    components using slink:VkImageViewCreateInfo::pname:components.
3953  * [[features-imageView2DOn3DImage]] pname:imageView2DOn3DImage indicates
3954    whether this implementation supports a sname:VkImage being created with
3955    the ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a
3956    2D or 2D array image view to be created on a 3D sname:VkImage.
3957  * [[features-multisampleArrayImage]] pname:multisampleArrayImage indicates
3958    whether this implementation supports a sname:VkImage being created as a
3959    2D array with multiple samples per texel.
3960  * [[features-mutableComparisonSamplers]] pname:mutableComparisonSamplers
3961    indicates whether this implementation allows descriptors with comparison
3962    samplers to be <<descriptorsets-updates, updated>>.
3963  * [[features-pointPolygons]] pname:pointPolygons indicates whether this
3964    implementation supports <<primsrast>> using a _point_
3965    <<primsrast-polygonmode>>.
3966  * [[features-samplerMipLodBias]] pname:samplerMipLodBias indicates whether
3967    this implementation supports setting a <<samplers-mipLodBias, mipmap LOD
3968    bias value>> when <<samplers, creating a sampler>>.
3969  * [[features-separateStencilMaskRef]] pname:separateStencilMaskRef
3970    indicates whether this implementation supports separate front and back
3971    <<fragops-stencil>> reference values.
3972  * [[features-shaderSampleRateInterpolationFunctions]]
3973    pname:shaderSampleRateInterpolationFunctions indicates whether this
3974    implementation supports fragment shaders which use the
3975    <<spirvenv-capabilities-table-InterpolationFunction,
3976    code:InterpolationFunction>> capability and the extended instructions
3977    `InterpolateAtCentroid`, `InterpolateAtOffset`, and
3978    `InterpolateAtSample` from the `GLSL.std.450` extended instruction set.
3979    This member is only meaningful if the
3980    <<features-sampleRateShading,sampleRateShading>> feature is supported.
3981  * [[features-tessellationIsolines]] pname:tessellationIsolines indicates
3982    whether this implementation supports
3983    <<tessellation-isoline-tessellation, isoline output>> from the
3984    <<tessellation>> stage of a graphics pipeline.
3985    This member is only meaningful if
3986    <<features-tessellationShader,tessellation shaders>> are supported.
3987  * [[features-tessellationPointMode]] pname:tessellationPointMode indicates
3988    whether this implementation supports <<tessellation-point-mode, point
3989    output>> from the <<tessellation>> stage of a graphics pipeline.
3990    This member is only meaningful if
3991    <<features-tessellationShader,tessellation shaders>> are supported.
3992  * [[features-triangleFans]] pname:triangleFans indicates whether this
3993    implementation supports <<drawing-triangle-fans>> primitive topology.
3994  * [[features-vertexAttributeAccessBeyondStride]]
3995    pname:vertexAttributeAccessBeyondStride indicates whether this
3996    implementation supports accessing a vertex input attribute beyond the
3997    stride of the corresponding vertex input binding.
3998
3999:refpage: VkPhysicalDevicePortabilitySubsetFeaturesKHR
4000include::{chapters}/features.txt[tag=features]
4001
4002include::{generated}/validity/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.txt[]
4003--
4004endif::VK_KHR_portability_subset[]
4005
4006ifdef::VK_KHR_performance_query[]
4007include::{chapters}/VK_KHR_performance_query/features.txt[]
4008endif::VK_KHR_performance_query[]
4009
4010ifdef::VK_EXT_4444_formats[]
4011[open,refpage='VkPhysicalDevice4444FormatsFeaturesEXT',desc='Structure describing additional 4444 formats supported by an implementation',type='structs']
4012--
4013The sname:VkPhysicalDevice4444FormatsFeaturesEXT structure is defined as:
4014
4015include::{generated}/api/structs/VkPhysicalDevice4444FormatsFeaturesEXT.txt[]
4016
4017This structure describes the following features:
4018
4019  * pname:sType is the type of this structure.
4020  * pname:pNext is `NULL` or a pointer to a structure extending this
4021    structure.
4022  * [[features-formatA4R4G4B4]] pname:formatA4R4G4B4 indicates that the
4023    implementation must: support using a elink:VkFormat of
4024    ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT with at least the following
4025    elink:VkFormatFeatureFlagBits:
4026  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4027  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4028  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4029  * [[features-formatA4B4G4R4]] pname:formatA4B4G4R4 indicates that the
4030    implementation must: support using a elink:VkFormat of
4031    ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT with at least the following
4032    elink:VkFormatFeatureFlagBits:
4033  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4034  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4035  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4036
4037:refpage: VkPhysicalDevice4444FormatsFeaturesEXT
4038include::{chapters}/features.txt[tag=features]
4039
4040include::{generated}/validity/structs/VkPhysicalDevice4444FormatsFeaturesEXT.txt[]
4041--
4042endif::VK_EXT_4444_formats[]
4043
4044ifdef::VK_VALVE_mutable_descriptor_type[]
4045[open,refpage='VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE',desc='Structure describing whether the mutable descriptor type is supported',type='structs']
4046--
4047The sname:VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE structure is
4048defined as:
4049
4050include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.txt[]
4051
4052This structure describes the following feature:
4053
4054  * pname:sType is the type of this structure.
4055  * pname:pNext is `NULL` or a pointer to a structure extending this
4056    structure.
4057  * [[features-mutableDescriptorType]] pname:mutableDescriptorType indicates
4058    that the implementation must: support using the elink:VkDescriptorType
4059    of ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE with at least the following
4060    descriptor types, where any combination of the types must: be supported:
4061  ** ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
4062  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
4063  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
4064  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
4065  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
4066  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
4067
4068  * Additionally, pname:mutableDescriptorType indicates that:
4069ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4070  ** Non-uniform descriptor indexing must: be supported if all descriptor
4071     types in a slink:VkMutableDescriptorTypeListVALVE for
4072     ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE have the corresponding
4073     non-uniform indexing features enabled in
4074     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
4075  ** ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT with
4076     pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE relaxes
4077     the list of required descriptor types to the descriptor types which
4078     have the corresponding update-after-bind feature enabled in
4079     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
4080endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4081  ** Dynamically uniform descriptor indexing must: be supported if all
4082     descriptor types in a slink:VkMutableDescriptorTypeListVALVE for
4083     ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE have the corresponding dynamic
4084     indexing features enabled.
4085  ** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE must: be
4086     supported.
4087  ** ename:VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE must: be supported.
4088
4089:refpage: VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE
4090include::{chapters}/features.txt[tag=features]
4091
4092include::{generated}/validity/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.txt[]
4093--
4094endif::VK_VALVE_mutable_descriptor_type[]
4095
4096ifdef::VK_EXT_depth_clip_control[]
4097
4098[open,refpage='VkPhysicalDeviceDepthClipControlFeaturesEXT',desc='Structure describing additional depth clip control supported by an implementation',type='structs']
4099--
4100The sname:VkPhysicalDeviceDepthClipControlFeaturesEXT structure is defined
4101as:
4102
4103include::{generated}/api/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.txt[]
4104
4105The members of the sname:VkPhysicalDeviceDepthClipControlFeaturesEXT
4106structure describe the following features:
4107
4108  * [[features-depthClipControl]] pname:depthClipControl indicates that the
4109    implementation supports setting
4110    slink:VkPipelineViewportDepthClipControlCreateInfoEXT::pname:negativeOneToOne
4111    to ename:VK_TRUE.
4112
4113:refpage: VkPhysicalDeviceDepthClipControlFeaturesEXT
4114include::{chapters}/features.txt[tag=features]
4115
4116include::{generated}/validity/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.txt[]
4117--
4118
4119endif::VK_EXT_depth_clip_control[]
4120
4121ifdef::VK_KHR_workgroup_memory_explicit_layout[]
4122[open,refpage='VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',desc='Structure describing the workgroup storage explicit layout features that can be supported by an implementation',type='structs']
4123--
4124The sname:VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR structure
4125is defined as:
4126
4127include::{generated}/api/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.txt[]
4128
4129This structure describes the following features:
4130
4131  * pname:sType is the type of this structure.
4132  * pname:pNext is `NULL` or a pointer to a structure extending this
4133    structure.
4134  * [[features-workgroupMemoryExplicitLayout]]
4135    pname:workgroupMemoryExplicitLayout indicates whether the implementation
4136    supports the SPIR-V code:WorkgroupMemoryExplicitLayoutKHR capability.
4137  * [[features-workgroupMemoryExplicitLayoutScalarBlockLayout]]
4138    pname:workgroupMemoryExplicitLayoutScalarBlockLayout indicates whether
4139    the implementation supports scalar alignment for laying out Workgroup
4140    Blocks.
4141  * [[features-workgroupMemoryExplicitLayout8BitAccess]]
4142    pname:workgroupMemoryExplicitLayout8BitAccess indicates whether objects
4143    in the code:Workgroup storage class with the code:Block decoration can:
4144    have 8-bit integer members.
4145    If this feature is not enabled, 8-bit integer members must: not be used
4146    in such objects.
4147    This also indicates whether shader modules can: declare the
4148    code:WorkgroupMemoryExplicitLayout8BitAccessKHR capability.
4149  * [[features-workgroupMemoryExplicitLayout16BitAccess]]
4150    pname:workgroupMemoryExplicitLayout16BitAccess indicates whether objects
4151    in the code:Workgroup storage class with the code:Block decoration can:
4152    have 16-bit integer and 16-bit floating-point members.
4153    If this feature is not enabled, 16-bit integer or 16-bit floating-point
4154    members must: not be used in such objects.
4155    This also indicates whether shader modules can: declare the
4156    code:WorkgroupMemoryExplicitLayout16BitAccessKHR capability.
4157
4158:refpage: VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
4159include::{chapters}/features.txt[tag=features]
4160
4161include::{generated}/validity/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.txt[]
4162--
4163endif::VK_KHR_workgroup_memory_explicit_layout[]
4164
4165ifdef::VK_KHR_synchronization2[]
4166[open,refpage='VkPhysicalDeviceSynchronization2FeaturesKHR',desc='Structure describing whether the implementation supports v2 synchronization commands',type='structs']
4167--
4168The sname:VkPhysicalDeviceSynchronization2FeaturesKHR structure is defined
4169as:
4170
4171include::{generated}/api/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.txt[]
4172
4173This structure describes the following feature:
4174
4175  * pname:sType is the type of this structure.
4176  * pname:pNext is `NULL` or a pointer to a structure extending this
4177    structure.
4178  * [[features-synchronization2]] pname:synchronization2 indicates whether
4179    the implementation supports the new set of synchronization commands
4180    introduced in `apiext:VK_KHR_synchronization2`.
4181
4182:refpage: VkPhysicalDeviceSynchronization2FeaturesKHR
4183include::{chapters}/features.txt[tag=features]
4184
4185include::{generated}/validity/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.txt[]
4186--
4187endif::VK_KHR_synchronization2[]
4188
4189ifdef::VK_EXT_vertex_input_dynamic_state[]
4190[open,refpage='VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT',desc='Structure describing whether the dynamic vertex input state can be used',type='structs']
4191--
4192The sname:VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT structure is
4193defined as:
4194
4195include::{generated}/api/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.txt[]
4196
4197This structure describes the following feature:
4198
4199  * pname:sType is the type of this structure.
4200  * pname:pNext is `NULL` or a pointer to a structure extending this
4201    structure.
4202  * [[features-vertexInputDynamicState]] pname:vertexInputDynamicState
4203    indicates that the implementation supports the following dynamic states:
4204  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
4205
4206:refpage: VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
4207include::{chapters}/features.txt[tag=features]
4208
4209include::{generated}/validity/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.txt[]
4210--
4211endif::VK_EXT_vertex_input_dynamic_state[]
4212
4213ifdef::VK_KHR_fragment_shading_rate[]
4214[open,refpage='VkPhysicalDeviceFragmentShadingRateFeaturesKHR',desc='Structure indicating support for variable rate fragment shading',type='structs']
4215--
4216The sname:VkPhysicalDeviceFragmentShadingRateFeaturesKHR structure is
4217defined as:
4218
4219include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.txt[]
4220
4221This structure describes the following features:
4222
4223  * pname:sType is the type of this structure.
4224  * pname:pNext is `NULL` or a pointer to a structure extending this
4225    structure.
4226  * [[features-pipelineFragmentShadingRate]]
4227    pname:pipelineFragmentShadingRate indicates that the implementation
4228    supports the <<primsrast-fragment-shading-rate-pipeline, pipeline
4229    fragment shading rate>>.
4230  * [[features-primitiveFragmentShadingRate]]
4231    pname:primitiveFragmentShadingRate indicates that the implementation
4232    supports the <<primsrast-fragment-shading-rate-primitive, primitive
4233    fragment shading rate>>.
4234  * [[features-attachmentFragmentShadingRate]]
4235    pname:attachmentFragmentShadingRate indicates that the implementation
4236    supports the <<primsrast-fragment-shading-rate-attachment, attachment
4237    fragment shading rate>>.
4238
4239:refpage: VkPhysicalDeviceFragmentShadingRateFeaturesKHR
4240include::{chapters}/features.txt[tag=features]
4241
4242include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.txt[]
4243--
4244endif::VK_KHR_fragment_shading_rate[]
4245
4246ifdef::VK_NV_fragment_shading_rate_enums[]
4247[open,refpage='VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV',desc='Structure indicating support for fragment shading rate enums',type='structs']
4248--
4249The sname:VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV structure is
4250defined as:
4251
4252include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.txt[]
4253
4254This structure describes the following features:
4255
4256  * pname:sType is the type of this structure.
4257  * pname:pNext is `NULL` or a pointer to a structure extending this
4258    structure.
4259  * [[features-fragmentShadingRateEnums]] pname:fragmentShadingRateEnums
4260    indicates that the implementation supports specifying fragment shading
4261    rates using the ename:VkFragmentShadingRateNV enumerated type.
4262  * [[features-supersampleFragmentShadingRates]]
4263    pname:supersampleFragmentShadingRates indicates that the implementation
4264    supports fragment shading rate enum values indicating more than one
4265    invocation per fragment.
4266  * [[features-noInvocationFragmentShadingRates]]
4267    pname:noInvocationFragmentShadingRates indicates that the implementation
4268    supports a fragment shading rate enum value indicating that no fragment
4269    shaders should be invoked when that shading rate is used.
4270
4271:refpage: VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
4272include::{chapters}/features.txt[tag=features]
4273
4274include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.txt[]
4275--
4276endif::VK_NV_fragment_shading_rate_enums[]
4277
4278
4279ifdef::VK_NV_inherited_viewport_scissor[]
4280[open,refpage='VkPhysicalDeviceInheritedViewportScissorFeaturesNV',desc='Structure describing the viewport scissor inheritance behavior for an implementation',type='structs']
4281--
4282The sname:VkPhysicalDeviceInheritedViewportScissorFeaturesNV structure is
4283defined as:
4284
4285include::{generated}/api/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.txt[]
4286
4287This structure describes the following feature:
4288
4289  * pname:sType is the type of this structure.
4290  * pname:pNext is `NULL` or a pointer to a structure extending this
4291    structure.
4292    * [[features-inheritedViewportScissor2D]]
4293      pname:inheritedViewportScissor2D indicates whether secondary command
4294      buffers can inherit most of the dynamic state affected by
4295ifdef::VK_EXT_extended_dynamic_state[]
4296      ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT,
4297      ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT,
4298endif::VK_EXT_extended_dynamic_state[]
4299ifdef::VK_EXT_discard_rectangles[]
4300      ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
4301endif::VK_EXT_discard_rectangles[]
4302      ename:VK_DYNAMIC_STATE_VIEWPORT or ename:VK_DYNAMIC_STATE_SCISSOR,
4303      from a primary command buffer.
4304
4305:refpage: VkPhysicalDeviceInheritedViewportScissorFeaturesNV
4306include::{chapters}/features.txt[tag=features]
4307
4308include::{generated}/validity/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.txt[]
4309--
4310endif::VK_NV_inherited_viewport_scissor[]
4311
4312ifdef::VK_EXT_ycbcr_2plane_444_formats[]
4313[open,refpage='VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',desc='Structure describing whether the implementation supports additional 2-plane 444 {YCbCr} formats',type='structs']
4314--
4315The sname:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure is
4316defined as:
4317
4318include::{generated}/api/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.txt[]
4319
4320This structure describes the following feature:
4321
4322  * pname:sType is the type of this structure.
4323  * pname:pNext is `NULL` or a pointer to a structure extending this
4324    structure.
4325  * [[features-ycbcr2plane444Formats]] pname:ycbcr2plane444Formats indicates
4326    that the implementation supports the following 2-plane 444 {YCbCr}
4327    formats:
4328    ** ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT
4329    ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT
4330    ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT
4331    ** ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT
4332
4333:refpage: VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
4334include::{chapters}/features.txt[tag=features]
4335
4336include::{generated}/validity/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.txt[]
4337--
4338endif::VK_EXT_ycbcr_2plane_444_formats[]
4339
4340ifdef::VK_EXT_color_write_enable[]
4341[open,refpage='VkPhysicalDeviceColorWriteEnableFeaturesEXT',desc='Structure describing whether writes to color attachments can be enabled and disabled dynamically',type='structs']
4342--
4343The sname:VkPhysicalDeviceColorWriteEnableFeaturesEXT structure is defined
4344as:
4345
4346include::{generated}/api/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.txt[]
4347
4348This structure describes the following feature:
4349
4350  * pname:sType is the type of this structure.
4351  * pname:pNext is `NULL` or a pointer to a structure extending this
4352    structure.
4353  * [[features-colorWriteEnable]] pname:colorWriteEnable indicates that the
4354    implementation supports the dynamic state
4355    ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT.
4356
4357:refpage: VkPhysicalDeviceColorWriteEnableFeaturesEXT
4358include::{chapters}/features.txt[tag=features]
4359
4360include::{generated}/validity/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.txt[]
4361--
4362endif::VK_EXT_color_write_enable[]
4363
4364ifdef::VK_EXT_provoking_vertex[]
4365[open,refpage='VkPhysicalDeviceProvokingVertexFeaturesEXT',desc='Structure describing the provoking vertex features that can be supported by an implementation',type='structs']
4366--
4367The sname:VkPhysicalDeviceProvokingVertexFeaturesEXT structure is defined
4368as:
4369
4370include::{generated}/api/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.txt[]
4371
4372This structure describes the following feature:
4373
4374  * pname:sType is the type of this structure.
4375  * pname:pNext is `NULL` or a pointer to a structure extending this
4376    structure.
4377  * [[features-provokingVertexLast]] pname:provokingVertexLast indicates
4378    whether the implementation supports the
4379    ename:VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
4380    <<VkProvokingVertexModeEXT,provoking vertex mode>> for flat shading.
4381  * [[features-transformFeedbackPreservesProvokingVertex]]
4382    pname:transformFeedbackPreservesProvokingVertex indicates that the order
4383    of vertices within each primitive written by transform feedback will
4384    preserve the provoking vertex.
4385    This does not apply to triangle fan primitives when
4386    <<limits-transformFeedbackPreservesTriangleFanProvokingVertex,pname:transformFeedbackPreservesTriangleFanProvokingVertex>>
4387    is ename:VK_FALSE.
4388    pname:transformFeedbackPreservesProvokingVertex must: be ename:VK_FALSE
4389    when the apiext:VK_EXT_transform_feedback extension is not supported.
4390
4391:refpage: VkPhysicalDeviceProvokingVertexFeaturesEXT
4392include::{chapters}/features.txt[tag=features]
4393
4394ifdef::VK_EXT_transform_feedback[]
4395When sname:VkPhysicalDeviceProvokingVertexFeaturesEXT is in the pname:pNext
4396chain of slink:VkDeviceCreateInfo but the
4397<<features-transformFeedback,transform feedback feature>> is not enabled,
4398the value of pname:transformFeedbackPreservesProvokingVertex is ignored.
4399endif::VK_EXT_transform_feedback[]
4400
4401include::{generated}/validity/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.txt[]
4402--
4403endif::VK_EXT_provoking_vertex[]
4404
4405ifdef::VK_EXT_pageable_device_local_memory[]
4406[open,refpage='VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',desc='Structure describing whether the implementation supports pageable device-local memory',type='structs']
4407--
4408The sname:VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT structure is
4409defined as:
4410
4411include::{generated}/api/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.txt[]
4412
4413This structure describes the following feature:
4414
4415  * pname:sType is the type of this structure.
4416  * pname:pNext is `NULL` or a pointer to a structure extending this
4417    structure.
4418  * [[features-pageableDeviceLocalMemory]] pname:pageableDeviceLocalMemory
4419    indicates that the implementation supports pageable device-local memory
4420    and may: transparently move device-local memory allocations to
4421    host-local memory to better share device-local memory with other
4422    applications.
4423
4424:refpage: VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
4425include::{chapters}/features.txt[tag=features]
4426
4427include::{generated}/validity/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.txt[]
4428--
4429endif::VK_EXT_pageable_device_local_memory[]
4430
4431ifdef::VK_EXT_multi_draw[]
4432[open,refpage='VkPhysicalDeviceMultiDrawFeaturesEXT',desc='Structure describing whether the implementation supports multi draw functionality',type='structs']
4433--
4434The sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure is defined as:
4435
4436include::{generated}/api/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.txt[]
4437
4438The members of the sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure
4439describe the following features:
4440
4441  * pname:sType is the type of this structure.
4442  * pname:pNext is `NULL` or a pointer to a structure extending this
4443    structure.
4444  * [[features-multiDraw]] pname:multiDraw indicates that the implementation
4445    supports flink:vkCmdDrawMultiEXT and flink:vkCmdDrawMultiIndexedEXT.
4446
4447:refpage: VkPhysicalDeviceMultiDrawFeaturesEXT
4448include::{chapters}/features.txt[tag=features]
4449
4450include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.txt[]
4451--
4452endif::VK_EXT_multi_draw[]
4453
4454ifdef::VK_NV_ray_tracing_motion_blur[]
4455[open,refpage='VkPhysicalDeviceRayTracingMotionBlurFeaturesNV',desc='Structure describing the ray tracing motion blur features that can be supported by an implementation',type='structs']
4456--
4457The sname:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV structure is
4458defined as:
4459
4460include::{generated}/api/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.txt[]
4461
4462This structure describes the following feature:
4463
4464  * pname:sType is the type of this structure.
4465  * pname:pNext is `NULL` or a pointer to a structure extending this
4466    structure.
4467  * [[features-rayTracingMotionBlur]] pname:rayTracingMotionBlur indicates
4468    whether the implementation supports the motion blur feature.
4469  * [[features-rayTracingMotionBlurPipelineTraceRaysIndirect]]
4470    pname:rayTracingMotionBlurPipelineTraceRaysIndirect indicates whether
4471    the implementation supports indirect ray tracing commands with the
4472    motion blur feature enabled.
4473
4474:refpage: VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
4475include::{chapters}/features.txt[tag=features]
4476
4477include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.txt[]
4478--
4479endif::VK_NV_ray_tracing_motion_blur[]
4480
4481ifdef::VK_HUAWEI_subpass_shading[]
4482[open,refpage='VkPhysicalDeviceSubpassShadingFeaturesHUAWEI',desc='Structure describing whether subpass shading is enabled',type='structs']
4483--
4484The sname:VkPhysicalDeviceSubpassShadingFeaturesHUAWEI structure is defined
4485as:
4486
4487include::{generated}/api/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.txt[]
4488  * pname:sType is the type of this structure.
4489  * pname:pNext is `NULL` or a pointer to a structure extending this
4490    structure.
4491  * [[features-subpassShading]] pname:subpassShading specifies whether
4492    subpass shading is supported.
4493
4494:refpage: VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
4495include::{chapters}/features.txt[tag=features]
4496
4497include::{generated}/validity/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.txt[]
4498--
4499endif::VK_HUAWEI_subpass_shading[]
4500
4501ifdef::VK_NV_external_memory_rdma[]
4502[open,refpage='VkPhysicalDeviceExternalMemoryRDMAFeaturesNV',desc='Structure describing the external memory RDMA features supported by the implementation',type='structs']
4503--
4504The sname:VkPhysicalDeviceExternalMemoryRDMAFeaturesNV structure is defined
4505as:
4506
4507include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.txt[]
4508
4509This structure describes the following feature:
4510
4511  * pname:sType is the type of this structure.
4512  * pname:pNext is `NULL` or a pointer to a structure extending this
4513    structure.
4514  * [[features-externalMemoryRDMA]] pname:externalMemoryRDMA indicates
4515    whether the implementation has support for the
4516    ename:VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV memory property and the
4517    ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV external memory
4518    handle type.
4519
4520:refpage: VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
4521include::{chapters}/features.txt[tag=features]
4522
4523include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.txt[]
4524--
4525endif::VK_NV_external_memory_rdma[]
4526
4527ifdef::VK_KHR_present_id[]
4528[open,refpage='VkPhysicalDevicePresentIdFeaturesKHR',desc='Structure indicating support for present id',type='structs']
4529--
4530The sname:VkPhysicalDevicePresentIdFeaturesKHR structure is defined as:
4531
4532include::{generated}/api/structs/VkPhysicalDevicePresentIdFeaturesKHR.txt[]
4533
4534This structure describes the following feature:
4535
4536  * pname:sType is the type of this structure.
4537  * pname:pNext is `NULL` or a pointer to a structure extending this
4538    structure.
4539  * [[features-presentId]] pname:presentId indicates that the implementation
4540    supports specifying present ID values in the sname:VkPresentIdKHR
4541    extension to the sname:VkPresentInfoKHR struct.
4542
4543:refpage: VkPhysicalDevicePresentIdFeaturesKHR
4544include::{chapters}/features.txt[tag=features]
4545
4546include::{generated}/validity/structs/VkPhysicalDevicePresentIdFeaturesKHR.txt[]
4547--
4548endif::VK_KHR_present_id[]
4549
4550ifdef::VK_KHR_present_wait[]
4551[open,refpage='VkPhysicalDevicePresentWaitFeaturesKHR',desc='Structure indicating support for present wait',type='structs']
4552--
4553The sname:VkPhysicalDevicePresentWaitFeaturesKHR structure is defined as:
4554
4555include::{generated}/api/structs/VkPhysicalDevicePresentWaitFeaturesKHR.txt[]
4556
4557This structure describes the following feature:
4558
4559  * pname:sType is the type of this structure.
4560  * pname:pNext is `NULL` or a pointer to a structure extending this
4561    structure.
4562  * [[features-presentWait]] pname:presentWait indicates that the
4563    implementation supports fname:vkWaitForPresentKHR.
4564
4565:refpage: VkPhysicalDevicePresentWaitFeaturesKHR
4566include::{chapters}/features.txt[tag=features]
4567
4568include::{generated}/validity/structs/VkPhysicalDevicePresentWaitFeaturesKHR.txt[]
4569--
4570endif::VK_KHR_present_wait[]
4571
4572ifdef::VK_KHR_shader_integer_dot_product[]
4573[open,refpage='VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR',desc='Structure describing integer dot product features that can be supported by an implementation',type='structs']
4574--
4575The sname:VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR structure is
4576defined as:
4577
4578include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.txt[]
4579
4580The members of the sname:VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR
4581structure describe the following features:
4582
4583  * pname:sType is the type of this structure.
4584  * pname:pNext is `NULL` or a pointer to a structure extending this
4585    structure.
4586  * [[features-shaderIntegerDotProduct]] pname:shaderIntegerDotProduct
4587    specifies whether shader modules can: declare the
4588    code:DotProductInputAllKHR, code:DotProductInput4x8BitKHR,
4589    code:DotProductInput4x8BitPackedKHR and code:DotProductKHR capabilities.
4590
4591:refpage: VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR
4592include::{chapters}/features.txt[tag=features]
4593
4594include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.txt[]
4595--
4596endif::VK_KHR_shader_integer_dot_product[]
4597
4598ifdef::VK_EXT_rgba10x6_formats[]
4599[open,refpage='VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT',desc='Structure describing whether rendering to VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 formats can be supported by an implementation',type='structs']
4600--
4601The sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT structure is defined
4602as:
4603
4604include::{generated}/api/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.txt[]
4605
4606The members of the sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
4607structure describe the following features:
4608
4609  * pname:sType is the type of this structure.
4610  * pname:pNext is `NULL` or a pointer to a structure extending this
4611    structure.
4612  * [[features-formatRgba10x6WithoutYCbCrSampler]]
4613    pname:formatRgba10x6WithoutYCbCrSampler indicates that
4614    ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 can: be used with a
4615    sname:VkImageView with pname:subresourceRange.aspectMask equal to
4616    ename:VK_IMAGE_ASPECT_COLOR_BIT without a <<samplers-YCbCr-conversion,
4617    sampler {YCbCr} conversion>> enabled.
4618
4619:refpage: VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
4620include::{chapters}/features.txt[tag=features]
4621
4622include::{generated}/validity/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.txt[]
4623--
4624endif::VK_EXT_rgba10x6_formats[]
4625
4626ifdef::VK_KHR_maintenance4[]
4627[open,refpage='VkPhysicalDeviceMaintenance4FeaturesKHR',desc='Structure describing whether the implementation supports maintenance4 functionality',type='structs']
4628--
4629The sname:VkPhysicalDeviceMaintenance4FeaturesKHR structure is defined as:
4630
4631include::{generated}/api/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.txt[]
4632
4633This structure describes the following features:
4634
4635  * [[features-maintenance4]] pname:maintenance4 indicates that the
4636    implementation supports the following:
4637  ** The application may: destroy a slink:VkPipelineLayout object
4638     immediately after using it to create another object.
4639  ** code:LocalSizeId can: be used as an alternative to code:LocalSize to
4640     specify the local workgroup size with specialization constants.
4641  ** Images created with identical creation parameters will always have the
4642     same alignment requirements.
4643  ** The size memory requirement of a buffer or image is never greater than
4644     that of another buffer or image created with a greater or equal size.
4645  ** Push constants do not have to be initialized before they are
4646     dynamically accessed.
4647  ** The interface matching rules allow a larger output vector to match with
4648     a smaller input vector, with additional values being discarded.
4649
4650:refpage: VkPhysicalDeviceMaintenance4FeaturesKHR
4651include::{chapters}/features.txt[tag=features]
4652
4653include::{generated}/validity/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.txt[]
4654--
4655endif::VK_KHR_maintenance4[]
4656
4657ifdef::VK_KHR_dynamic_rendering[]
4658[open,refpage='VkPhysicalDeviceDynamicRenderingFeaturesKHR',desc='Structure indicating support for dynamic render pass instances',type='structs']
4659--
4660The sname:VkPhysicalDeviceDynamicRenderingFeaturesKHR structure is defined
4661as:
4662
4663include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.txt[]
4664
4665The members of the sname:VkPhysicalDeviceDynamicRenderingFeaturesKHR
4666structure describe the following features:
4667
4668  * [[features-dynamicRendering]] pname:dynamicRendering specifies that the
4669    implementation supports dynamic render pass instances using the
4670    flink:vkCmdBeginRenderingKHR command.
4671
4672:refpage: VkPhysicalDeviceDynamicRenderingFeaturesKHR
4673include::{chapters}/features.txt[tag=features]
4674
4675include::{generated}/validity/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.txt[]
4676--
4677endif::VK_KHR_dynamic_rendering[]
4678
4679ifdef::VK_EXT_image_view_min_lod[]
4680[open,refpage='VkPhysicalDeviceImageViewMinLodFeaturesEXT',desc='Structure describing whether clamping the min lod of a image view is supported by the implementation',type='structs']
4681--
4682The sname:VkPhysicalDeviceImageViewMinLodFeaturesEXT structure is defined
4683as:
4684
4685include::{generated}/api/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.txt[]
4686
4687This structure describes the following features:
4688
4689  * [[features-minLod]] pname:minLod indicates whether the implementation
4690    supports clamping the minimum LOD value during
4691    <<textures-image-level-selection,Image Level(s) Selection>> and
4692    <<textures-integer-coordinate-operations,Integer Texel Coordinate
4693    Operations>> with a given slink:VkImageView by
4694    slink:VkImageViewMinLodCreateInfoEXT::pname:minLod.
4695
4696:refpage: VkPhysicalDeviceImageViewMinLodFeaturesEXT
4697include::{chapters}/features.txt[tag=features]
4698
4699include::{generated}/validity/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.txt[]
4700--
4701endif::VK_EXT_image_view_min_lod[]
4702
4703ifdef::VK_ARM_rasterization_order_attachment_access[]
4704[open,refpage='VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM',desc='Structure describing whether rasterization order attachment access can be supported by an implementation',type='structs']
4705--
4706The sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
4707structure is defined as:
4708
4709include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.txt[]
4710
4711The members of the
4712sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
4713structure describe the following features:
4714
4715  * [[features-rasterizationOrderColorAttachmentAccess]]
4716    pname:rasterizationOrderColorAttachmentAccess indicates that
4717    rasterization order access to color and input attachments is supported
4718    by the implementation.
4719  * [[features-rasterizationOrderDepthAttachmentAccess]]
4720    pname:rasterizationOrderDepthAttachmentAccess indicates that
4721    rasterization order access to the depth aspect of depth/stencil and
4722    input attachments is supported by the implementation.
4723  * [[features-rasterizationOrderStencilAttachmentAccess]]
4724    pname:rasterizationOrderStencilAttachmentAccess indicates that
4725    rasterization order access to the stencil aspect of depth/stencil and
4726    input attachments is supported by the implementation.
4727
4728If the sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM
4729structure is included in the pname:pNext chain of
4730slink:VkPhysicalDeviceFeatures2, it is filled with values indicating whether
4731the feature is supported.
4732sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM can:
4733also be used in the pname:pNext chain of slink:VkDeviceCreateInfo to enable
4734features.
4735
4736include::{generated}/validity/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.txt[]
4737--
4738
4739endif::VK_ARM_rasterization_order_attachment_access[]
4740
4741
4742[[features-requirements]]
4743== Feature Requirements
4744
4745All Vulkan graphics implementations must: support the following features:
4746
4747ifdef::VK_KHR_portability_subset[]
4748  * <<features-robustBufferAccess, pname:robustBufferAccess>>, unless the
4749    `apiext:VK_KHR_portability_subset` extension is enabled.
4750endif::VK_KHR_portability_subset[]
4751ifndef::VK_KHR_portability_subset[]
4752  * <<features-robustBufferAccess, pname:robustBufferAccess>>
4753endif::VK_KHR_portability_subset[]
4754ifdef::VK_VERSION_1_1[]
4755  * <<features-multiview, pname:multiview>>, if Vulkan 1.1 is supported.
4756ifdef::VK_KHR_shader_draw_parameters[]
4757  * <<features-shaderDrawParameters,pname:shaderDrawParameters>>, if the
4758    `apiext:VK_KHR_shader_draw_parameters` extension is supported.
4759endif::VK_KHR_shader_draw_parameters[]
4760endif::VK_VERSION_1_1[]
4761ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
4762  * <<features-uniformBufferStandardLayout,pname:uniformBufferStandardLayout>>,
4763    if Vulkan 1.2 or the `apiext:VK_KHR_uniform_buffer_standard_layout`
4764    extension is supported.
4765endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
4766ifdef::VK_KHR_variable_pointers[]
4767  * <<features-variablePointersStorageBuffer,
4768    pname:variablePointersStorageBuffer>>, if the
4769    `apiext:VK_KHR_variable_pointers` extension is supported.
4770endif::VK_KHR_variable_pointers[]
4771ifdef::VK_KHR_8bit_storage[]
4772  * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if
4773    the `apiext:VK_KHR_8bit_storage` extension is supported.
4774endif::VK_KHR_8bit_storage[]
4775ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[]
4776  * <<features-storageBuffer8BitAccess, pname:StorageBuffer8BitAccess>>, if
4777    <<features-uniformAndStorageBuffer8BitAccess,
4778    pname:uniformAndStorageBuffer8BitAccess>> is enabled.
4779endif::VK_VERSION_1_2,VK_KHR_8bit_storage[]
4780ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4781  * If
4782ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,descriptorIndexing>> feature is supported, or if]
4783    the `apiext:VK_EXT_descriptor_indexing` extension is supported:
4784  ** <<features-shaderSampledImageArrayDynamicIndexing,
4785     pname:shaderSampledImageArrayDynamicIndexing>>
4786  ** <<features-shaderStorageBufferArrayDynamicIndexing,
4787     pname:shaderStorageBufferArrayDynamicIndexing>>
4788  ** <<features-shaderUniformTexelBufferArrayDynamicIndexing,
4789     pname:shaderUniformTexelBufferArrayDynamicIndexing>>
4790  ** <<features-shaderStorageTexelBufferArrayDynamicIndexing,
4791     pname:shaderStorageTexelBufferArrayDynamicIndexing>>
4792  ** <<features-shaderSampledImageArrayNonUniformIndexing,
4793     pname:shaderSampledImageArrayNonUniformIndexing>>
4794  ** <<features-shaderStorageBufferArrayNonUniformIndexing,
4795     pname:shaderStorageBufferArrayNonUniformIndexing>>
4796  ** <<features-shaderUniformTexelBufferArrayNonUniformIndexing,
4797     pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
4798  ** <<features-descriptorBindingSampledImageUpdateAfterBind,
4799     pname:descriptorBindingSampledImageUpdateAfterBind>>
4800  ** <<features-descriptorBindingStorageImageUpdateAfterBind,
4801     pname:descriptorBindingStorageImageUpdateAfterBind>>
4802  ** <<features-descriptorBindingStorageBufferUpdateAfterBind,
4803     pname:descriptorBindingStorageBufferUpdateAfterBind>> (see also
4804     <<limits-robustBufferAccessUpdateAfterBind,
4805     pname:robustBufferAccessUpdateAfterBind>>)
4806  ** <<features-descriptorBindingUniformTexelBufferUpdateAfterBind,
4807     pname:descriptorBindingUniformTexelBufferUpdateAfterBind>> (see also
4808     <<limits-robustBufferAccessUpdateAfterBind,
4809     pname:robustBufferAccessUpdateAfterBind>>)
4810  ** <<features-descriptorBindingStorageTexelBufferUpdateAfterBind,
4811     pname:descriptorBindingStorageTexelBufferUpdateAfterBind>> (see also
4812     <<limits-robustBufferAccessUpdateAfterBind,
4813     pname:robustBufferAccessUpdateAfterBind>>)
4814  ** <<features-descriptorBindingUpdateUnusedWhilePending,
4815     pname:descriptorBindingUpdateUnusedWhilePending>>
4816  ** <<features-descriptorBindingPartiallyBound,
4817     pname:descriptorBindingPartiallyBound>>
4818  ** <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
4819endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4820ifdef::VK_EXT_inline_uniform_block[]
4821  * <<features-inlineUniformBlock,pname:inlineUniformBlock>>, if the
4822    `apiext:VK_EXT_inline_uniform_block` extension is supported.
4823ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4824  * <<features-descriptorBindingInlineUniformBlockUpdateAfterBind,
4825    pname:descriptorBindingInlineUniformBlockUpdateAfterBind>>, if the
4826    `apiext:VK_EXT_inline_uniform_block` extension is supported; and if
4827ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,pname:descriptorIndexing>> feature is supported, or]
4828    the `apiext:VK_EXT_descriptor_indexing` extension is supported.
4829endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
4830endif::VK_EXT_inline_uniform_block[]
4831ifdef::VK_EXT_scalar_block_layout[]
4832  * <<features-scalarBlockLayout,pname:scalarBlockLayout>>, if the
4833    `apiext:VK_EXT_scalar_block_layout` extension is supported.
4834endif::VK_EXT_scalar_block_layout[]
4835ifdef::VK_VERSION_1_2[]
4836  * <<features-subgroupBroadcastDynamicId,
4837    pname:subgroupBroadcastDynamicId>>, if Vulkan 1.2 is supported.
4838endif::VK_VERSION_1_2[]
4839ifdef::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
4840  * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>,
4841    if the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is
4842    supported.
4843endif::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
4844ifdef::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
4845  * <<features-drawIndirectCount, pname:drawIndirectCount>>, if the
4846    `apiext:VK_KHR_draw_indirect_count` extension is supported.
4847endif::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
4848ifdef::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
4849  * <<features-samplerFilterMinmax, pname:samplerFilterMinmax>>, if the
4850    `apiext:VK_EXT_sampler_filter_minmax` extension is supported.
4851endif::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
4852ifdef::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
4853  * <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>>,
4854    if the `apiext:VK_EXT_shader_viewport_index_layer` extension is
4855    supported.
4856  * <<features-shaderOutputLayer, pname:shaderOutputLayer>>, if the
4857    `apiext:VK_EXT_shader_viewport_index_layer` extension is supported.
4858endif::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
4859ifdef::VK_EXT_subgroup_size_control[]
4860  * <<features-subgroupSizeControl, pname:subgroupSizeControl>>, if the
4861    `apiext:VK_EXT_subgroup_size_control` extension is supported.
4862  * <<features-computeFullSubgroups, pname:computeFullSubgroups>>, if the
4863    `apiext:VK_EXT_subgroup_size_control` extension is supported.
4864endif::VK_EXT_subgroup_size_control[]
4865ifdef::VK_EXT_device_memory_report[]
4866  * <<features-deviceMemoryReport, pname:deviceMemoryReport>>, if the
4867    `apiext:VK_EXT_device_memory_report` extension is supported.
4868endif::VK_EXT_device_memory_report[]
4869ifdef::VK_EXT_global_priority_query[]
4870  * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the
4871    `apiext:VK_EXT_global_priority_query` extension is supported.
4872endif::VK_EXT_global_priority_query[]
4873ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
4874  * <<features-imagelessFramebuffer, pname:imagelessFramebuffer>>, if Vulkan
4875    1.2 or the `apiext:VK_KHR_imageless_framebuffer` extension is supported.
4876endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
4877ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
4878  * <<features-separateDepthStencilLayouts,
4879    pname:separateDepthStencilLayouts>>, if Vulkan 1.2 or the
4880    `apiext:VK_KHR_separate_depth_stencil_layouts` extension is supported.
4881endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
4882ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
4883  * <<features-hostQueryReset, pname:hostQueryReset>>, if Vulkan 1.2 or the
4884    `apiext:VK_EXT_host_query_reset` extension is supported.
4885endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
4886ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
4887  * <<features-timelineSemaphore, pname:timelineSemaphore>>, if Vulkan 1.2
4888    or the `apiext:VK_KHR_timeline_semaphore` extension is supported.
4889endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
4890ifdef::VK_KHR_acceleration_structure[]
4891  * If the `apiext:VK_KHR_acceleration_structure` extension is supported:
4892  ** <<features-accelerationStructure,pname:accelerationStructure>>
4893  ** All the features required by
4894ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,descriptorIndexing>> feature if Vulkan 1.2 is supported, or]
4895     the `apiext:VK_EXT_descriptor_indexing` extension.
4896  ** <<features-descriptorBindingAccelerationStructureUpdateAfterBind,
4897     pname:descriptorBindingAccelerationStructureUpdateAfterBind>>
4898  ** <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> from
4899ifdef::VK_VERSION_1_2[Vulkan 1.2 or]
4900     the `apiext:VK_KHR_buffer_device_address` extension.
4901endif::VK_KHR_acceleration_structure[]
4902ifdef::VK_KHR_ray_tracing_pipeline[]
4903  * If the `apiext:VK_KHR_ray_tracing_pipeline` extension is supported:
4904  ** <<features-accelerationStructure,pname:accelerationStructure>> from
4905     `apiext:VK_KHR_acceleration_structure`
4906  ** <<features-rayTracingPipeline, pname:rayTracingPipeline>>
4907  ** <<features-rayTracingPipelineTraceRaysIndirect,
4908     pname:rayTracingPipelineTraceRaysIndirect>>
4909  ** <<features-rayTraversalPrimitiveCulling,
4910     pname:rayTraversalPrimitiveCulling>>, if <<features-rayQuery,
4911     pname:rayQuery>> is supported from `apiext:VK_KHR_ray_query`
4912  ** the `apiext:VK_KHR_pipeline_library` extension.
4913endif::VK_KHR_ray_tracing_pipeline[]
4914ifdef::VK_KHR_ray_query[]
4915  * If the `apiext:VK_KHR_ray_query` extension is supported:
4916  ** <<features-accelerationStructure,pname:accelerationStructure>> from
4917     `apiext:VK_KHR_acceleration_structure`
4918  ** <<features-rayQuery, pname:rayQuery>>
4919endif::VK_KHR_ray_query[]
4920ifdef::VK_EXT_pipeline_creation_cache_control[]
4921  * <<features-pipelineCreationCacheControl,
4922    pname:pipelineCreationCacheControl>>, if the
4923    `apiext:VK_EXT_pipeline_creation_cache_control` extension is supported.
4924endif::VK_EXT_pipeline_creation_cache_control[]
4925ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
4926  * <<features-subgroup-extended-types, pname:shaderSubgroupExtendedTypes>>,
4927    if Vulkan 1.2 or the `apiext:VK_KHR_shader_subgroup_extended_types`
4928    extension is supported.
4929endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
4930ifdef::VK_KHR_sampler_ycbcr_conversion[]
4931  * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>, if
4932    the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is supported.
4933endif::VK_KHR_sampler_ycbcr_conversion[]
4934ifdef::VK_KHR_pipeline_executable_properties[]
4935  * <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>>, if
4936    the `apiext:VK_KHR_pipeline_executable_properties` extension is
4937    supported.
4938endif::VK_KHR_pipeline_executable_properties[]
4939ifdef::VK_EXT_texture_compression_astc_hdr[]
4940  * <<features-textureCompressionASTC_HDR,
4941    pname:textureCompressionASTC_HDR>>, if the
4942    `apiext:VK_EXT_texture_compression_astc_hdr` extension is supported.
4943endif::VK_EXT_texture_compression_astc_hdr[]
4944ifdef::VK_EXT_depth_clip_enable[]
4945  * <<features-depthClipEnable, pname:depthClipEnable>>, if the
4946    `apiext:VK_EXT_depth_clip_enable` extension is supported.
4947endif::VK_EXT_depth_clip_enable[]
4948ifdef::VK_EXT_memory_priority[]
4949  * <<features-memoryPriority, pname:memoryPriority>>, if the
4950    `apiext:VK_EXT_memory_priority` extension is supported.
4951endif::VK_EXT_memory_priority[]
4952ifdef::VK_EXT_ycbcr_image_arrays[]
4953  * <<features-ycbcrImageArrays, pname:ycbcrImageArrays>>, if the
4954    `apiext:VK_EXT_ycbcr_image_arrays` extension is supported.
4955endif::VK_EXT_ycbcr_image_arrays[]
4956ifdef::VK_EXT_index_type_uint8[]
4957  * <<features-indexTypeUint8, pname:indexTypeUint8>>, if the
4958    `apiext:VK_EXT_index_type_uint8` extension is supported.
4959endif::VK_EXT_index_type_uint8[]
4960ifdef::VK_EXT_primitive_topology_list_restart[]
4961  * <<features-primitiveTopologyListRestart,
4962    pname:primitiveTopologyListRestart>>, if the
4963    `apiext:VK_EXT_primitive_topology_list_restart` extension is supported.
4964endif::VK_EXT_primitive_topology_list_restart[]
4965ifdef::VK_EXT_shader_demote_to_helper_invocation[]
4966  * <<features-shaderDemoteToHelperInvocation,
4967    pname:shaderDemoteToHelperInvocation>>, if the
4968    `apiext:VK_EXT_shader_demote_to_helper_invocation` extension is
4969    supported.
4970endif::VK_EXT_shader_demote_to_helper_invocation[]
4971ifdef::VK_EXT_texel_buffer_alignment[]
4972  * <<features-texelBufferAlignment, pname:texelBufferAlignment>>, if the
4973    `apiext:VK_EXT_texel_buffer_alignment` extension is supported.
4974endif::VK_EXT_texel_buffer_alignment[]
4975ifdef::VK_KHR_vulkan_memory_model[]
4976  * <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>, if the
4977    `apiext:VK_KHR_vulkan_memory_model` extension is supported.
4978endif::VK_KHR_vulkan_memory_model[]
4979ifdef::VK_KHR_buffer_device_address[]
4980  * <<features-bufferDeviceAddress, pname:bufferDeviceAddress>>, if the
4981    `apiext:VK_KHR_buffer_device_address` extension is supported.
4982endif::VK_KHR_buffer_device_address[]
4983ifdef::VK_KHR_performance_query[]
4984  * <<VkPhysicalDevicePerformanceQueryFeaturesKHR,
4985    pname:performanceCounterQueryPools>>, if the
4986    `apiext:VK_KHR_performance_query` extension is supported.
4987endif::VK_KHR_performance_query[]
4988ifdef::VK_EXT_transform_feedback[]
4989  * <<features-transformFeedback, pname:transformFeedback>>, if the
4990    `apiext:VK_EXT_transform_feedback` extension is supported.
4991endif::VK_EXT_transform_feedback[]
4992ifdef::VK_EXT_conditional_rendering[]
4993  * <<features-conditionalRendering, pname:conditionalRendering>>, if the
4994    `apiext:VK_EXT_conditional_rendering` extension is supported.
4995endif::VK_EXT_conditional_rendering[]
4996ifdef::VK_EXT_vertex_attribute_divisor[]
4997  * <<features-vertexAttributeInstanceRateDivisor,
4998    pname:vertexAttributeInstanceRateDivisor>>, if the
4999    `apiext:VK_EXT_vertex_attribute_divisor` extension is supported.
5000endif::VK_EXT_vertex_attribute_divisor[]
5001ifdef::VK_EXT_fragment_density_map[]
5002  * <<features-fragmentDensityMap, pname:fragmentDensityMap>>, if the
5003    `apiext:VK_EXT_fragment_density_map` extension is supported.
5004endif::VK_EXT_fragment_density_map[]
5005ifdef::VK_KHR_shader_clock[]
5006  * <<features-shaderSubgroupClock, pname:shaderSubgroupClock>>, if the
5007    `apiext:VK_KHR_shader_clock` extension is supported.
5008endif::VK_KHR_shader_clock[]
5009ifdef::VK_KHR_shader_atomic_int64[]
5010  * <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>,
5011    if the `apiext:VK_KHR_shader_atomic_int64` extension is supported.
5012endif::VK_KHR_shader_atomic_int64[]
5013ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
5014  * <<features-shaderInt64, pname:shaderInt64>>, if the
5015    <<features-shaderSharedInt64Atomics, pname:shaderSharedInt64Atomics>> or
5016    <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>
5017    features are supported.
5018endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
5019ifdef::VK_KHR_shader_float16_int8[]
5020  * <<features-shaderFloat16, pname:shaderFloat16>> or
5021    <<features-shaderInt8, pname:shaderInt8>>, if the
5022    `apiext:VK_KHR_shader_float16_int8` extension is supported.
5023endif::VK_KHR_shader_float16_int8[]
5024ifdef::VK_EXT_fragment_shader_interlock[]
5025  * <<features-fragmentShaderSampleInterlock,
5026    pname:fragmentShaderSampleInterlock>> or
5027    <<features-fragmentShaderPixelInterlock,
5028    pname:fragmentShaderPixelInterlock>> or
5029    <<features-fragmentShaderShadingRateInterlock,
5030    pname:fragmentShaderShadingRateInterlock>>, if the
5031    `apiext:VK_EXT_fragment_shader_interlock` extension is supported.
5032endif::VK_EXT_fragment_shader_interlock[]
5033ifdef::VK_EXT_line_rasterization[]
5034  * <<features-rectangularLines, pname:rectangularLines>> or
5035    <<features-bresenhamLines, pname:bresenhamLines>> or
5036    <<features-smoothLines, pname:smoothLines>> or
5037    <<features-stippledRectangularLines, pname:stippledRectangularLines>> or
5038    <<features-stippledBresenhamLines, pname:stippledBresenhamLines>> or
5039    <<features-stippledSmoothLines, pname:stippledSmoothLines>>, if the
5040    `apiext:VK_EXT_line_rasterization` extension is supported.
5041endif::VK_EXT_line_rasterization[]
5042ifdef::VK_KHR_16bit_storage[]
5043  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
5044    if the `apiext:VK_KHR_16bit_storage` extension is supported.
5045endif::VK_KHR_16bit_storage[]
5046ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
5047  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
5048    if <<features-uniformAndStorageBuffer16BitAccess,
5049    pname:uniformAndStorageBuffer16BitAccess>> is enabled.
5050endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
5051ifdef::VK_EXT_image_robustness[]
5052  * <<features-robustImageAccess, pname:robustImageAccess>>, if the
5053    `apiext:VK_EXT_image_robustness` extension is supported.
5054endif::VK_EXT_image_robustness[]
5055ifdef::VK_EXT_4444_formats[]
5056  * <<features-formatA4R4G4B4, pname:formatA4R4G4B4>>, if the
5057    `apiext:VK_EXT_4444_formats` extension is supported.
5058endif::VK_EXT_4444_formats[]
5059ifdef::VK_VALVE_mutable_descriptor_type[]
5060  * <<features-mutableDescriptorType, pname:mutableDescriptorType>>, if the
5061    `apiext:VK_VALVE_mutable_descriptor_type` extension is supported.
5062endif::VK_VALVE_mutable_descriptor_type[]
5063ifdef::VK_EXT_shader_image_atomic_int64[]
5064  * <<features-shaderInt64, pname:shaderInt64>> and
5065    <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
5066    the `apiext:VK_EXT_shader_image_atomic_int64` extension is supported.
5067  * <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
5068    the <<features-sparseImageInt64Atomics, pname:sparseImageInt64Atomics>>
5069    feature is supported.
5070endif::VK_EXT_shader_image_atomic_int64[]
5071ifdef::VK_EXT_shader_atomic_float[]
5072  * <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>>,
5073    if the <<features-sparseImageFloat32Atomics,
5074    pname:sparseImageFloat32Atomics>> feature is supported.
5075  * <<features-shaderImageFloat32AtomicAdd,
5076    pname:shaderImageFloat32AtomicAdd>>, if the
5077    <<features-sparseImageFloat32AtomicAdd,
5078    pname:sparseImageFloat32AtomicAdd>> feature is supported.
5079endif::VK_EXT_shader_atomic_float[]
5080ifdef::VK_KHR_fragment_shading_rate[]
5081  * <<features-pipelineFragmentShadingRate,
5082    pname:pipelineFragmentShadingRate>>, if the
5083    `apiext:VK_KHR_fragment_shading_rate` extension is supported.
5084endif::VK_KHR_fragment_shading_rate[]
5085ifdef::VK_KHR_shader_terminate_invocation[]
5086  * <<features-shaderTerminateInvocation, pname:shaderTerminateInvocation>>
5087    if the `apiext:VK_KHR_shader_terminate_invocation` extension is
5088    supported.
5089endif::VK_KHR_shader_terminate_invocation[]
5090ifdef::VK_KHR_zero_initialize_workgroup_memory[]
5091  * <<features-shaderZeroInitializeWorkgroupMemory,
5092    pname:shaderZeroInitializeWorkgroupMem>>, if the
5093    `apiext:VK_KHR_zero_initialize_workgroup_memory` extension is supported.
5094endif::VK_KHR_zero_initialize_workgroup_memory[]
5095ifdef::VK_KHR_workgroup_memory_explicit_layout[]
5096  * <<features-workgroupMemoryExplicitLayout,
5097    pname:workgroupMemoryExplicitLayout>>, if the
5098    `apiext:VK_KHR_workgroup_memory_explicit_layout` extension is supported.
5099endif::VK_KHR_workgroup_memory_explicit_layout[]
5100ifdef::VK_EXT_vertex_input_dynamic_state[]
5101  * <<features-vertexInputDynamicState, pname:vertexInputDynamicState>>, if
5102    the `apiext:VK_EXT_vertex_input_dynamic_state` extension is supported.
5103endif::VK_EXT_vertex_input_dynamic_state[]
5104ifdef::VK_KHR_synchronization2[]
5105  * <<features-synchronization2, pname:synchronization2>> if the
5106    `apiext:VK_KHR_synchronization2` extension is supported.
5107endif::VK_KHR_synchronization2[]
5108ifdef::VK_EXT_provoking_vertex[]
5109  * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the
5110    `apiext:VK_EXT_provoking_vertex` extension is supported.
5111endif::VK_EXT_provoking_vertex[]
5112ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
5113  * <<features-shaderSubgroupUniformControlFlow,
5114    pname:shaderSubgroupUniformControlFlow>>, if the
5115    `apiext:VK_KHR_shader_subgroup_uniform_control_flow` extension is
5116    supported.
5117endif::VK_KHR_shader_subgroup_uniform_control_flow[]
5118ifdef::VK_EXT_border_color_swizzle[]
5119  * <<features-borderColorSwizzle, pname:borderColorSwizzle>> if the
5120    apiext:VK_EXT_border_color_swizzle extension is supported.
5121endif::VK_EXT_border_color_swizzle[]
5122ifdef::VK_EXT_multi_draw[]
5123  * <<features-multiDraw, pname:multiDraw>>, if the
5124    `apiext:VK_EXT_multi_draw` extension is supported.
5125endif::VK_EXT_multi_draw[]
5126ifdef::VK_EXT_shader_atomic_float2[]
5127  * <<features-shaderImageFloat32AtomicMinMax,
5128    pname:shaderImageFloat32AtomicMinMax>>, if the
5129    <<features-sparseImageFloat32AtomicMinMax,
5130    pname:sparseImageFloat32AtomicMinMax>> feature is supported.
5131endif::VK_EXT_shader_atomic_float2[]
5132ifdef::VK_KHR_present_id[]
5133  * <<features-presentId, pname:presentId>>, if the
5134    `apiext:VK_KHR_present_id` extension is supported.
5135endif::VK_KHR_present_id[]
5136ifdef::VK_KHR_present_wait[]
5137  * <<features-presentWait, pname:presentWait>>, if the
5138    `apiext:VK_KHR_present_wait` extension is supported.
5139endif::VK_KHR_present_wait[]
5140ifdef::VK_KHR_shader_integer_dot_product[]
5141  * <<features-shaderIntegerDotProduct, pname:shaderIntegerDotProduct>> if
5142    the `apiext:VK_KHR_shader_integer_dot_product` extension is supported.
5143endif::VK_KHR_shader_integer_dot_product[]
5144ifdef::VK_KHR_maintenance4[]
5145  * <<features-maintenance4, pname:maintenance4>>, if the
5146    `apiext:VK_KHR_maintenance4` extension is supported.
5147endif::VK_KHR_maintenance4[]
5148ifdef::VK_EXT_depth_clip_control[]
5149  * <<features-depthClipControl, pname:depthClipControl>>, if the
5150    `apiext:VK_EXT_depth_clip_control` extension is supported.
5151endif::VK_EXT_depth_clip_control[]
5152ifdef::VK_EXT_image_view_min_lod[]
5153  * <<features-minLod, pname:minLod>>, if the
5154    `apiext:VK_EXT_image_view_min_lod` extension is supported.
5155endif::VK_EXT_image_view_min_lod[]
5156
5157All other features defined in the Specification are optional:.
5158