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