• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2023 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_EXT_vertex_attribute_divisor[]
2247[open,refpage='VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT',desc='Structure describing if fetching of vertex attribute may be repeated for instanced rendering',type='structs']
2248--
2249The sname:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT structure is
2250defined as:
2251
2252include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.adoc[]
2253
2254This structure describes the following features:
2255
2256  * pname:sType is a elink:VkStructureType value identifying this structure.
2257  * pname:pNext is `NULL` or a pointer to a structure extending this
2258    structure.
2259  * [[features-vertexAttributeInstanceRateDivisor]]
2260    pname:vertexAttributeInstanceRateDivisor specifies whether vertex
2261    attribute fetching may be repeated in case of instanced rendering.
2262  * [[features-vertexAttributeInstanceRateZeroDivisor]]
2263    pname:vertexAttributeInstanceRateZeroDivisor specifies whether a zero
2264    value for sname:VkVertexInputBindingDivisorDescriptionEXT::pname:divisor
2265    is supported.
2266
2267:refpage: VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT
2268include::{chapters}/features.adoc[tag=features]
2269
2270include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.adoc[]
2271--
2272endif::VK_EXT_vertex_attribute_divisor[]
2273
2274ifdef::VK_EXT_astc_decode_mode[]
2275[open,refpage='VkPhysicalDeviceASTCDecodeFeaturesEXT',desc='Structure describing ASTC decode mode features',type='structs']
2276--
2277The sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is defined as:
2278
2279include::{generated}/api/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.adoc[]
2280
2281This structure describes the following feature:
2282
2283  * pname:sType is a elink:VkStructureType value identifying this structure.
2284  * pname:pNext is `NULL` or a pointer to a structure extending this
2285    structure.
2286  * [[features-astc-decodeModeSharedExponent]]
2287    pname:decodeModeSharedExponent indicates whether the implementation
2288    supports decoding ASTC compressed formats to
2289    ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision.
2290
2291:refpage: VkPhysicalDeviceASTCDecodeFeaturesEXT
2292include::{chapters}/features.adoc[tag=features]
2293
2294include::{generated}/validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.adoc[]
2295--
2296endif::VK_EXT_astc_decode_mode[]
2297
2298ifdef::VK_EXT_transform_feedback[]
2299[open,refpage='VkPhysicalDeviceTransformFeedbackFeaturesEXT',desc='Structure describing transform feedback features that can be supported by an implementation',type='structs']
2300--
2301The sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined
2302as:
2303
2304include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.adoc[]
2305
2306This structure describes the following features:
2307
2308  * pname:sType is a elink:VkStructureType value identifying this structure.
2309  * pname:pNext is `NULL` or a pointer to a structure extending this
2310    structure.
2311  * [[features-transformFeedback]] pname:transformFeedback indicates whether
2312    the implementation supports transform feedback and shader modules can:
2313    declare the code:TransformFeedback capability.
2314  * [[features-geometryStreams]] pname:geometryStreams indicates whether the
2315    implementation supports the code:GeometryStreams SPIR-V capability.
2316
2317:refpage: VkPhysicalDeviceTransformFeedbackFeaturesEXT
2318include::{chapters}/features.adoc[tag=features]
2319
2320include::{generated}/validity/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.adoc[]
2321--
2322endif::VK_EXT_transform_feedback[]
2323
2324ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2325[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeatures',desc='Structure describing features supported by the memory model',type='structs']
2326--
2327The sname:VkPhysicalDeviceVulkanMemoryModelFeatures structure is defined as:
2328
2329include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.adoc[]
2330
2331ifdef::VK_KHR_vulkan_memory_model[]
2332or the equivalent
2333
2334include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.adoc[]
2335endif::VK_KHR_vulkan_memory_model[]
2336
2337This structure describes the following features:
2338
2339  * pname:sType is a elink:VkStructureType value identifying this structure.
2340  * pname:pNext is `NULL` or a pointer to a structure extending this
2341    structure.
2342
2343// Must have preceding whitespace
2344ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2345ifndef::VK_VERSION_1_2[:anchor-prefix:]
2346// tag::VK_KHR_vulkan_memory_model-features[]
2347  * [[{anchor-prefix}features-vulkanMemoryModel]] pname:vulkanMemoryModel
2348    indicates whether shader modules can: declare the code:VulkanMemoryModel
2349    capability.
2350  * [[{anchor-prefix}features-vulkanMemoryModelDeviceScope]]
2351    pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory
2352    Model can use code:Device scope synchronization.
2353    This also indicates whether shader modules can: declare the
2354    code:VulkanMemoryModelDeviceScope capability.
2355  * [[{anchor-prefix}features-vulkanMemoryModelAvailabilityVisibilityChains]]
2356    pname:vulkanMemoryModelAvailabilityVisibilityChains indicates whether
2357    the Vulkan Memory Model can use <<memory-model-availability-visibility,
2358    availability and visibility chains>> with more than one element.
2359// end::VK_KHR_vulkan_memory_model-features[]
2360
2361:refpage: VkPhysicalDeviceVulkanMemoryModelFeaturesKHR
2362include::{chapters}/features.adoc[tag=features]
2363
2364include::{generated}/validity/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.adoc[]
2365--
2366endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[]
2367
2368ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
2369[open,refpage='VkPhysicalDeviceInlineUniformBlockFeatures',desc='Structure describing inline uniform block features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceInlineUniformBlockFeaturesEXT']
2370--
2371The sname:VkPhysicalDeviceInlineUniformBlockFeatures structure is defined
2372as:
2373
2374include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeatures.adoc[]
2375
2376ifdef::VK_EXT_inline_uniform_block[]
2377or the equivalent
2378
2379include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.adoc[]
2380endif::VK_EXT_inline_uniform_block[]
2381
2382This structure describes the following features:
2383
2384  * pname:sType is a elink:VkStructureType value identifying this structure.
2385  * pname:pNext is `NULL` or a pointer to a structure extending this
2386    structure.
2387
2388// Must have preceding whitespace
2389ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
2390ifndef::VK_VERSION_1_3[:anchor-prefix:]
2391// tag::VK_EXT_inline_uniform_block-features[]
2392  * [[{anchor-prefix}features-inlineUniformBlock]] pname:inlineUniformBlock
2393    indicates whether the implementation supports inline uniform block
2394    descriptors.
2395    If this feature is not enabled,
2396    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK must: not be used.
2397  * [[{anchor-prefix}features-descriptorBindingInlineUniformBlockUpdateAfterBind]]
2398    pname:descriptorBindingInlineUniformBlockUpdateAfterBind
2399ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2400    is ename:VK_FALSE and reserved for future use.
2401endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2402ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2403    indicates whether the implementation supports updating inline uniform
2404    block descriptors after a set is bound.
2405    If this feature is not enabled,
2406    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
2407    ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK.
2408endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
2409// end::VK_EXT_inline_uniform_block-features[]
2410
2411:refpage: VkPhysicalDeviceInlineUniformBlockFeatures
2412include::{chapters}/features.adoc[tag=features]
2413
2414include::{generated}/validity/structs/VkPhysicalDeviceInlineUniformBlockFeatures.adoc[]
2415--
2416endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
2417
2418ifdef::VK_NV_representative_fragment_test[]
2419[open,refpage='VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV',desc='Structure describing the representative fragment test features that can be supported by an implementation',type='structs']
2420--
2421The sname:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure is
2422defined as:
2423
2424include::{generated}/api/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.adoc[]
2425
2426This structure describes the following feature:
2427
2428  * pname:sType is a elink:VkStructureType value identifying this structure.
2429  * pname:pNext is `NULL` or a pointer to a structure extending this
2430    structure.
2431  * [[features-representativeFragmentTest]] pname:representativeFragmentTest
2432    indicates whether the implementation supports the representative
2433    fragment test.
2434    See <<fragops-rep-frag-test, Representative Fragment Test>>.
2435
2436:refpage: VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV
2437include::{chapters}/features.adoc[tag=features]
2438
2439include::{generated}/validity/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.adoc[]
2440--
2441endif::VK_NV_representative_fragment_test[]
2442
2443ifdef::VK_NV_scissor_exclusive[]
2444[open,refpage='VkPhysicalDeviceExclusiveScissorFeaturesNV',desc='Structure describing exclusive scissor features that can be supported by an implementation',type='structs']
2445--
2446The sname:VkPhysicalDeviceExclusiveScissorFeaturesNV structure is defined
2447as:
2448
2449include::{generated}/api/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.adoc[]
2450
2451This structure describes the following feature:
2452
2453  * pname:sType is a elink:VkStructureType value identifying this structure.
2454  * pname:pNext is `NULL` or a pointer to a structure extending this
2455    structure.
2456  * [[features-exclusiveScissor]] pname:exclusiveScissor indicates that the
2457    implementation supports the exclusive scissor test.
2458
2459See <<fragops-exclusive-scissor,Exclusive Scissor Test>> for more
2460information.
2461
2462:refpage: VkPhysicalDeviceExclusiveScissorFeaturesNV
2463include::{chapters}/features.adoc[tag=features]
2464
2465include::{generated}/validity/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.adoc[]
2466--
2467endif::VK_NV_scissor_exclusive[]
2468
2469ifdef::VK_NV_corner_sampled_image[]
2470[open,refpage='VkPhysicalDeviceCornerSampledImageFeaturesNV',desc='Structure describing corner sampled image features that can be supported by an implementation',type='structs']
2471--
2472The sname:VkPhysicalDeviceCornerSampledImageFeaturesNV structure is defined
2473as:
2474
2475include::{generated}/api/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.adoc[]
2476
2477This structure describes the following feature:
2478
2479  * pname:sType is a elink:VkStructureType value identifying this structure.
2480  * pname:pNext is `NULL` or a pointer to a structure extending this
2481    structure.
2482  * [[features-cornersampledimage]] pname:cornerSampledImage specifies
2483    whether images can be created with a
2484    slink:VkImageCreateInfo::pname:flags containing
2485    ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV.
2486    See <<resources-images-corner-sampled,Corner-Sampled Images>>.
2487
2488:refpage: VkPhysicalDeviceCornerSampledImageFeaturesNV
2489include::{chapters}/features.adoc[tag=features]
2490
2491include::{generated}/validity/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.adoc[]
2492--
2493endif::VK_NV_corner_sampled_image[]
2494
2495ifdef::VK_NV_compute_shader_derivatives[]
2496[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesNV',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs']
2497--
2498The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure is
2499defined as:
2500
2501include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
2502
2503This structure describes the following features:
2504
2505  * pname:sType is a elink:VkStructureType value identifying this structure.
2506  * pname:pNext is `NULL` or a pointer to a structure extending this
2507    structure.
2508  * [[features-computeDerivativeGroupQuads]]
2509    pname:computeDerivativeGroupQuads indicates that the implementation
2510    supports the code:ComputeDerivativeGroupQuadsNV SPIR-V capability.
2511  * [[features-computeDerivativeGroupLinear]]
2512    pname:computeDerivativeGroupLinear indicates that the implementation
2513    supports the code:ComputeDerivativeGroupLinearNV SPIR-V capability.
2514
2515See <<shaders-scope-quad, Quad shader scope>> for more information.
2516
2517:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures.
2518include::{chapters}/features.adoc[tag=features]
2519
2520include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
2521--
2522endif::VK_NV_compute_shader_derivatives[]
2523
2524ifdef::VK_KHR_fragment_shader_barycentric[]
2525[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs']
2526--
2527The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR structure is
2528defined as:
2529
2530include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.adoc[]
2531
2532ifdef::VK_NV_fragment_shader_barycentric[]
2533or the equivalent
2534
2535include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.adoc[]
2536endif::VK_NV_fragment_shader_barycentric[]
2537
2538This structure describes the following feature:
2539
2540  * pname:sType is a elink:VkStructureType value identifying this structure.
2541  * pname:pNext is `NULL` or a pointer to a structure extending this
2542    structure.
2543  * [[features-fragmentShaderBarycentric]] pname:fragmentShaderBarycentric
2544    indicates that the implementation supports the code:BaryCoordKHR and
2545    code:BaryCoordNoPerspKHR SPIR-V fragment shader built-ins and supports
2546    the code:PerVertexKHR SPIR-V decoration on fragment shader input
2547    variables.
2548
2549See <<primsrast-barycentric,Barycentric Interpolation>> for more
2550information.
2551
2552:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
2553include::{chapters}/features.adoc[tag=features]
2554
2555include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.adoc[]
2556--
2557endif::VK_KHR_fragment_shader_barycentric[]
2558
2559ifdef::VK_NV_shader_image_footprint[]
2560[open,refpage='VkPhysicalDeviceShaderImageFootprintFeaturesNV',desc='Structure describing shader image footprint features that can be supported by an implementation',type='structs']
2561--
2562The sname:VkPhysicalDeviceShaderImageFootprintFeaturesNV structure is
2563defined as:
2564
2565include::{generated}/api/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.adoc[]
2566
2567This structure describes the following feature:
2568
2569  * pname:sType is a elink:VkStructureType value identifying this structure.
2570  * pname:pNext is `NULL` or a pointer to a structure extending this
2571    structure.
2572  * [[features-imageFootprint]] pname:imageFootprint specifies whether the
2573    implementation supports the code:ImageFootprintNV SPIR-V capability.
2574
2575See <<textures-footprint,Texel Footprint Evaluation>> for more information.
2576
2577:refpage: VkPhysicalDeviceShaderImageFootprintFeaturesNV
2578include::{chapters}/features.adoc[tag=features]
2579
2580include::{generated}/validity/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.adoc[]
2581--
2582endif::VK_NV_shader_image_footprint[]
2583
2584ifdef::VK_NV_shading_rate_image[]
2585[open,refpage='VkPhysicalDeviceShadingRateImageFeaturesNV',desc='Structure describing shading rate image features that can be supported by an implementation',type='structs']
2586--
2587The sname:VkPhysicalDeviceShadingRateImageFeaturesNV structure is defined
2588as:
2589
2590include::{generated}/api/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.adoc[]
2591
2592This structure describes the following features:
2593
2594  * pname:sType is a elink:VkStructureType value identifying this structure.
2595  * pname:pNext is `NULL` or a pointer to a structure extending this
2596    structure.
2597  * [[features-shadingRateImage]] pname:shadingRateImage indicates that the
2598    implementation supports the use of a shading rate image to derive an
2599    effective shading rate for fragment processing.
2600    It also indicates that the implementation supports the
2601    code:ShadingRateNV SPIR-V execution mode.
2602  * [[features-shadingRateCoarseSampleOrder]]
2603    pname:shadingRateCoarseSampleOrder indicates that the implementation
2604    supports a user-configurable ordering of coverage samples in fragments
2605    larger than one pixel.
2606
2607See <<primsrast-shading-rate-image, Shading Rate Image>> for more
2608information.
2609
2610:refpage: VkPhysicalDeviceShadingRateImageFeaturesNV
2611include::{chapters}/features.adoc[tag=features]
2612
2613include::{generated}/validity/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.adoc[]
2614--
2615endif::VK_NV_shading_rate_image[]
2616
2617ifdef::VK_EXT_fragment_density_map[]
2618[open,refpage='VkPhysicalDeviceFragmentDensityMapFeaturesEXT',desc='Structure describing fragment density map features that can be supported by an implementation',type='structs']
2619--
2620The sname:VkPhysicalDeviceFragmentDensityMapFeaturesEXT structure is defined
2621as:
2622
2623include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.adoc[]
2624
2625This structure describes the following features:
2626
2627  * pname:sType is a elink:VkStructureType value identifying this structure.
2628  * pname:pNext is `NULL` or a pointer to a structure extending this
2629    structure.
2630  * [[features-fragmentDensityMap]] pname:fragmentDensityMap specifies
2631    whether the implementation supports render passes with a fragment
2632    density map attachment.
2633    If this feature is not enabled and the pname:pNext chain of
2634    slink:VkRenderPassCreateInfo includes a
2635    slink:VkRenderPassFragmentDensityMapCreateInfoEXT structure,
2636    pname:fragmentDensityMapAttachment must: be ename:VK_ATTACHMENT_UNUSED.
2637  * [[features-fragmentDensityMapDynamic]] pname:fragmentDensityMapDynamic
2638    specifies whether the implementation supports dynamic fragment density
2639    map image views.
2640    If this feature is not enabled,
2641    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT must:
2642    not be included in slink:VkImageViewCreateInfo::pname:flags.
2643  * [[features-fragmentDensityMapNonSubsampledImages]]
2644    pname:fragmentDensityMapNonSubsampledImages specifies whether the
2645    implementation supports regular non-subsampled image attachments with
2646    fragment density map render passes.
2647    If this feature is not enabled, render passes with a
2648    <<renderpass-fragmentdensitymapattachment,fragment density map
2649    attachment>> must: only have <<samplers-subsamplesampler,subsampled
2650    attachments>> bound.
2651
2652:refpage: VkPhysicalDeviceFragmentDensityMapFeaturesEXT
2653include::{chapters}/features.adoc[tag=features]
2654
2655include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.adoc[]
2656--
2657
2658ifdef::VK_EXT_fragment_density_map2[]
2659[open,refpage='VkPhysicalDeviceFragmentDensityMap2FeaturesEXT',desc='Structure describing additional fragment density map features that can be supported by an implementation',type='structs']
2660--
2661The sname:VkPhysicalDeviceFragmentDensityMap2FeaturesEXT structure is
2662defined as:
2663
2664include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.adoc[]
2665
2666This structure describes the following feature:
2667
2668  * pname:sType is a elink:VkStructureType value identifying this structure.
2669  * pname:pNext is `NULL` or a pointer to a structure extending this
2670    structure.
2671  * [[features-fragmentDensityMapDeferred]] pname:fragmentDensityMapDeferred
2672    specifies whether the implementation supports deferred reads of fragment
2673    density map image views.
2674    If this feature is not enabled,
2675    ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT must:
2676    not be included in sname:VkImageViewCreateInfo::pname:flags.
2677
2678:refpage: VkPhysicalDeviceFragmentDensityMap2FeaturesEXT
2679include::{chapters}/features.adoc[tag=features]
2680
2681include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.adoc[]
2682--
2683endif::VK_EXT_fragment_density_map2[]
2684
2685ifdef::VK_QCOM_fragment_density_map_offset[]
2686[open,refpage='VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM',desc='Structure describing fragment density map offset features that can be supported by an implementation',type='structs']
2687--
2688The sname:VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM structure is
2689defined as:
2690
2691include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.adoc[]
2692
2693This structure describes the following feature:
2694
2695  * pname:sType is a elink:VkStructureType value identifying this structure.
2696  * pname:pNext is `NULL` or a pointer to a structure extending this
2697    structure.
2698  * [[features-fragmentDensityMapOffsets]] pname:fragmentDensityMapOffsets
2699    specifies whether the implementation supports
2700    <<renderpass-fragmentdensitymapoffsets,fragment density map offsets>>
2701
2702:refpage: VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM
2703include::{chapters}/features.adoc[tag=features]
2704
2705include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM.adoc[]
2706--
2707endif::VK_QCOM_fragment_density_map_offset[]
2708endif::VK_EXT_fragment_density_map[]
2709
2710ifdef::VK_HUAWEI_invocation_mask[]
2711[open,refpage='VkPhysicalDeviceInvocationMaskFeaturesHUAWEI',desc='Structure describing invocation mask features that can be supported by an implementation',type='structs']
2712--
2713The sname:VkPhysicalDeviceInvocationMaskFeaturesHUAWEI structure is defined
2714as:
2715
2716include::{generated}/api/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.adoc[]
2717
2718This structure describes the following feature:
2719
2720  * pname:sType is a elink:VkStructureType value identifying this structure.
2721  * pname:pNext is `NULL` or a pointer to a structure extending this
2722    structure.
2723  * [[features-invocationMask]] pname:invocationMask indicates that the
2724    implementation supports the use of an invocation mask image to optimize
2725    the ray dispatch.
2726
2727:refpage: VkPhysicalDeviceInvocationMaskFeaturesHUAWEI
2728include::{chapters}/features.adoc[tag=features]
2729
2730include::{generated}/validity/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.adoc[]
2731--
2732endif::VK_HUAWEI_invocation_mask[]
2733
2734ifdef::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2735[open,refpage='VkPhysicalDeviceScalarBlockLayoutFeatures',desc='Structure indicating support for scalar block layouts',type='structs',alias='VkPhysicalDeviceScalarBlockLayoutFeaturesEXT']
2736--
2737The sname:VkPhysicalDeviceScalarBlockLayoutFeatures structure is defined as:
2738
2739include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.adoc[]
2740
2741ifdef::VK_EXT_scalar_block_layout[]
2742or the equivalent
2743
2744include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.adoc[]
2745endif::VK_EXT_scalar_block_layout[]
2746
2747This structure describes the following feature:
2748
2749  * pname:sType is a elink:VkStructureType value identifying this structure.
2750  * pname:pNext is `NULL` or a pointer to a structure extending this
2751    structure.
2752
2753// Must have preceding whitespace
2754ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2755ifndef::VK_VERSION_1_2[:anchor-prefix:]
2756// tag::VK_EXT_scalar_block_layout-features[]
2757  * [[{anchor-prefix}features-scalarBlockLayout]] pname:scalarBlockLayout
2758    indicates that the implementation supports the layout of resource blocks
2759    in shaders using <<interfaces-alignment-requirements, scalar
2760    alignment>>.
2761// end::VK_EXT_scalar_block_layout-features[]
2762
2763:refpage: VkPhysicalDeviceScalarBlockLayoutFeatures
2764include::{chapters}/features.adoc[tag=features]
2765
2766include::{generated}/validity/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.adoc[]
2767--
2768endif::VK_VERSION_1_2,VK_EXT_scalar_block_layout[]
2769
2770ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2771[open,refpage='VkPhysicalDeviceUniformBufferStandardLayoutFeatures',desc='Structure indicating support for std430-like packing in uniform buffers',type='structs',alias='VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR']
2772--
2773The sname:VkPhysicalDeviceUniformBufferStandardLayoutFeatures structure is
2774defined as:
2775
2776include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.adoc[]
2777
2778ifdef::VK_KHR_uniform_buffer_standard_layout[]
2779or the equivalent
2780
2781include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.adoc[]
2782endif::VK_KHR_uniform_buffer_standard_layout[]
2783
2784This structure describes the following feature:
2785
2786  * pname:sType is a elink:VkStructureType value identifying this structure.
2787  * pname:pNext is `NULL` or a pointer to a structure extending this
2788    structure.
2789
2790// Must have preceding whitespace
2791ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2792ifndef::VK_VERSION_1_2[:anchor-prefix:]
2793// tag::VK_KHR_uniform_buffer_standard_layout-features[]
2794  * [[{anchor-prefix}features-uniformBufferStandardLayout]]
2795    pname:uniformBufferStandardLayout indicates that the implementation
2796    supports the same layouts for uniform buffers as for storage and other
2797    kinds of buffers.
2798    See <<interfaces-resources-standard-layout,Standard Buffer Layout>>.
2799// end::VK_KHR_uniform_buffer_standard_layout-features[]
2800
2801:refpage: VkPhysicalDeviceUniformBufferStandardLayoutFeatures
2802include::{chapters}/features.adoc[tag=features]
2803
2804include::{generated}/validity/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.adoc[]
2805--
2806endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
2807
2808ifdef::VK_EXT_depth_clip_enable[]
2809[open,refpage='VkPhysicalDeviceDepthClipEnableFeaturesEXT',desc='Structure indicating support for explicit enable of depth clip',type='structs']
2810--
2811The sname:VkPhysicalDeviceDepthClipEnableFeaturesEXT structure is defined
2812as:
2813
2814include::{generated}/api/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.adoc[]
2815
2816This structure describes the following feature:
2817
2818  * pname:sType is a elink:VkStructureType value identifying this structure.
2819  * pname:pNext is `NULL` or a pointer to a structure extending this
2820    structure.
2821  * [[features-depthClipEnable]] pname:depthClipEnable indicates that the
2822    implementation supports setting the depth clipping operation explicitly
2823    via the slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT
2824    pipeline state.
2825    Otherwise depth clipping is only enabled when
2826    slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is
2827    set to ename:VK_FALSE.
2828
2829:refpage: VkPhysicalDeviceDepthClipEnableFeaturesEXT
2830include::{chapters}/features.adoc[tag=features]
2831
2832include::{generated}/validity/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.adoc[]
2833--
2834endif::VK_EXT_depth_clip_enable[]
2835
2836ifdef::VK_EXT_memory_priority[]
2837[open,refpage='VkPhysicalDeviceMemoryPriorityFeaturesEXT',desc='Structure describing memory priority features that can be supported by an implementation',type='structs']
2838--
2839The sname:VkPhysicalDeviceMemoryPriorityFeaturesEXT structure is defined as:
2840
2841include::{generated}/api/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.adoc[]
2842
2843This structure describes the following feature:
2844
2845  * pname:sType is a elink:VkStructureType value identifying this structure.
2846  * pname:pNext is `NULL` or a pointer to a structure extending this
2847    structure.
2848  * [[features-memoryPriority]] pname:memoryPriority indicates that the
2849    implementation supports memory priorities specified at memory allocation
2850    time via slink:VkMemoryPriorityAllocateInfoEXT.
2851
2852:refpage: VkPhysicalDeviceMemoryPriorityFeaturesEXT
2853include::{chapters}/features.adoc[tag=features]
2854
2855include::{generated}/validity/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.adoc[]
2856--
2857endif::VK_EXT_memory_priority[]
2858
2859ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2860[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeatures',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferDeviceAddressFeaturesKHR']
2861--
2862The sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure is defined
2863as:
2864
2865include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.adoc[]
2866
2867ifdef::VK_KHR_buffer_device_address[]
2868or the equivalent
2869
2870include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.adoc[]
2871endif::VK_KHR_buffer_device_address[]
2872
2873This structure describes the following features:
2874
2875  * pname:sType is a elink:VkStructureType value identifying this structure.
2876  * pname:pNext is `NULL` or a pointer to a structure extending this
2877    structure.
2878
2879// Must have preceding whitespace
2880ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
2881ifndef::VK_VERSION_1_2[:anchor-prefix:]
2882// tag::VK_EXT_buffer_device_address-features[]
2883  * [[{anchor-prefix}features-bufferDeviceAddress]]
2884    pname:bufferDeviceAddress indicates that the implementation supports
2885    accessing buffer memory in shaders as storage buffers via an address
2886    queried from flink:vkGetBufferDeviceAddress.
2887  * [[{anchor-prefix}features-bufferDeviceAddressCaptureReplay]]
2888    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2889    supports saving and reusing buffer and device addresses, e.g. for trace
2890    capture and replay.
2891  * [[{anchor-prefix}features-bufferDeviceAddressMultiDevice]]
2892    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2893    supports the pname:bufferDeviceAddress
2894ifndef::VK_KHR_ray_tracing_pipeline+VK_KHR_ray_query[feature]
2895ifdef::VK_KHR_ray_tracing_pipeline[]
2896ifndef::VK_KHR_ray_query[]
2897    and pname:rayTracingPipeline features
2898endif::VK_KHR_ray_query[]
2899ifdef::VK_KHR_ray_query[]
2900    , pname:rayTracingPipeline and pname:rayQuery features
2901endif::VK_KHR_ray_query[]
2902endif::VK_KHR_ray_tracing_pipeline[]
2903ifndef::VK_KHR_ray_tracing_pipeline[]
2904ifdef::VK_KHR_ray_query[]
2905    and pname:rayQuery features
2906endif::VK_KHR_ray_query[]
2907endif::VK_KHR_ray_tracing_pipeline[]
2908    for logical devices created with multiple physical devices.
2909    If this feature is not supported, buffer
2910ifdef::VK_KHR_acceleration_structure[]
2911    and acceleration structure
2912endif::VK_KHR_acceleration_structure[]
2913    addresses must: not be queried on a logical device created with more
2914    than one physical device.
2915// end::VK_EXT_buffer_device_address-features[]
2916
2917[NOTE]
2918.Note
2919====
2920pname:bufferDeviceAddressMultiDevice exists to allow certain legacy
2921platforms to be able to support pname:bufferDeviceAddress without needing to
2922support shared GPU virtual addresses for multi-device configurations.
2923====
2924
2925See flink:vkGetBufferDeviceAddress for more information.
2926
2927:refpage: VkPhysicalDeviceBufferDeviceAddressFeatures
2928include::{chapters}/features.adoc[tag=features]
2929
2930include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.adoc[]
2931--
2932endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2933
2934ifdef::VK_EXT_buffer_device_address[]
2935[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferAddressFeaturesEXT']
2936--
2937The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is
2938defined as:
2939
2940include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.adoc[]
2941
2942include::{generated}/api/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.adoc[]
2943
2944This structure describes the following features:
2945
2946  * pname:sType is a elink:VkStructureType value identifying this structure.
2947  * pname:pNext is `NULL` or a pointer to a structure extending this
2948    structure.
2949  * [[features-bufferDeviceAddressEXT]] pname:bufferDeviceAddress indicates
2950    that the implementation supports accessing buffer memory in shaders as
2951    storage buffers via an address queried from
2952    flink:vkGetBufferDeviceAddressEXT.
2953  * [[features-bufferDeviceAddressCaptureReplayEXT]]
2954    pname:bufferDeviceAddressCaptureReplay indicates that the implementation
2955    supports saving and reusing buffer addresses, e.g. for trace capture and
2956    replay.
2957  * [[features-bufferDeviceAddressMultiDeviceEXT]]
2958    pname:bufferDeviceAddressMultiDevice indicates that the implementation
2959    supports the pname:bufferDeviceAddress feature for logical devices
2960    created with multiple physical devices.
2961    If this feature is not supported, buffer addresses must: not be queried
2962    on a logical device created with more than one physical device.
2963
2964:refpage: VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
2965include::{chapters}/features.adoc[tag=features]
2966
2967ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2968[NOTE]
2969.Note
2970====
2971The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure has the
2972same members as the sname:VkPhysicalDeviceBufferDeviceAddressFeatures
2973structure, but the functionality indicated by the members is expressed
2974differently.
2975The features indicated by the
2976sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure requires
2977additional flags to be passed at memory allocation time, and the capture and
2978replay mechanism is built around opaque capture addresses for buffer and
2979memory objects.
2980====
2981endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
2982
2983include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.adoc[]
2984--
2985endif::VK_EXT_buffer_device_address[]
2986
2987ifdef::VK_NV_dedicated_allocation_image_aliasing[]
2988[open,refpage='VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',desc='Structure describing dedicated allocation image aliasing features that can be supported by an implementation',type='structs']
2989--
2990The sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
2991structure is defined as:
2992
2993include::{generated}/api/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.adoc[]
2994
2995This structure describes the following feature:
2996
2997  * pname:sType is a elink:VkStructureType value identifying this structure.
2998  * pname:pNext is `NULL` or a pointer to a structure extending this
2999    structure.
3000  * [[features-dedicatedAllocationImageAliasing]]
3001    pname:dedicatedAllocationImageAliasing indicates that the implementation
3002    supports aliasing of compatible image objects on a dedicated allocation.
3003
3004:refpage: VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV
3005include::{chapters}/features.adoc[tag=features]
3006
3007include::{generated}/validity/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.adoc[]
3008--
3009endif::VK_NV_dedicated_allocation_image_aliasing[]
3010
3011ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
3012[open,refpage='VkPhysicalDeviceImagelessFramebufferFeatures',desc='Structure indicating support for imageless framebuffers',type='structs',alias='VkPhysicalDeviceImagelessFramebufferFeaturesKHR']
3013--
3014The sname:VkPhysicalDeviceImagelessFramebufferFeatures structure is defined
3015as:
3016
3017include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeatures.adoc[]
3018
3019ifdef::VK_KHR_imageless_framebuffer[]
3020or the equivalent
3021
3022include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.adoc[]
3023endif::VK_KHR_imageless_framebuffer[]
3024
3025This structure describes the following feature:
3026
3027  * pname:sType is a elink:VkStructureType value identifying this structure.
3028  * pname:pNext is `NULL` or a pointer to a structure extending this
3029    structure.
3030
3031// Must have preceding whitespace
3032ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3033ifndef::VK_VERSION_1_2[:anchor-prefix:]
3034// tag::VK_KHR_imageless_framebuffer-features[]
3035  * [[{anchor-prefix}features-imagelessFramebuffer]]
3036    pname:imagelessFramebuffer indicates that the implementation supports
3037    specifying the image view for attachments at render pass begin time via
3038    slink:VkRenderPassAttachmentBeginInfo.
3039// end::VK_KHR_imageless_framebuffer-features[]
3040
3041:refpage: VkPhysicalDeviceImagelessFramebufferFeatures
3042include::{chapters}/features.adoc[tag=features]
3043
3044include::{generated}/validity/structs/VkPhysicalDeviceImagelessFramebufferFeatures.adoc[]
3045--
3046endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
3047
3048ifdef::VK_EXT_fragment_shader_interlock[]
3049[open,refpage='VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',desc='Structure describing fragment shader interlock features that can be supported by an implementation',type='structs']
3050--
3051The sname:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure is
3052defined as:
3053
3054include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.adoc[]
3055
3056This structure describes the following features:
3057
3058  * pname:sType is a elink:VkStructureType value identifying this structure.
3059  * pname:pNext is `NULL` or a pointer to a structure extending this
3060    structure.
3061  * [[features-fragmentShaderSampleInterlock]]
3062    pname:fragmentShaderSampleInterlock indicates that the implementation
3063    supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability.
3064  * [[features-fragmentShaderPixelInterlock]]
3065    pname:fragmentShaderPixelInterlock indicates that the implementation
3066    supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability.
3067  * [[features-fragmentShaderShadingRateInterlock]]
3068    pname:fragmentShaderShadingRateInterlock indicates that the
3069    implementation supports the code:FragmentShaderShadingRateInterlockEXT
3070    SPIR-V capability.
3071
3072:refpage: VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
3073include::{chapters}/features.adoc[tag=features]
3074
3075include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.adoc[]
3076--
3077endif::VK_EXT_fragment_shader_interlock[]
3078
3079ifdef::VK_NV_cooperative_matrix[]
3080[open,refpage='VkPhysicalDeviceCooperativeMatrixFeaturesNV',desc='Structure describing cooperative matrix features that can be supported by an implementation',type='structs']
3081--
3082The sname:VkPhysicalDeviceCooperativeMatrixFeaturesNV structure is defined
3083as:
3084
3085include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.adoc[]
3086
3087This structure describes the following features:
3088
3089  * pname:sType is a elink:VkStructureType value identifying this structure.
3090  * pname:pNext is `NULL` or a pointer to a structure extending this
3091    structure.
3092  * [[features-cooperativeMatrix-NV]] pname:cooperativeMatrix indicates that
3093    the implementation supports the code:CooperativeMatrixNV SPIR-V
3094    capability.
3095  * [[features-cooperativeMatrixRobustBufferAccess-NV]]
3096    pname:cooperativeMatrixRobustBufferAccess indicates that the
3097    implementation supports robust buffer access for SPIR-V
3098    code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV
3099    instructions.
3100
3101:refpage: VkPhysicalDeviceCooperativeMatrixFeaturesNV
3102include::{chapters}/features.adoc[tag=features]
3103
3104include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.adoc[]
3105--
3106endif::VK_NV_cooperative_matrix[]
3107
3108ifdef::VK_KHR_cooperative_matrix[]
3109[open,refpage='VkPhysicalDeviceCooperativeMatrixFeaturesKHR',desc='Structure describing cooperative matrix features that can be supported by an implementation',type='structs']
3110--
3111The sname:VkPhysicalDeviceCooperativeMatrixFeaturesKHR structure is defined
3112as:
3113
3114include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.adoc[]
3115
3116This structure describes the following features:
3117
3118  * pname:sType is a elink:VkStructureType value identifying this structure.
3119  * pname:pNext is `NULL` or a pointer to a structure extending this
3120    structure.
3121  * [[features-cooperativeMatrix]] pname:cooperativeMatrix indicates that
3122    the implementation supports the code:CooperativeMatrixKHR SPIR-V
3123    capability.
3124  * [[features-cooperativeMatrixRobustBufferAccess]]
3125    pname:cooperativeMatrixRobustBufferAccess indicates that the
3126    implementation supports robust buffer access for SPIR-V
3127    code:OpCooperativeMatrixLoadKHR and code:OpCooperativeMatrixStoreKHR
3128    instructions.
3129
3130:refpage: VkPhysicalDeviceCooperativeMatrixFeaturesKHR
3131include::{chapters}/features.adoc[tag=features]
3132
3133include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.adoc[]
3134--
3135endif::VK_KHR_cooperative_matrix[]
3136
3137ifdef::VK_EXT_ycbcr_image_arrays[]
3138[open,refpage='VkPhysicalDeviceYcbcrImageArraysFeaturesEXT',desc='Structure describing extended {YCbCr} image creation features that can be supported by an implementation',type='structs']
3139--
3140The sname:VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure is defined
3141as:
3142
3143include::{generated}/api/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.adoc[]
3144
3145This structure describes the following feature:
3146
3147  * pname:sType is a elink:VkStructureType value identifying this structure.
3148  * pname:pNext is `NULL` or a pointer to a structure extending this
3149    structure.
3150  * [[features-ycbcrImageArrays]] pname:ycbcrImageArrays indicates that the
3151    implementation supports creating images with a format that requires
3152    <<formats-requiring-sampler-ycbcr-conversion, {YCbCr} conversion>> and
3153    has multiple array layers.
3154
3155:refpage: VkPhysicalDeviceYcbcrImageArraysFeaturesEXT
3156include::{chapters}/features.adoc[tag=features]
3157
3158include::{generated}/validity/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.adoc[]
3159--
3160endif::VK_EXT_ycbcr_image_arrays[]
3161
3162ifdef::VK_VERSION_1_1[]
3163ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
3164[open,refpage='VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures',desc='Structure describing the extended types subgroups support feature for an implementation',type='structs',alias='VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR']
3165--
3166The sname:VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures structure is
3167defined as:
3168
3169include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.adoc[]
3170
3171ifdef::VK_KHR_shader_subgroup_extended_types[]
3172or the equivalent
3173
3174include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.adoc[]
3175endif::VK_KHR_shader_subgroup_extended_types[]
3176
3177This structure describes the following feature:
3178
3179  * pname:sType is a elink:VkStructureType value identifying this structure.
3180  * pname:pNext is `NULL` or a pointer to a structure extending this
3181    structure.
3182
3183// Must have preceding whitespace
3184ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3185ifndef::VK_VERSION_1_2[:anchor-prefix:]
3186// tag::VK_KHR_shader_subgroup_extended_types-features[]
3187  * [[{anchor-prefix}features-subgroup-extended-types]]
3188    pname:shaderSubgroupExtendedTypes is a boolean specifying whether
3189    subgroup operations can use 8-bit integer, 16-bit integer, 64-bit
3190    integer, 16-bit floating-point, and vectors of these types in
3191    <<shaders-group-operations,group operations>> with
3192    <<shaders-scope-subgroup, subgroup scope>>, if the implementation
3193    supports the types.
3194// end::VK_KHR_shader_subgroup_extended_types-features[]
3195
3196:refpage: VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures
3197include::{chapters}/features.adoc[tag=features]
3198
3199include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.adoc[]
3200--
3201endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
3202endif::VK_VERSION_1_1[]
3203
3204ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
3205[open,refpage='VkPhysicalDeviceHostQueryResetFeatures',desc='Structure describing whether queries can be reset from the host',type='structs',alias='VkPhysicalDeviceHostQueryResetFeaturesEXT']
3206--
3207The sname:VkPhysicalDeviceHostQueryResetFeatures structure is defined as:
3208
3209include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeatures.adoc[]
3210
3211ifdef::VK_EXT_host_query_reset[]
3212or the equivalent
3213
3214include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeaturesEXT.adoc[]
3215endif::VK_EXT_host_query_reset[]
3216
3217This structure describes the following feature:
3218
3219  * pname:sType is a elink:VkStructureType value identifying this structure.
3220  * pname:pNext is `NULL` or a pointer to a structure extending this
3221    structure.
3222
3223// Must have preceding whitespace
3224ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3225ifndef::VK_VERSION_1_2[:anchor-prefix:]
3226// tag::VK_EXT_host_query_reset-features[]
3227  * [[{anchor-prefix}features-hostQueryReset]] pname:hostQueryReset
3228    indicates that the implementation supports resetting queries from the
3229    host with flink:vkResetQueryPool.
3230// end::VK_EXT_host_query_reset-features[]
3231
3232:refpage: VkPhysicalDeviceHostQueryResetFeatures
3233include::{chapters}/features.adoc[tag=features]
3234
3235include::{generated}/validity/structs/VkPhysicalDeviceHostQueryResetFeatures.adoc[]
3236--
3237endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
3238
3239ifdef::VK_INTEL_shader_integer_functions2[]
3240[open,refpage='VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',desc='Structure describing shader integer functions that can be supported by an implementation',type='structs']
3241--
3242The sname:VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure is
3243defined as:
3244
3245include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.adoc[]
3246
3247This structure describes the following feature:
3248
3249  * pname:sType is a elink:VkStructureType value identifying this structure.
3250  * pname:pNext is `NULL` or a pointer to a structure extending this
3251    structure.
3252  * [[features-shaderIntegerFunctions2]] pname:shaderIntegerFunctions2
3253    indicates that the implementation supports the
3254    code:IntegerFunctions2INTEL SPIR-V capability.
3255
3256:refpage: VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures.
3257include::{chapters}/features.adoc[tag=features]
3258
3259include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.adoc[]
3260--
3261endif::VK_INTEL_shader_integer_functions2[]
3262
3263ifdef::VK_NV_coverage_reduction_mode[]
3264[open,refpage='VkPhysicalDeviceCoverageReductionModeFeaturesNV',desc='Structure describing the coverage reduction mode features that can be supported by an implementation',type='structs']
3265--
3266The sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is
3267defined as:
3268
3269include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.adoc[]
3270
3271This structure describes the following feature:
3272
3273  * pname:sType is a elink:VkStructureType value identifying this structure.
3274  * pname:pNext is `NULL` or a pointer to a structure extending this
3275    structure.
3276  * [[features-coverageReductionMode]] pname:coverageReductionMode indicates
3277    whether the implementation supports coverage reduction modes.
3278    See <<fragops-coverage-reduction, Coverage Reduction>>.
3279
3280:refpage: VkPhysicalDeviceCoverageReductionModeFeaturesNV
3281include::{chapters}/features.adoc[tag=features]
3282
3283include::{generated}/validity/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.adoc[]
3284--
3285endif::VK_NV_coverage_reduction_mode[]
3286
3287ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
3288[open,refpage='VkPhysicalDeviceTimelineSemaphoreFeatures',desc='Structure describing timeline semaphore features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTimelineSemaphoreFeaturesKHR']
3289--
3290The sname:VkPhysicalDeviceTimelineSemaphoreFeatures structure is defined as:
3291
3292include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.adoc[]
3293
3294ifdef::VK_KHR_timeline_semaphore[]
3295or the equivalent
3296
3297include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.adoc[]
3298endif::VK_KHR_timeline_semaphore[]
3299
3300This structure describes the following feature:
3301
3302  * pname:sType is a elink:VkStructureType value identifying this structure.
3303  * pname:pNext is `NULL` or a pointer to a structure extending this
3304    structure.
3305
3306// Must have preceding whitespace
3307ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3308ifndef::VK_VERSION_1_2[:anchor-prefix:]
3309// tag::VK_KHR_timeline_semaphore-features[]
3310  * [[{anchor-prefix}features-timelineSemaphore]] pname:timelineSemaphore
3311    indicates whether semaphores created with a elink:VkSemaphoreType of
3312    ename:VK_SEMAPHORE_TYPE_TIMELINE are supported.
3313// end::VK_KHR_timeline_semaphore-features[]
3314
3315:refpage: VkPhysicalDeviceTimelineSemaphoreFeatures
3316include::{chapters}/features.adoc[tag=features]
3317
3318include::{generated}/validity/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.adoc[]
3319--
3320endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
3321
3322ifdef::VK_NV_external_sci_sync[]
3323[open,refpage='VkPhysicalDeviceExternalSciSyncFeaturesNV',desc='Structure describing SciSync features that can be supported by an implementation',type='structs']
3324--
3325The sname:VkPhysicalDeviceExternalSciSyncFeaturesNV structure is defined as:
3326
3327include::{generated}/api/structs/VkPhysicalDeviceExternalSciSyncFeaturesNV.adoc[]
3328
3329The members of the sname:VkPhysicalDeviceExternalSciSyncFeaturesNV structure
3330describe the following features:
3331
3332  * [[features-sciSyncFence]] pname:sciSyncFence indicates whether external
3333    fences created with a handle type of
3334    ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV and
3335    ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV are supported
3336    for import and/or export.
3337  * [[features-sciSyncSemaphore]] pname:sciSyncSemaphore indicates whether
3338    external semaphores created with a handle type of
3339    ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV are
3340    supported for import and/or export.
3341  * [[features-sciSyncImport]] pname:sciSyncImport indicates whether
3342    stext:NvSciSyncObj import functionality is supported.
3343    If pname:sciSyncImport is set to ename:VK_TRUE, slink:VkFence and/or
3344    slink:VkSemaphore support importing stext:NvSciSyncObj from
3345    applications.
3346    In this case, the application is responsible for the resource management
3347    of the stext:NvSciSyncObj.
3348  * [[features-sciSyncExport]] pname:sciSyncExport indicates whether
3349    stext:NvSciSyncObj export functionality is supported.
3350    If pname:sciSyncExport is set to ename:VK_TRUE, slink:VkFence and/or
3351    slink:VkSemaphore support exporting stext:NvSciSyncObj created by the
3352    driver to applications.
3353    In this case, the driver is responsible for the resource management of
3354    the stext:NvSciSyncObj.
3355
3356[[features-externalscisync-table]]
3357.Functionality supported for NvSciSync features
3358|=====
3359| Features           | pname:sciSyncImport | pname:sciSyncExport | Always supported^1^
3360| pname:sciSyncFence
3361  | flink:vkImportFenceSciSyncFenceNV, flink:vkImportFenceSciSyncObjNV
3362  | slink:VkExportFenceSciSyncInfoNV
3363  | flink:vkGetFenceSciSyncFenceNV, flink:vkGetFenceSciSyncObjNV, flink:vkGetPhysicalDeviceSciSyncAttributesNV (with ename:VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV)
3364| pname:sciSyncSemaphore
3365  | flink:vkImportSemaphoreSciSyncObjNV
3366  | slink:VkExportSemaphoreSciSyncInfoNV
3367  | flink:vkGetSemaphoreSciSyncObjNV, flink:vkGetPhysicalDeviceSciSyncAttributesNV (with ename:VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV)
3368|=====
3369
33701::
3371    Functionality in this column is always available.
3372
3373The <<features-externalscisync-table, Functionality supported for NvSciSync
3374features>> table summarizes the functionality enabled by the
3375sname:VkPhysicalDeviceExternalSciSyncFeaturesNV structure.
3376There are two orthogonal pieces of functionality: fence and semaphore
3377support; import and export support.
3378Each entry in the body of the table summarizes the functionality that can:
3379be used when the given features are supported and enabled.
3380This summarizes Valid Usage statements that are added elsewhere in this
3381specification.
3382
3383:refpage: VkPhysicalDeviceExternalSciSyncFeaturesNV
3384include::{chapters}/features.adoc[tag=features]
3385
3386include::{generated}/validity/structs/VkPhysicalDeviceExternalSciSyncFeaturesNV.adoc[]
3387--
3388endif::VK_NV_external_sci_sync[]
3389
3390ifdef::VK_NV_external_sci_sync2[]
3391[open,refpage='VkPhysicalDeviceExternalSciSync2FeaturesNV',desc='Structure describing SciSync features that can be supported by an implementation',type='structs']
3392--
3393The sname:VkPhysicalDeviceExternalSciSync2FeaturesNV structure is defined
3394as:
3395
3396include::{generated}/api/structs/VkPhysicalDeviceExternalSciSync2FeaturesNV.adoc[]
3397
3398The members of the sname:VkPhysicalDeviceExternalSciSync2FeaturesNV
3399structure describe the following features:
3400
3401  * [[features-sciSyncFence2]] pname:sciSyncFence indicates whether external
3402    fences created with a handle type of
3403    ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV and
3404    ename:VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV are supported
3405    for import and/or export.
3406  * [[features-sciSyncSemaphore2]] pname:sciSyncSemaphore2 indicates whether
3407    semaphore SciSync pools are supported and semaphores can be created from
3408    stext:NvSciSyncObj via slink:VkSemaphoreSciSyncPoolNV objects.
3409    In this case, the application is responsible for the resource management
3410    of the stext:NvSciSyncObj.
3411  * [[features-sciSyncImport2]] pname:sciSyncImport indicates whether
3412    stext:NvSciSyncObj import functionality is supported.
3413    If pname:sciSyncImport is set to ename:VK_TRUE, slink:VkFence and/or
3414    slink:VkSemaphore support importing stext:NvSciSyncObj from
3415    applications.
3416    In this case, the application is responsible for the resource management
3417    of the stext:NvSciSyncObj.
3418  * [[features-sciSyncExport2]] pname:sciSyncExport indicates whether
3419    stext:NvSciSyncObj export functionality is supported.
3420    If pname:sciSyncExport is set to ename:VK_TRUE, slink:VkFence supports
3421    exporting stext:NvSciSyncObj created by the driver to applications.
3422    In this case, the driver is responsible for the resource management of
3423    the stext:NvSciSyncObj.
3424
3425[[features-externalscisync2-table]]
3426.Functionality supported for NvSciSync features
3427|=====
3428| Features           | pname:sciSyncImport | pname:sciSyncExport | Always supported^1^
3429| pname:sciSyncFence
3430  | flink:vkImportFenceSciSyncFenceNV, flink:vkImportFenceSciSyncObjNV
3431  | slink:VkExportFenceSciSyncInfoNV
3432  | flink:vkGetFenceSciSyncFenceNV, flink:vkGetFenceSciSyncObjNV, flink:vkGetPhysicalDeviceSciSyncAttributesNV (with ename:VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV)
3433| pname:sciSyncSemaphore2
3434  | flink:vkCreateSemaphoreSciSyncPoolNV, slink:VkSemaphoreSciSyncCreateInfoNV
3435  | n/a
3436  | flink:vkGetPhysicalDeviceSciSyncAttributesNV (with ename:VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV)
3437|=====
3438
34391::
3440    Functionality in this column is always available.
3441
3442The <<features-externalscisync2-table, Functionality supported for NvSciSync
3443features>> table summarizes the functionality enabled by the
3444sname:VkPhysicalDeviceExternalSciSync2FeaturesNV structure.
3445There are two orthogonal pieces of functionality: fence and semaphore
3446support; import and export support.
3447Each entry in the body of the table summarizes the functionality that can:
3448be used when the given features are supported and enabled.
3449This summarizes Valid Usage statements that are added elsewhere in this
3450specification.
3451
3452:refpage: VkPhysicalDeviceExternalSciSync2FeaturesNV
3453include::{chapters}/features.adoc[tag=features]
3454
3455include::{generated}/validity/structs/VkPhysicalDeviceExternalSciSync2FeaturesNV.adoc[]
3456--
3457endif::VK_NV_external_sci_sync2[]
3458
3459ifdef::VK_NV_external_memory_sci_buf[]
3460[open,refpage='VkPhysicalDeviceExternalMemorySciBufFeaturesNV',desc='Structure describing NvSciBuf features that can be supported by an implementation',type='structs']
3461--
3462The sname:VkPhysicalDeviceExternalMemorySciBufFeaturesNV structure is
3463defined as:
3464
3465include::{generated}/api/structs/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.adoc[]
3466
3467include::{generated}/api/structs/VkPhysicalDeviceExternalSciBufFeaturesNV.adoc[]
3468
3469The members of the sname:VkPhysicalDeviceExternalMemorySciBufFeaturesNV
3470structure describe the following features:
3471
3472  * [[features-sciBufImport]] pname:sciBufImport indicates whether
3473    stext:NvSciBufObj import functionality is supported.
3474    If pname:sciBufImport is set to ename:VK_TRUE, slink:VkDeviceMemory
3475    supports importing stext:NvSciBufObj from applications.
3476    In this case, the application is responsible for the resource management
3477    of the stext:NvSciBufObj.
3478  * [[features-sciBufExport]] pname:sciBufExport indicates whether
3479    stext:NvSciBufObj export functionality is supported.
3480    If pname:sciBufExport is set to ename:VK_TRUE, slink:VkDeviceMemory
3481    supports exporting stext:NvSciBufObj created by the driver to
3482    applications.
3483    In this case, the driver is responsible for the resource management of
3484    the stext:NvSciBufObj.
3485
3486[[features-externalscibuf-table]]
3487.Functionality supported for NvSciBuf features
3488|=====
3489| Features            | Functionality
3490| pname:sciBufImport  | slink:VkImportMemorySciBufInfoNV, flink:vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV
3491| pname:sciBufExport  | slink:VkExportMemorySciBufInfoNV
3492| Always supported^1^ | flink:vkGetPhysicalDeviceSciBufAttributesNV, flink:vkGetMemorySciBufNV,
3493|=====
3494
34951::
3496    Functionality in this row is always available.
3497
3498The <<features-externalscibuf-table, Functionality supported for NvSciBuf
3499features>> table summarizes the functionality enabled by the
3500sname:VkPhysicalDeviceExternalMemorySciBufFeaturesNV structure.
3501Each entry in the body of the table summarizes the functionality that can:
3502be used when the given features are supported and enabled.
3503This summarizes Valid Usage statements that are added elsewhere in this
3504specification.
3505
3506:refpage: VkPhysicalDeviceExternalMemorySciBufFeaturesNV
3507include::{chapters}/features.adoc[tag=features]
3508
3509include::{generated}/validity/structs/VkPhysicalDeviceExternalMemorySciBufFeaturesNV.adoc[]
3510--
3511endif::VK_NV_external_memory_sci_buf[]
3512
3513ifdef::VK_QNX_external_memory_screen_buffer[]
3514[open,refpage='VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX',desc='Structure describing QNX Screen Buffer features that can be supported by an implementation',type='structs']
3515--
3516The sname:VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure is
3517defined as:
3518
3519include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.adoc[]
3520
3521The members of the
3522sname:VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure
3523describe the following features:
3524
3525  * [[features-screenBufferImport]] pname:screenBufferImport indicates
3526    whether QNX Screen buffer import functionality is supported.
3527    If pname:screenBufferImport is set to ename:VK_TRUE,
3528    slink:VkDeviceMemory supports importing code:_screen_buffer from
3529    applications.
3530    In this case, the application is responsible for the resource management
3531    of the code:_screen_buffer.
3532
3533[[features-externalscreenbuffer-table]]
3534.Functionality supported for QNX Screen Buffer features
3535|=====
3536| Features            | Functionality
3537| pname:screenBufferImport  | slink:VkImportScreenBufferInfoQNX
3538| Always supported^1^ | flink:vkGetScreenBufferPropertiesQNX, slink:VkScreenBufferPropertiesQNX, slink:VkScreenBufferFormatPropertiesQNX,
3539slink:VkExternalFormatQNX
3540|=====
3541
35421::
3543    Functionality in this row is always available.
3544
3545The <<features-externalscreenbuffer-table, Functionality supported for QNX
3546Screen buffer features>> table summarizes the functionality enabled by the
3547sname:VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX structure.
3548Each entry in the body of the table summarizes the functionality that can:
3549be used when the given features are supported and enabled.
3550This summarizes Valid Usage statements that are added elsewhere in this
3551specification.
3552
3553:refpage: VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
3554include::{chapters}/features.adoc[tag=features]
3555
3556include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.adoc[]
3557--
3558endif::VK_QNX_external_memory_screen_buffer[]
3559
3560ifdef::VK_EXT_index_type_uint8[]
3561[open,refpage='VkPhysicalDeviceIndexTypeUint8FeaturesEXT',desc='Structure describing whether uint8 index type can be used',type='structs']
3562--
3563The sname:VkPhysicalDeviceIndexTypeUint8FeaturesEXT structure is defined as:
3564
3565include::{generated}/api/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.adoc[]
3566
3567This structure describes the following feature:
3568
3569  * pname:sType is a elink:VkStructureType value identifying this structure.
3570  * pname:pNext is `NULL` or a pointer to a structure extending this
3571    structure.
3572  * [[features-indexTypeUint8]] pname:indexTypeUint8 indicates that
3573    ename:VK_INDEX_TYPE_UINT8_EXT can be used with
3574ifdef::VK_KHR_maintenance5[flink:vkCmdBindIndexBuffer2KHR and]
3575    flink:vkCmdBindIndexBuffer.
3576
3577:refpage: VkPhysicalDeviceIndexTypeUint8FeaturesEXT
3578include::{chapters}/features.adoc[tag=features]
3579
3580include::{generated}/validity/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.adoc[]
3581--
3582endif::VK_EXT_index_type_uint8[]
3583
3584ifdef::VK_EXT_primitive_topology_list_restart[]
3585[open,refpage='VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',desc='Structure describing whether list type primitives can support primitive restart',type='structs']
3586--
3587The sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure
3588is defined as:
3589
3590include::{generated}/api/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.adoc[]
3591
3592This structure describes the following features:
3593
3594  * pname:sType is a elink:VkStructureType value identifying this structure.
3595  * pname:pNext is `NULL` or a pointer to a structure extending this
3596    structure.
3597  * [[features-primitiveTopologyListRestart]]
3598    pname:primitiveTopologyListRestart indicates that list type primitives,
3599    ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
3600    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
3601    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
3602    ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY and
3603    ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, can: use the
3604    primitive restart index value in index buffers.
3605  * [[features-primitiveTopologyPatchListRestart]]
3606    pname:primitiveTopologyPatchListRestart indicates that the
3607    ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology can: use the primitive
3608    restart index value in index buffers.
3609
3610:refpage: VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
3611include::{chapters}/features.adoc[tag=features]
3612
3613include::{generated}/validity/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.adoc[]
3614--
3615endif::VK_EXT_primitive_topology_list_restart[]
3616
3617ifdef::VK_NV_shader_sm_builtins[]
3618[open,refpage='VkPhysicalDeviceShaderSMBuiltinsFeaturesNV',desc='Structure describing the shader SM Builtins features that can be supported by an implementation',type='structs']
3619--
3620The sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is defined
3621as:
3622
3623include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.adoc[]
3624
3625This structure describes the following feature:
3626
3627  * pname:sType is a elink:VkStructureType value identifying this structure.
3628  * pname:pNext is `NULL` or a pointer to a structure extending this
3629    structure.
3630  * [[features-shaderSMBuiltins]] pname:shaderSMBuiltins indicates whether
3631    the implementation supports the SPIR-V code:ShaderSMBuiltinsNV
3632    capability.
3633
3634:refpage: VkPhysicalDeviceShaderSMBuiltinsFeaturesNV
3635include::{chapters}/features.adoc[tag=features]
3636
3637include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.adoc[]
3638--
3639endif::VK_NV_shader_sm_builtins[]
3640
3641ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3642[open,refpage='VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures',desc='Structure describing whether the implementation can do depth and stencil image barriers separately',type='structs',alias='VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR']
3643--
3644The sname:VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures structure is
3645defined as:
3646
3647include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.adoc[]
3648
3649ifdef::VK_KHR_separate_depth_stencil_layouts[]
3650or the equivalent
3651
3652include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.adoc[]
3653endif::VK_KHR_separate_depth_stencil_layouts[]
3654
3655This structure describes the following feature:
3656
3657  * pname:sType is a elink:VkStructureType value identifying this structure.
3658  * pname:pNext is `NULL` or a pointer to a structure extending this
3659    structure.
3660
3661// Must have preceding whitespace
3662ifdef::VK_VERSION_1_2[:anchor-prefix: extension-]
3663ifndef::VK_VERSION_1_2[:anchor-prefix:]
3664// tag::VK_KHR_separate_depth_stencil_layouts-features[]
3665  * [[{anchor-prefix}features-separateDepthStencilLayouts]]
3666    pname:separateDepthStencilLayouts indicates whether the implementation
3667    supports a sname:VkImageMemoryBarrier for a depth/stencil image with
3668    only one of ename:VK_IMAGE_ASPECT_DEPTH_BIT or
3669    ename:VK_IMAGE_ASPECT_STENCIL_BIT set, and whether
3670    ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
3671    ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
3672    ename:VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or
3673    ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.
3674// end::VK_KHR_separate_depth_stencil_layouts-features[]
3675
3676:refpage: VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures
3677include::{chapters}/features.adoc[tag=features]
3678
3679include::{generated}/validity/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.adoc[]
3680--
3681endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
3682
3683ifdef::VK_KHR_pipeline_executable_properties[]
3684[open,refpage='VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR',desc='Structure describing whether pipeline executable properties are available',type='structs']
3685--
3686The sname:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure
3687is defined as:
3688
3689include::{generated}/api/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.adoc[]
3690
3691This structure describes the following feature:
3692
3693  * pname:sType is a elink:VkStructureType value identifying this structure.
3694  * pname:pNext is `NULL` or a pointer to a structure extending this
3695    structure.
3696  * [[features-pipelineExecutableInfo]] pname:pipelineExecutableInfo
3697    indicates that the implementation supports reporting properties and
3698    statistics about the pipeline executables associated with a compiled
3699    pipeline.
3700
3701:refpage: VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR
3702include::{chapters}/features.adoc[tag=features]
3703
3704include::{generated}/validity/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.adoc[]
3705--
3706endif::VK_KHR_pipeline_executable_properties[]
3707
3708ifdef::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
3709[open,refpage='VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures',desc='Structure describing the shader demote to helper invocations features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT']
3710--
3711The sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures structure
3712is defined as:
3713
3714include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.adoc[]
3715
3716ifdef::VK_EXT_shader_demote_to_helper_invocation[]
3717or the equivalent
3718
3719include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.adoc[]
3720endif::VK_EXT_shader_demote_to_helper_invocation[]
3721
3722This structure describes the following feature:
3723
3724  * pname:sType is a elink:VkStructureType value identifying this structure.
3725  * pname:pNext is `NULL` or a pointer to a structure extending this
3726    structure.
3727
3728// Must have preceding whitespace
3729ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3730ifndef::VK_VERSION_1_3[:anchor-prefix:]
3731// tag::VK_EXT_shader_demote_to_helper_invocation-features[]
3732  * [[{anchor-prefix}features-shaderDemoteToHelperInvocation]]
3733    pname:shaderDemoteToHelperInvocation indicates whether the
3734    implementation supports the SPIR-V code:DemoteToHelperInvocationEXT
3735    capability.
3736// end::VK_EXT_shader_demote_to_helper_invocation-features[]
3737
3738:refpage: VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures
3739include::{chapters}/features.adoc[tag=features]
3740
3741include::{generated}/validity/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.adoc[]
3742--
3743endif::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
3744
3745ifdef::VK_EXT_texel_buffer_alignment[]
3746[open,refpage='VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',desc='Structure describing the texel buffer alignment features that can be supported by an implementation',type='structs']
3747--
3748The sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is
3749defined as:
3750
3751include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.adoc[]
3752
3753This structure describes the following feature:
3754
3755  * pname:sType is a elink:VkStructureType value identifying this structure.
3756  * pname:pNext is `NULL` or a pointer to a structure extending this
3757    structure.
3758  * [[features-texelBufferAlignment]] pname:texelBufferAlignment indicates
3759    whether the implementation uses more specific alignment requirements
3760    advertised in slink:VkPhysicalDeviceTexelBufferAlignmentProperties
3761    rather than
3762    slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
3763
3764:refpage: VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
3765include::{chapters}/features.adoc[tag=features]
3766
3767include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.adoc[]
3768--
3769endif::VK_EXT_texel_buffer_alignment[]
3770
3771ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
3772[open,refpage='VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT',desc='Structure describing if dynamic feedback loops can be used',type='structs']
3773--
3774The sname:VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
3775structure is defined as:
3776
3777include::{generated}/api/structs/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.adoc[]
3778
3779This structure describes the following features:
3780
3781  * pname:sType is a elink:VkStructureType value identifying this structure.
3782  * pname:pNext is `NULL` or a pointer to a structure extending this
3783    structure.
3784  * [[features-attachmentFeedbackLoopDynamicState]]
3785    pname:attachmentFeedbackLoopDynamicState specifies whether dynamic
3786    feedback loops are supported.
3787
3788:refpage: VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT
3789include::{chapters}/features.adoc[tag=features]
3790
3791include::{generated}/validity/structs/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.adoc[]
3792--
3793endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
3794
3795ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
3796[open,refpage='VkPhysicalDeviceTextureCompressionASTCHDRFeatures',desc='Structure describing ASTC HDR features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT']
3797--
3798The sname:VkPhysicalDeviceTextureCompressionASTCHDRFeatures structure is
3799defined as:
3800
3801include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.adoc[]
3802
3803ifdef::VK_EXT_texture_compression_astc_hdr[]
3804or the equivalent
3805
3806include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.adoc[]
3807endif::VK_EXT_texture_compression_astc_hdr[]
3808
3809This structure describes the following feature:
3810
3811  * pname:sType is a elink:VkStructureType value identifying this structure.
3812  * pname:pNext is `NULL` or a pointer to a structure extending this
3813    structure.
3814
3815// Must have preceding whitespace
3816ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3817ifndef::VK_VERSION_1_3[:anchor-prefix:]
3818// tag::VK_EXT_texture_compression_astc_hdr-features[]
3819  * [[{anchor-prefix}features-textureCompressionASTC_HDR]]
3820    pname:textureCompressionASTC_HDR indicates whether all of the ASTC HDR
3821    compressed texture formats are supported.
3822    If this feature is enabled, then the
3823    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
3824    ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and
3825    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must:
3826    be supported in pname:optimalTilingFeatures for the following formats:
3827+
3828  ** ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK
3829  ** ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK
3830  ** ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK
3831  ** ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK
3832  ** ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK
3833  ** ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK
3834  ** ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK
3835  ** ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK
3836  ** ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK
3837  ** ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK
3838  ** ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK
3839  ** ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK
3840  ** ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK
3841  ** ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK
3842+
3843To query for additional properties, or if the feature is not enabled,
3844flink:vkGetPhysicalDeviceFormatProperties and
3845flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for
3846supported properties of individual formats as normal.
3847// end::VK_EXT_texture_compression_astc_hdr-features[]
3848
3849:refpage: VkPhysicalDeviceTextureCompressionASTCHDRFeatures
3850include::{chapters}/features.adoc[tag=features]
3851
3852include::{generated}/validity/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.adoc[]
3853--
3854endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
3855
3856ifdef::VK_EXT_line_rasterization[]
3857[open,refpage='VkPhysicalDeviceLineRasterizationFeaturesEXT',desc='Structure describing the line rasterization features that can be supported by an implementation',type='structs']
3858--
3859The sname:VkPhysicalDeviceLineRasterizationFeaturesEXT structure is defined
3860as:
3861
3862include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.adoc[]
3863
3864This structure describes the following features:
3865
3866  * pname:sType is a elink:VkStructureType value identifying this structure.
3867  * pname:pNext is `NULL` or a pointer to a structure extending this
3868    structure.
3869  * [[features-rectangularLines]] pname:rectangularLines indicates whether
3870    the implementation supports <<primsrast-lines,rectangular line
3871    rasterization>>.
3872  * [[features-bresenhamLines]] pname:bresenhamLines indicates whether the
3873    implementation supports <<primsrast-lines-bresenham,Bresenham-style line
3874    rasterization>>.
3875  * [[features-smoothLines]] pname:smoothLines indicates whether the
3876    implementation supports <<primsrast-lines-smooth,smooth line
3877    rasterization>>.
3878  * [[features-stippledRectangularLines]] pname:stippledRectangularLines
3879    indicates whether the implementation supports
3880    <<primsrast-lines-stipple,stippled line rasterization>> with
3881    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT lines.
3882  * [[features-stippledBresenhamLines]] pname:stippledBresenhamLines
3883    indicates whether the implementation supports
3884    <<primsrast-lines-stipple,stippled line rasterization>> with
3885    ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines.
3886  * [[features-stippledSmoothLines]] pname:stippledSmoothLines indicates
3887    whether the implementation supports <<primsrast-lines-stipple,stippled
3888    line rasterization>> with
3889    ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT lines.
3890
3891:refpage: VkPhysicalDeviceLineRasterizationFeaturesEXT
3892include::{chapters}/features.adoc[tag=features]
3893
3894include::{generated}/validity/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.adoc[]
3895--
3896endif::VK_EXT_line_rasterization[]
3897
3898ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
3899[open,refpage='VkPhysicalDeviceSubgroupSizeControlFeatures',desc='Structure describing the subgroup size control features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSubgroupSizeControlFeaturesEXT']
3900--
3901The sname:VkPhysicalDeviceSubgroupSizeControlFeatures structure is defined
3902as:
3903
3904include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeatures.adoc[]
3905
3906ifdef::VK_EXT_subgroup_size_control[]
3907or the equivalent
3908
3909include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.adoc[]
3910endif::VK_EXT_subgroup_size_control[]
3911
3912This structure describes the following features:
3913
3914  * pname:sType is a elink:VkStructureType value identifying this structure.
3915  * pname:pNext is `NULL` or a pointer to a structure extending this
3916    structure.
3917
3918// Must have preceding whitespace
3919ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
3920ifndef::VK_VERSION_1_3[:anchor-prefix:]
3921// tag::VK_EXT_subgroup_size_control-features[]
3922  * [[{anchor-prefix}features-subgroupSizeControl]]
3923    pname:subgroupSizeControl indicates whether the implementation supports
3924    controlling shader subgroup sizes via the
3925    ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
3926    flag and the slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo
3927    structure.
3928  * [[{anchor-prefix}features-computeFullSubgroups]]
3929    pname:computeFullSubgroups indicates whether the implementation supports
3930    requiring full subgroups in compute
3931ifdef::VK_NV_mesh_shader[]
3932    , mesh, or task
3933endif::VK_NV_mesh_shader[]
3934    shaders via the
3935    ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag.
3936// end::VK_EXT_subgroup_size_control-features[]
3937
3938:refpage: VkPhysicalDeviceSubgroupSizeControlFeatures
3939include::{chapters}/features.adoc[tag=features]
3940
3941ifndef::VKSC_VERSION_1_0[]
3942[NOTE]
3943.Note
3944====
3945The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure was added
3946in version 2 of the `apiext:VK_EXT_subgroup_size_control` extension.
3947Version 1 implementations of this extension will not fill out the features
3948structure but applications may assume that both pname:subgroupSizeControl
3949and pname:computeFullSubgroups are supported if the extension is supported.
3950(See also the <<features-requirements, Feature Requirements>> section.)
3951Applications are advised to add a
3952sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure to the
3953pname:pNext chain of slink:VkDeviceCreateInfo to enable the features
3954regardless of the version of the extension supported by the implementation.
3955If the implementation only supports version 1, it will safely ignore the
3956sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure.
3957
3958Vulkan 1.3 implementations always support the features structure.
3959====
3960endif::VKSC_VERSION_1_0[]
3961
3962include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlFeatures.adoc[]
3963--
3964endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
3965
3966ifdef::VK_AMD_device_coherent_memory[]
3967[open,refpage='VkPhysicalDeviceCoherentMemoryFeaturesAMD',desc='Structure describing whether device coherent memory can be supported by an implementation',type='structs']
3968--
3969The sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as:
3970
3971include::{generated}/api/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.adoc[]
3972
3973This structure describes the following feature:
3974
3975  * pname:sType is a elink:VkStructureType value identifying this structure.
3976  * pname:pNext is `NULL` or a pointer to a structure extending this
3977    structure.
3978  * [[features-deviceCoherentMemory]] pname:deviceCoherentMemory indicates
3979    that the implementation supports <<VkMemoryPropertyFlagBits,device
3980    coherent memory>>.
3981
3982:refpage: VkPhysicalDeviceCoherentMemoryFeaturesAMD
3983include::{chapters}/features.adoc[tag=features]
3984
3985include::{generated}/validity/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.adoc[]
3986--
3987endif::VK_AMD_device_coherent_memory[]
3988
3989ifdef::VK_KHR_acceleration_structure[]
3990[open,refpage='VkPhysicalDeviceAccelerationStructureFeaturesKHR',desc='Structure describing the acceleration structure features that can be supported by an implementation',type='structs']
3991--
3992The sname:VkPhysicalDeviceAccelerationStructureFeaturesKHR structure is
3993defined as:
3994
3995include::{generated}/api/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.adoc[]
3996
3997This structure describes the following features:
3998
3999  * pname:sType is a elink:VkStructureType value identifying this structure.
4000  * pname:pNext is `NULL` or a pointer to a structure extending this
4001    structure.
4002  * [[features-accelerationStructure]] pname:accelerationStructure indicates
4003    whether the implementation supports the acceleration structure
4004    functionality.
4005    See <<acceleration-structure,Acceleration Structures>>.
4006  * [[features-accelerationStructureCaptureReplay]]
4007    pname:accelerationStructureCaptureReplay indicates whether the
4008    implementation supports saving and reusing acceleration structure device
4009    addresses, e.g. for trace capture and replay.
4010  * [[features-accelerationStructureIndirectBuild]]
4011    pname:accelerationStructureIndirectBuild indicates whether the
4012    implementation supports indirect acceleration structure build commands,
4013    e.g. flink:vkCmdBuildAccelerationStructuresIndirectKHR.
4014  * [[features-accelerationStructureHostCommands]]
4015    pname:accelerationStructureHostCommands indicates whether the
4016    implementation supports host side acceleration structure commands, e.g.
4017    flink:vkBuildAccelerationStructuresKHR,
4018    flink:vkCopyAccelerationStructureKHR,
4019    flink:vkCopyAccelerationStructureToMemoryKHR,
4020    flink:vkCopyMemoryToAccelerationStructureKHR,
4021    flink:vkWriteAccelerationStructuresPropertiesKHR.
4022  * [[features-descriptorBindingAccelerationStructureUpdateAfterBind]]
4023    pname:descriptorBindingAccelerationStructureUpdateAfterBind indicates
4024    whether the implementation supports updating acceleration structure
4025    descriptors after a set is bound.
4026    If this feature is not enabled,
4027    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with
4028    ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR.
4029
4030:refpage: VkPhysicalDeviceAccelerationStructureFeaturesKHR
4031include::{chapters}/features.adoc[tag=features]
4032
4033include::{generated}/validity/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.adoc[]
4034--
4035endif::VK_KHR_acceleration_structure[]
4036
4037ifdef::VK_KHR_ray_tracing_pipeline[]
4038[open,refpage='VkPhysicalDeviceRayTracingPipelineFeaturesKHR',desc='Structure describing the ray tracing features that can be supported by an implementation',type='structs']
4039--
4040The sname:VkPhysicalDeviceRayTracingPipelineFeaturesKHR structure is defined
4041as:
4042
4043include::{generated}/api/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.adoc[]
4044
4045This structure describes the following features:
4046
4047  * pname:sType is a elink:VkStructureType value identifying this structure.
4048  * pname:pNext is `NULL` or a pointer to a structure extending this
4049    structure.
4050  * [[features-rayTracingPipeline]] pname:rayTracingPipeline indicates
4051    whether the implementation supports the ray tracing pipeline
4052    functionality.
4053    See <<ray-tracing,Ray Tracing>>.
4054  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplay]]
4055    pname:rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether
4056    the implementation supports saving and reusing shader group handles,
4057    e.g. for trace capture and replay.
4058  * [[features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed]]
4059    pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed indicates
4060    whether the implementation supports reuse of shader group handles being
4061    arbitrarily mixed with creation of non-reused shader group handles.
4062    If this is ename:VK_FALSE, all reused shader group handles must: be
4063    specified before any non-reused handles may: be created.
4064  * [[features-rayTracingPipelineTraceRaysIndirect]]
4065    pname:rayTracingPipelineTraceRaysIndirect indicates whether the
4066    implementation supports indirect ray tracing commands, e.g.
4067    flink:vkCmdTraceRaysIndirectKHR.
4068  * [[features-rayTraversalPrimitiveCulling]]
4069    pname:rayTraversalPrimitiveCulling indicates whether the implementation
4070    supports <<ray-traversal-culling-primitive, primitive culling during ray
4071    traversal>>.
4072
4073:refpage: VkPhysicalDeviceRayTracingPipelineFeaturesKHR
4074include::{chapters}/features.adoc[tag=features]
4075
4076.Valid Usage
4077****
4078  * [[VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575]]
4079    If pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed is
4080    ename:VK_TRUE, pname:rayTracingPipelineShaderGroupHandleCaptureReplay
4081    must: also be ename:VK_TRUE
4082****
4083
4084include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.adoc[]
4085--
4086endif::VK_KHR_ray_tracing_pipeline[]
4087
4088ifdef::VK_KHR_ray_query[]
4089[open,refpage='VkPhysicalDeviceRayQueryFeaturesKHR',desc='Structure describing the ray query features that can be supported by an implementation',type='structs']
4090--
4091The sname:VkPhysicalDeviceRayQueryFeaturesKHR structure is defined as:
4092
4093include::{generated}/api/structs/VkPhysicalDeviceRayQueryFeaturesKHR.adoc[]
4094
4095This structure describes the following feature:
4096
4097  * pname:sType is a elink:VkStructureType value identifying this structure.
4098  * pname:pNext is `NULL` or a pointer to a structure extending this
4099    structure.
4100  * [[features-rayQuery]] pname:rayQuery indicates whether the
4101    implementation supports ray query (code:OpRayQueryProceedKHR)
4102    functionality.
4103
4104:refpage: VkPhysicalDeviceRayQueryFeaturesKHR
4105include::{chapters}/features.adoc[tag=features]
4106
4107include::{generated}/validity/structs/VkPhysicalDeviceRayQueryFeaturesKHR.adoc[]
4108--
4109endif::VK_KHR_ray_query[]
4110
4111ifdef::VK_KHR_ray_tracing_maintenance1[]
4112[open,refpage='VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR',desc='Structure describing the ray tracing maintenance features that can be supported by an implementation',type='structs']
4113--
4114The sname:VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR structure is
4115defined as:
4116
4117include::{generated}/api/structs/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.adoc[]
4118
4119This structure describes the following features:
4120
4121  * pname:sType is a elink:VkStructureType value identifying this structure.
4122  * pname:pNext is `NULL` or a pointer to a structure extending this
4123    structure.
4124  * [[features-rayTracingMaintenance1]] pname:rayTracingMaintenance1
4125    indicates that the implementation supports the following:
4126  ** The code:CullMaskKHR SPIR-V builtin using the `SPV_KHR_ray_cull_mask`
4127     SPIR-V extension.
4128  ** Additional acceleration structure property queries:
4129     ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
4130     and ename:VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR.
4131  ** A new access flag ename:VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR.
4132  ** A new pipeline stage flag bit
4133     ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR
4134  * [[features-rayTracingPipelineTraceRaysIndirect2]]
4135    pname:rayTracingPipelineTraceRaysIndirect2 indicates whether the
4136    implementation supports the extended indirect ray tracing command
4137    flink:vkCmdTraceRaysIndirect2KHR.
4138
4139:refpage: VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
4140include::{chapters}/features.adoc[tag=features]
4141
4142include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.adoc[]
4143--
4144endif::VK_KHR_ray_tracing_maintenance1[]
4145
4146ifdef::VK_EXT_extended_dynamic_state[]
4147[open,refpage='VkPhysicalDeviceExtendedDynamicStateFeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
4148--
4149The sname:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure is
4150defined as:
4151
4152include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.adoc[]
4153
4154This structure describes the following feature:
4155
4156  * pname:sType is a elink:VkStructureType value identifying this structure.
4157  * pname:pNext is `NULL` or a pointer to a structure extending this
4158    structure.
4159  * [[features-extendedDynamicState]] pname:extendedDynamicState indicates
4160    that the implementation supports the following dynamic states:
4161  ** ename:VK_DYNAMIC_STATE_CULL_MODE
4162  ** ename:VK_DYNAMIC_STATE_FRONT_FACE
4163  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
4164  ** ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
4165  ** ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
4166  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
4167  ** ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE
4168  ** ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
4169  ** ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP
4170  ** ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
4171  ** ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE
4172  ** ename:VK_DYNAMIC_STATE_STENCIL_OP
4173
4174:refpage: VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
4175include::{chapters}/features.adoc[tag=features]
4176
4177include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.adoc[]
4178--
4179endif::VK_EXT_extended_dynamic_state[]
4180
4181ifdef::VK_EXT_extended_dynamic_state2[]
4182[open,refpage='VkPhysicalDeviceExtendedDynamicState2FeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs']
4183--
4184The sname:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure is
4185defined as:
4186
4187include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.adoc[]
4188
4189This structure describes the following features:
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-extendedDynamicState2]] pname:extendedDynamicState2 indicates
4195    that the implementation supports the following dynamic states:
4196  ** ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
4197  ** ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
4198  ** ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
4199  * [[features-extendedDynamicState2LogicOp]]
4200    pname:extendedDynamicState2LogicOp indicates that the implementation
4201    supports the following dynamic state:
4202  ** ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT
4203  * [[features-extendedDynamicState2PatchControlPoints]]
4204    pname:extendedDynamicState2PatchControlPoints indicates that the
4205    implementation supports the following dynamic state:
4206  ** ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
4207
4208:refpage: VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
4209include::{chapters}/features.adoc[tag=features]
4210
4211include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.adoc[]
4212--
4213endif::VK_EXT_extended_dynamic_state2[]
4214
4215ifdef::VK_EXT_extended_dynamic_state3[]
4216[open,refpage='VkPhysicalDeviceExtendedDynamicState3FeaturesEXT',desc='Structure describing what extended dynamic state is supported by the implementation',type='structs']
4217--
4218The sname:VkPhysicalDeviceExtendedDynamicState3FeaturesEXT structure is
4219defined as:
4220
4221include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.adoc[]
4222
4223This structure describes the following features:
4224
4225  * pname:sType is a elink:VkStructureType value identifying this structure.
4226  * pname:pNext is `NULL` or a pointer to a structure extending this
4227    structure.
4228  * [[features-extendedDynamicState3TessellationDomainOrigin]]
4229    pname:extendedDynamicState3TessellationDomainOrigin indicates that the
4230    implementation supports the following dynamic state:
4231  ** ename:VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
4232  * [[features-extendedDynamicState3DepthClampEnable]]
4233    pname:extendedDynamicState3DepthClampEnable indicates that the
4234    implementation supports the following dynamic state:
4235  ** ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
4236  * [[features-extendedDynamicState3PolygonMode]]
4237    pname:extendedDynamicState3PolygonMode indicates that the implementation
4238    supports the following dynamic state:
4239  ** ename:VK_DYNAMIC_STATE_POLYGON_MODE_EXT
4240  * [[features-extendedDynamicState3RasterizationSamples]]
4241    pname:extendedDynamicState3RasterizationSamples indicates that the
4242    implementation supports the following dynamic state:
4243  ** ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
4244  * [[features-extendedDynamicState3SampleMask]]
4245    pname:extendedDynamicState3SampleMask indicates that the implementation
4246    supports the following dynamic state:
4247  ** ename:VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
4248  * [[features-extendedDynamicState3AlphaToCoverageEnable]]
4249    pname:extendedDynamicState3AlphaToCoverageEnable indicates that the
4250    implementation supports the following dynamic state:
4251  ** ename:VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
4252  * [[features-extendedDynamicState3AlphaToOneEnable]]
4253    pname:extendedDynamicState3AlphaToOneEnable indicates that the
4254    implementation supports the following dynamic state:
4255  ** ename:VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
4256  * [[features-extendedDynamicState3LogicOpEnable]]
4257    pname:extendedDynamicState3LogicOpEnable indicates that the
4258    implementation supports the following dynamic state:
4259  ** ename:VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
4260  * [[features-extendedDynamicState3ColorBlendEnable]]
4261    pname:extendedDynamicState3ColorBlendEnable indicates that the
4262    implementation supports the following dynamic state:
4263  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
4264  * [[features-extendedDynamicState3ColorBlendEquation]]
4265    pname:extendedDynamicState3ColorBlendEquation indicates that the
4266    implementation supports the following dynamic state:
4267  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
4268  * [[features-extendedDynamicState3ColorWriteMask]]
4269    pname:extendedDynamicState3ColorWriteMask indicates that the
4270    implementation supports the following dynamic state:
4271  ** ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
4272  * [[features-extendedDynamicState3RasterizationStream]]
4273    pname:extendedDynamicState3RasterizationStream indicates that the
4274    implementation supports the following dynamic state:
4275  ** ename:VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
4276  * [[features-extendedDynamicState3ConservativeRasterizationMode]]
4277    pname:extendedDynamicState3ConservativeRasterizationMode indicates that
4278    the implementation supports the following dynamic state:
4279  ** ename:VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
4280  * [[features-extendedDynamicState3ExtraPrimitiveOverestimationSize]]
4281    pname:extendedDynamicState3ExtraPrimitiveOverestimationSize indicates
4282    that the implementation supports the following dynamic state:
4283  ** ename:VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
4284  * [[features-extendedDynamicState3DepthClipEnable]]
4285    pname:extendedDynamicState3DepthClipEnable indicates that the
4286    implementation supports the following dynamic state:
4287  ** ename:VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
4288  * [[features-extendedDynamicState3SampleLocationsEnable]]
4289    pname:extendedDynamicState3SampleLocationsEnable indicates that the
4290    implementation supports the following dynamic state:
4291  ** ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
4292  * [[features-extendedDynamicState3ColorBlendAdvanced]]
4293    pname:extendedDynamicState3ColorBlendAdvanced indicates that the
4294    implementation supports the following dynamic state:
4295  ** ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
4296  * [[features-extendedDynamicState3ProvokingVertexMode]]
4297    pname:extendedDynamicState3ProvokingVertexMode indicates that the
4298    implementation supports the following dynamic state:
4299  ** ename:VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
4300  * [[features-extendedDynamicState3LineRasterizationMode]]
4301    pname:extendedDynamicState3LineRasterizationMode indicates that the
4302    implementation supports the following dynamic state:
4303  ** ename:VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
4304  * [[features-extendedDynamicState3LineStippleEnable]]
4305    pname:extendedDynamicState3LineStippleEnable indicates that the
4306    implementation supports the following dynamic state:
4307  ** ename:VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
4308  * [[features-extendedDynamicState3DepthClipNegativeOneToOne]]
4309    pname:extendedDynamicState3DepthClipNegativeOneToOne indicates that the
4310    implementation supports the following dynamic state:
4311  ** ename:VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
4312  * [[features-extendedDynamicState3ViewportWScalingEnable]]
4313    pname:extendedDynamicState3ViewportWScalingEnable indicates that the
4314    implementation supports the following dynamic state:
4315  ** ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
4316  * [[features-extendedDynamicState3ViewportSwizzle]]
4317    pname:extendedDynamicState3ViewportSwizzle indicates that the
4318    implementation supports the following dynamic state:
4319  ** ename:VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
4320  * [[features-extendedDynamicState3CoverageToColorEnable]]
4321    pname:extendedDynamicState3CoverageToColorEnable indicates that the
4322    implementation supports the following dynamic state:
4323  ** ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
4324  * [[features-extendedDynamicState3CoverageToColorLocation]]
4325    pname:extendedDynamicState3CoverageToColorLocation indicates that the
4326    implementation supports the following dynamic state:
4327  ** ename:VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
4328  * [[features-extendedDynamicState3CoverageModulationMode]]
4329    pname:extendedDynamicState3CoverageModulationMode indicates that the
4330    implementation supports the following dynamic state:
4331  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
4332  * [[features-extendedDynamicState3CoverageModulationTableEnable]]
4333    pname:extendedDynamicState3CoverageModulationTableEnable indicates that
4334    the implementation supports the following dynamic state:
4335  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
4336  * [[features-extendedDynamicState3CoverageModulationTable]]
4337    pname:extendedDynamicState3CoverageModulationTable indicates that the
4338    implementation supports the following dynamic state:
4339  ** ename:VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
4340  * [[features-extendedDynamicState3CoverageReductionMode]]
4341    pname:extendedDynamicState3CoverageReductionMode indicates that the
4342    implementation supports the following dynamic state:
4343  ** ename:VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
4344  * [[features-extendedDynamicState3RepresentativeFragmentTestEnable]]
4345    pname:extendedDynamicState3RepresentativeFragmentTestEnable indicates
4346    that the implementation supports the following dynamic state:
4347  ** ename:VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
4348  * [[features-extendedDynamicState3ShadingRateImageEnable]]
4349    pname:extendedDynamicState3ShadingRateImageEnable indicates that the
4350    implementation supports the following dynamic state:
4351  ** ename:VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
4352
4353:refpage: VkPhysicalDeviceExtendedDynamicState3FeaturesEXT
4354include::{chapters}/features.adoc[tag=features]
4355
4356include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.adoc[]
4357--
4358endif::VK_EXT_extended_dynamic_state3[]
4359
4360ifdef::VK_NV_device_generated_commands[]
4361[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV',desc='Structure describing the device-generated commands features that can be supported by an implementation',type='structs']
4362--
4363The sname:VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV structure is
4364defined as:
4365
4366include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.adoc[]
4367
4368This structure describes the following feature:
4369
4370  * pname:sType is a elink:VkStructureType value identifying this structure.
4371  * pname:pNext is `NULL` or a pointer to a structure extending this
4372    structure.
4373  * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands
4374    indicates whether the implementation supports functionality to generate
4375    commands on the device.
4376    See <<device-generated-commands,Device-Generated Commands>>.
4377
4378:refpage: VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
4379include::{chapters}/features.adoc[tag=features]
4380
4381include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.adoc[]
4382--
4383endif::VK_NV_device_generated_commands[]
4384
4385ifdef::VK_NV_device_generated_commands_compute[]
4386[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV',desc='Structure describing the device-generated compute features that can be supported by an implementation',type='structs']
4387--
4388The sname:VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV structure
4389is defined as:
4390
4391include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.adoc[]
4392
4393This structure describes the following features:
4394
4395  * pname:sType is a elink:VkStructureType value identifying this structure.
4396  * pname:pNext is `NULL` or a pointer to a structure extending this
4397    structure.
4398  * [[features-deviceGeneratedCompute]] pname:deviceGeneratedCompute
4399    indicates whether the implementation supports functionality to generate
4400    dispatch commands and push constants for the compute pipeline on the
4401    device.
4402    See <<device-generated-commands,Device-Generated Commands>>.
4403  * [[features-deviceGeneratedComputePipelines]]
4404    pname:deviceGeneratedComputePipelines indicates whether the
4405    implementation supports functionality to generate commands to bind
4406    compute pipelines on the device.
4407    See <<device-generated-commands,Device-Generated Commands>>.
4408  * [[features-deviceGeneratedComputeCaptureReplay]]
4409    pname:deviceGeneratedComputeCaptureReplay indicates whether the
4410    implementation supports functionality to capture compute pipeline
4411    address and reuse later for replay in
4412    <<device-generated-commands,Device-Generated Commands>>.
4413
4414:refpage: VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV
4415include::{chapters}/features.adoc[tag=features]
4416
4417include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.adoc[]
4418--
4419endif::VK_NV_device_generated_commands_compute[]
4420
4421ifdef::VK_NV_device_diagnostics_config[]
4422[open,refpage='VkPhysicalDeviceDiagnosticsConfigFeaturesNV',desc='Structure describing the device-generated diagnostic configuration features that can be supported by an implementation',type='structs']
4423--
4424The sname:VkPhysicalDeviceDiagnosticsConfigFeaturesNV structure is defined
4425as:
4426
4427include::{generated}/api/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.adoc[]
4428
4429This structure describes the following feature:
4430
4431  * pname:sType is a elink:VkStructureType value identifying this structure.
4432  * pname:pNext is `NULL` or a pointer to a structure extending this
4433    structure.
4434  * [[features-diagnosticsConfig]] pname:diagnosticsConfig indicates whether
4435    the implementation supports the ability to configure diagnostic tools.
4436
4437:refpage: VkPhysicalDeviceDiagnosticsConfigFeaturesNV
4438include::{chapters}/features.adoc[tag=features]
4439
4440include::{generated}/validity/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.adoc[]
4441--
4442endif::VK_NV_device_diagnostics_config[]
4443
4444ifdef::VK_EXT_device_memory_report[]
4445[open,refpage='VkPhysicalDeviceDeviceMemoryReportFeaturesEXT',desc='Structure describing whether device memory report callback can be supported by an implementation',type='structs']
4446--
4447The sname:VkPhysicalDeviceDeviceMemoryReportFeaturesEXT structure is defined
4448as:
4449
4450include::{generated}/api/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.adoc[]
4451
4452This structure describes the following feature:
4453
4454  * pname:sType is a elink:VkStructureType value identifying this structure.
4455  * pname:pNext is `NULL` or a pointer to a structure extending this
4456    structure.
4457  * [[features-deviceMemoryReport]] pname:deviceMemoryReport indicates
4458    whether the implementation supports the ability to register device
4459    memory report callbacks.
4460
4461:refpage: VkPhysicalDeviceDeviceMemoryReportFeaturesEXT
4462include::{chapters}/features.adoc[tag=features]
4463
4464include::{generated}/validity/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.adoc[]
4465--
4466endif::VK_EXT_device_memory_report[]
4467
4468ifdef::VK_EXT_global_priority_query,VK_KHR_global_priority[]
4469[open,refpage='VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR',desc='Structure describing whether global priority query can be supported by an implementation',type='structs']
4470--
4471The sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR structure is
4472defined as:
4473
4474include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.adoc[]
4475ifdef::VK_EXT_global_priority_query[]
4476or the equivalent
4477
4478include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.adoc[]
4479endif::VK_EXT_global_priority_query[]
4480
4481This structure describes the following feature:
4482
4483  * pname:sType is a elink:VkStructureType value identifying this structure.
4484  * pname:pNext is `NULL` or a pointer to a structure extending this
4485    structure.
4486  * [[features-globalPriorityQuery]] pname:globalPriorityQuery indicates
4487    whether the implementation supports the ability to query global queue
4488    priorities.
4489
4490:refpage: VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR
4491include::{chapters}/features.adoc[tag=features]
4492
4493include::{generated}/validity/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR.adoc[]
4494--
4495endif::VK_EXT_global_priority_query,VK_KHR_global_priority[]
4496
4497ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
4498[open,refpage='VkPhysicalDevicePipelineCreationCacheControlFeatures',desc='Structure describing whether pipeline cache control can be supported by an implementation',type='structs',alias='VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT']
4499--
4500The sname:VkPhysicalDevicePipelineCreationCacheControlFeatures structure is
4501defined as:
4502
4503include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeatures.adoc[]
4504
4505ifdef::VK_EXT_pipeline_creation_cache_control[]
4506or the equivalent
4507
4508include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.adoc[]
4509endif::VK_EXT_pipeline_creation_cache_control[]
4510
4511This structure describes the following feature:
4512
4513  * pname:sType is a elink:VkStructureType value identifying this structure.
4514  * pname:pNext is `NULL` or a pointer to a structure extending this
4515    structure.
4516
4517// Must have preceding whitespace
4518ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4519ifndef::VK_VERSION_1_3[:anchor-prefix:]
4520// tag::VK_EXT_pipeline_creation_cache_control-features[]
4521  * [[{anchor-prefix}features-pipelineCreationCacheControl]]
4522    pname:pipelineCreationCacheControl indicates that the implementation
4523    supports:
4524  ** The following can: be used in stext:Vk*PipelineCreateInfo::pname:flags:
4525  *** ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
4526  *** ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
4527  ** The following can: be used in
4528     slink:VkPipelineCacheCreateInfo::pname:flags:
4529  *** ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
4530// end::VK_EXT_pipeline_creation_cache_control-features[]
4531
4532:refpage: VkPhysicalDevicePipelineCreationCacheControlFeatures
4533include::{chapters}/features.adoc[tag=features]
4534
4535include::{generated}/validity/structs/VkPhysicalDevicePipelineCreationCacheControlFeatures.adoc[]
4536--
4537endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
4538
4539ifdef::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
4540[open,refpage='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',desc='Structure describing support for zero initialization of workgroup memory by an implementation',type='structs',alias='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR']
4541--
4542The sname:VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure is
4543defined as:
4544
4545include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.adoc[]
4546
4547ifdef::VK_KHR_zero_initialize_workgroup_memory[]
4548or the equivalent
4549
4550include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.adoc[]
4551endif::VK_KHR_zero_initialize_workgroup_memory[]
4552
4553This structure describes the following feature:
4554
4555  * pname:sType is a elink:VkStructureType value identifying this structure.
4556  * pname:pNext is `NULL` or a pointer to a structure extending this
4557    structure.
4558
4559// Must have preceding whitespace
4560ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4561ifndef::VK_VERSION_1_3[:anchor-prefix:]
4562// tag::VK_KHR_zero_initialize_workgroup_memory-features[]
4563  * [[{anchor-prefix}features-shaderZeroInitializeWorkgroupMemory]]
4564    pname:shaderZeroInitializeWorkgroupMemory specifies whether the
4565    implementation supports initializing a variable in Workgroup storage
4566    class.
4567// end::VK_KHR_zero_initialize_workgroup_memory-features[]
4568
4569:refpage: VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
4570include::{chapters}/features.adoc[tag=features]
4571
4572include::{generated}/validity/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.adoc[]
4573--
4574endif::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
4575
4576ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
4577[open,refpage='VkPhysicalDevicePrivateDataFeatures',desc='Structure specifying physical device support',type='structs',alias='VkPhysicalDevicePrivateDataFeaturesEXT']
4578--
4579The sname:VkPhysicalDevicePrivateDataFeatures structure is defined as:
4580
4581include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeatures.adoc[]
4582
4583ifdef::VK_EXT_private_data[]
4584or the equivalent
4585
4586include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeaturesEXT.adoc[]
4587endif::VK_EXT_private_data[]
4588
4589This structure describes the following feature:
4590
4591  * pname:sType is a elink:VkStructureType value identifying this structure.
4592  * pname:pNext is `NULL` or a pointer to a structure extending this
4593    structure.
4594
4595// Must have preceding whitespace
4596ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4597ifndef::VK_VERSION_1_3[:anchor-prefix:]
4598// tag::VK_EXT_private_data-features[]
4599  * [[{anchor-prefix}features-privateData]] pname:privateData indicates
4600    whether the implementation supports private data.
4601    See <<private-data, Private Data>>.
4602// end::VK_EXT_private_data-features[]
4603
4604:refpage: VkPhysicalDevicePrivateDataFeatures
4605include::{chapters}/features.adoc[tag=features]
4606
4607include::{generated}/validity/structs/VkPhysicalDevicePrivateDataFeatures.adoc[]
4608--
4609endif::VK_VERSION_1_3,VK_EXT_private_data[]
4610
4611ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
4612[open,refpage='VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',desc='Structure describing support for shader subgroup uniform control flow by an implementation',type='structs']
4613--
4614The sname:VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
4615structure is defined as:
4616
4617include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.adoc[]
4618
4619This structure describes the following feature:
4620
4621  * pname:sType is a elink:VkStructureType value identifying this structure.
4622  * pname:pNext is `NULL` or a pointer to a structure extending this
4623    structure.
4624  * [[features-shaderSubgroupUniformControlFlow]]
4625    pname:shaderSubgroupUniformControlFlow specifies whether the
4626    implementation supports the shader execution mode
4627    code:SubgroupUniformControlFlowKHR
4628
4629:refpage: VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
4630include::{chapters}/features.adoc[tag=features]
4631
4632include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.adoc[]
4633--
4634endif::VK_KHR_shader_subgroup_uniform_control_flow[]
4635
4636ifdef::VK_EXT_robustness2[]
4637[open,refpage='VkPhysicalDeviceRobustness2FeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs']
4638--
4639The sname:VkPhysicalDeviceRobustness2FeaturesEXT structure is defined as:
4640
4641include::{generated}/api/structs/VkPhysicalDeviceRobustness2FeaturesEXT.adoc[]
4642
4643This structure describes the following features:
4644
4645  * pname:sType is a elink:VkStructureType value identifying this structure.
4646  * pname:pNext is `NULL` or a pointer to a structure extending this
4647    structure.
4648  * [[features-robustBufferAccess2]] pname:robustBufferAccess2 indicates
4649    whether buffer accesses are tightly bounds-checked against the range of
4650    the descriptor.
4651    Uniform buffers must: be bounds-checked to the range of the descriptor,
4652    where the range is rounded up to a multiple of
4653    <<limits-robustUniformBufferAccessSizeAlignment,
4654    pname:robustUniformBufferAccessSizeAlignment>>.
4655    Storage buffers must: be bounds-checked to the range of the descriptor,
4656    where the range is rounded up to a multiple of
4657    <<limits-robustStorageBufferAccessSizeAlignment,
4658    pname:robustStorageBufferAccessSizeAlignment>>.
4659    Out of bounds buffer loads will return zero values, and <<textures,
4660    image load, sample, and atomic operations>> from texel buffers will have
4661    [eq]#(0,0,1)# values <<textures-conversion-to-rgba,inserted for missing
4662    G, B, or A components>> based on the format.
4663  * [[features-robustImageAccess2]] pname:robustImageAccess2 indicates
4664    whether image accesses are tightly bounds-checked against the dimensions
4665    of the image view.
4666    Out of bounds <<textures, image load, sample, and atomic operations>>
4667    from images will return zero values, with [eq]#(0,0,1)# values
4668    <<textures-conversion-to-rgba,inserted for missing G, B, or A
4669    components>> based on the format.
4670  * [[{vuprefix}features-nullDescriptor]] pname:nullDescriptor indicates
4671    whether descriptors can: be written with a dlink:VK_NULL_HANDLE resource
4672    or view, which are considered valid to access and act as if the
4673    descriptor were bound to nothing.
4674
4675:refpage: VkPhysicalDeviceRobustness2FeaturesEXT
4676include::{chapters}/features.adoc[tag=features]
4677
4678.Valid Usage
4679****
4680  * [[VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000]]
4681    If pname:robustBufferAccess2 is enabled then
4682    <<features-robustBufferAccess, pname:robustBufferAccess>> must: also be
4683    enabled
4684****
4685
4686include::{generated}/validity/structs/VkPhysicalDeviceRobustness2FeaturesEXT.adoc[]
4687--
4688endif::VK_EXT_robustness2[]
4689
4690ifndef::VK_EXT_robustness2[]
4691[[features-nullDescriptor]] nullDescriptor support requires the
4692`apiext:VK_EXT_robustness2` extension.
4693endif::VK_EXT_robustness2[]
4694
4695ifdef::VK_VERSION_1_3,VK_EXT_image_robustness[]
4696[open,refpage='VkPhysicalDeviceImageRobustnessFeatures',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs',alias='VkPhysicalDeviceImageRobustnessFeaturesEXT']
4697--
4698The sname:VkPhysicalDeviceImageRobustnessFeatures structure is defined as:
4699
4700include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeatures.adoc[]
4701
4702ifdef::VK_EXT_image_robustness[]
4703or the equivalent
4704
4705include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.adoc[]
4706endif::VK_EXT_image_robustness[]
4707
4708This structure describes the following feature:
4709
4710  * pname:sType is a elink:VkStructureType value identifying this structure.
4711  * pname:pNext is `NULL` or a pointer to a structure extending this
4712    structure.
4713
4714// Must have preceding whitespace
4715ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4716ifndef::VK_VERSION_1_3[:anchor-prefix:]
4717// tag::VK_EXT_image_robustness-features[]
4718  * [[{anchor-prefix}features-robustImageAccess]] pname:robustImageAccess
4719    indicates whether image accesses are tightly bounds-checked against the
4720    dimensions of the image view.
4721    <<textures-input-validation,Invalid texels>> resulting from out of
4722    bounds image loads will be replaced as described in
4723    <<textures-texel-replacement,Texel Replacement>>, with either
4724    [eq]#(0,0,1)# or [eq]#(0,0,0)# values inserted for missing G, B, or A
4725    components based on the format.
4726// end::VK_EXT_image_robustness-features[]
4727
4728:refpage: VkPhysicalDeviceImageRobustnessFeatures
4729include::{chapters}/features.adoc[tag=features]
4730
4731include::{generated}/validity/structs/VkPhysicalDeviceImageRobustnessFeatures.adoc[]
4732--
4733endif::VK_VERSION_1_3,VK_EXT_image_robustness[]
4734
4735ifdef::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
4736[open,refpage='VkPhysicalDeviceShaderTerminateInvocationFeatures',desc='Structure describing support for the SPIR-V code:SPV_KHR_terminate_invocation extension',type='structs',alias='VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR']
4737--
4738The sname:VkPhysicalDeviceShaderTerminateInvocationFeatures structure is
4739defined as:
4740
4741include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeatures.adoc[]
4742
4743ifdef::VK_KHR_shader_terminate_invocation[]
4744or the equivalent
4745
4746include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.adoc[]
4747endif::VK_KHR_shader_terminate_invocation[]
4748
4749This structure describes the following feature:
4750
4751  * pname:sType is a elink:VkStructureType value identifying this structure.
4752  * pname:pNext is `NULL` or a pointer to a structure extending this
4753    structure.
4754
4755// Must have preceding whitespace
4756ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
4757ifndef::VK_VERSION_1_3[:anchor-prefix:]
4758// tag::VK_KHR_shader_terminate_invocation-features[]
4759  * [[{anchor-prefix}features-shaderTerminateInvocation]]
4760    pname:shaderTerminateInvocation specifies whether the implementation
4761    supports SPIR-V modules that use the `SPV_KHR_terminate_invocation`
4762    extension.
4763// end::VK_KHR_shader_terminate_invocation-features[]
4764
4765:refpage: VkPhysicalDeviceShaderTerminateInvocationFeatures
4766include::{chapters}/features.adoc[tag=features]
4767
4768include::{generated}/validity/structs/VkPhysicalDeviceShaderTerminateInvocationFeatures.adoc[]
4769--
4770endif::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
4771
4772ifdef::VK_EXT_custom_border_color[]
4773[open,refpage='VkPhysicalDeviceCustomBorderColorFeaturesEXT',desc='Structure describing whether custom border colors can be supported by an implementation',type='structs']
4774--
4775The sname:VkPhysicalDeviceCustomBorderColorFeaturesEXT structure is defined
4776as:
4777
4778include::{generated}/api/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.adoc[]
4779
4780This structure describes the following features:
4781
4782  * pname:sType is a elink:VkStructureType value identifying this structure.
4783  * pname:pNext is `NULL` or a pointer to a structure extending this
4784    structure.
4785  * [[features-customBorderColors]] pname:customBorderColors indicates that
4786    the implementation supports providing a pname:borderColor value with one
4787    of the following values at sampler creation time:
4788  ** ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
4789  ** ename:VK_BORDER_COLOR_INT_CUSTOM_EXT
4790  * [[features-customBorderColorWithoutFormat]]
4791    pname:customBorderColorWithoutFormat indicates that explicit formats are
4792    not required for custom border colors and the value of the pname:format
4793    member of the slink:VkSamplerCustomBorderColorCreateInfoEXT structure
4794    may: be ename:VK_FORMAT_UNDEFINED.
4795    If this feature bit is not set, applications must: provide the
4796    elink:VkFormat of the image view(s) being sampled by this sampler in the
4797    pname:format member of the slink:VkSamplerCustomBorderColorCreateInfoEXT
4798    structure.
4799
4800:refpage: VkPhysicalDeviceCustomBorderColorFeaturesEXT
4801include::{chapters}/features.adoc[tag=features]
4802
4803include::{generated}/validity/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.adoc[]
4804--
4805endif::VK_EXT_custom_border_color[]
4806
4807ifdef::VK_EXT_border_color_swizzle[]
4808[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']
4809--
4810The sname:VkPhysicalDeviceBorderColorSwizzleFeaturesEXT structure is defined
4811as:
4812
4813include::{generated}/api/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.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-borderColorSwizzle]] pname:borderColorSwizzle indicates that
4821    defined values are returned by sampled image operations when used with a
4822    sampler that uses a ename:VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
4823    ename:VK_BORDER_COLOR_INT_OPAQUE_BLACK,
4824    ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, or
4825    ename:VK_BORDER_COLOR_INT_CUSTOM_EXT pname:borderColor and an image view
4826    that uses a non-<<resources-image-views-identity-mappings,identity
4827    component mapping>>, when either pname:borderColorSwizzleFromImage is
4828    enabled or the slink:VkSamplerBorderColorComponentMappingCreateInfoEXT
4829    is specified.
4830  * [[features-borderColorSwizzleFromImage]]
4831    pname:borderColorSwizzleFromImage indicates that the implementation will
4832    return the correct border color values from sampled image operations
4833    under the conditions expressed above, without the application having to
4834    specify the border color component mapping when creating the sampler
4835    object.
4836    If this feature bit is not set, applications can: chain a
4837    slink:VkSamplerBorderColorComponentMappingCreateInfoEXT structure when
4838    creating samplers for use with image views that do not have an
4839    <<resources-image-views-identity-mappings,identity swizzle>> and, when
4840    those samplers are combined with image views using the same component
4841    mapping, sampled image operations that use opaque black or custom border
4842    colors will return the correct border color values.
4843
4844:refpage: VkPhysicalDeviceBorderColorSwizzleFeaturesEXT
4845include::{chapters}/features.adoc[tag=features]
4846
4847include::{generated}/validity/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.adoc[]
4848--
4849endif::VK_EXT_border_color_swizzle[]
4850
4851ifdef::VK_KHR_portability_subset[]
4852[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']
4853--
4854The sname:VkPhysicalDevicePortabilitySubsetFeaturesKHR structure is defined
4855as:
4856
4857include::{generated}/api/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.adoc[]
4858
4859This structure describes the following features:
4860
4861  * pname:sType is a elink:VkStructureType value identifying this structure.
4862  * pname:pNext is `NULL` or a pointer to a structure extending this
4863    structure.
4864  * [[features-constantAlphaColorBlendFactors]]
4865    pname:constantAlphaColorBlendFactors indicates whether this
4866    implementation supports constant _alpha_ <<framebuffer-blendfactors>>
4867    used as source or destination _color_ <<framebuffer-blending>>.
4868  * [[features-events]] pname:events indicates whether this implementation
4869    supports synchronization using <<synchronization-events>>.
4870  * [[features-imageViewFormatReinterpretation]]
4871    pname:imageViewFormatReinterpretation indicates whether this
4872    implementation supports a sname:VkImageView being created with a texel
4873    format containing a different number of components, or a different
4874    number of bits in each component, than the texel format of the
4875    underlying sname:VkImage.
4876  * [[features-imageViewFormatSwizzle]] pname:imageViewFormatSwizzle
4877    indicates whether this implementation supports remapping format
4878    components using slink:VkImageViewCreateInfo::pname:components.
4879  * [[features-imageView2DOn3DImage]] pname:imageView2DOn3DImage indicates
4880    whether this implementation supports a sname:VkImage being created with
4881    the ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a
4882    2D or 2D array image view to be created on a 3D sname:VkImage.
4883  * [[features-multisampleArrayImage]] pname:multisampleArrayImage indicates
4884    whether this implementation supports a sname:VkImage being created as a
4885    2D array with multiple samples per texel.
4886  * [[features-mutableComparisonSamplers]] pname:mutableComparisonSamplers
4887    indicates whether this implementation allows descriptors with comparison
4888    samplers to be <<descriptorsets-updates, updated>>.
4889  * [[features-pointPolygons]] pname:pointPolygons indicates whether this
4890    implementation supports <<primsrast>> using a _point_
4891    <<primsrast-polygonmode>>.
4892  * [[features-samplerMipLodBias]] pname:samplerMipLodBias indicates whether
4893    this implementation supports setting a <<samplers-mipLodBias, mipmap LOD
4894    bias value>> when <<samplers, creating a sampler>>.
4895  * [[features-separateStencilMaskRef]] pname:separateStencilMaskRef
4896    indicates whether this implementation supports separate front and back
4897    <<fragops-stencil>> reference values.
4898  * [[features-shaderSampleRateInterpolationFunctions]]
4899    pname:shaderSampleRateInterpolationFunctions indicates whether this
4900    implementation supports fragment shaders which use the
4901    <<spirvenv-capabilities-table-InterpolationFunction,
4902    code:InterpolationFunction>> capability and the extended instructions
4903    `InterpolateAtCentroid`, `InterpolateAtOffset`, and
4904    `InterpolateAtSample` from the `GLSL.std.450` extended instruction set.
4905    This member is only meaningful if the <<features-sampleRateShading,
4906    pname:sampleRateShading>> feature is supported.
4907  * [[features-tessellationIsolines]] pname:tessellationIsolines indicates
4908    whether this implementation supports
4909    <<tessellation-isoline-tessellation, isoline output>> from the
4910    <<tessellation>> stage of a graphics pipeline.
4911    This member is only meaningful if <<features-tessellationShader,
4912    pname:tessellationShader>> are supported.
4913  * [[features-tessellationPointMode]] pname:tessellationPointMode indicates
4914    whether this implementation supports <<tessellation-point-mode, point
4915    output>> from the <<tessellation>> stage of a graphics pipeline.
4916    This member is only meaningful if <<features-tessellationShader,
4917    pname:tessellationShader>> are supported.
4918  * [[features-triangleFans]] pname:triangleFans indicates whether this
4919    implementation supports <<drawing-triangle-fans>> primitive topology.
4920  * [[features-vertexAttributeAccessBeyondStride]]
4921    pname:vertexAttributeAccessBeyondStride indicates whether this
4922    implementation supports accessing a vertex input attribute beyond the
4923    stride of the corresponding vertex input binding.
4924
4925:refpage: VkPhysicalDevicePortabilitySubsetFeaturesKHR
4926include::{chapters}/features.adoc[tag=features]
4927
4928include::{generated}/validity/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.adoc[]
4929--
4930endif::VK_KHR_portability_subset[]
4931
4932ifdef::VKSC_VERSION_1_0[]
4933[open,refpage='VkPhysicalDeviceVulkanSC10Features',desc='Structure describing the features that may not be supported by an implementation of Vulkan SC',type='structs']
4934--
4935The sname:VkPhysicalDeviceVulkanSC10Features structure is defined as:
4936
4937include::{generated}/api/structs/VkPhysicalDeviceVulkanSC10Features.adoc[]
4938
4939This structure describes the following features:
4940
4941  * pname:sType is a elink:VkStructureType value identifying this structure.
4942  * pname:pNext is `NULL` or a pointer to a structure extending this
4943    structure.
4944  * [[features-shaderAtomicInstructions]] pname:shaderAtomicInstructions
4945    indicates whether this implementation supports shaders which use the
4946    SPIR-V code:OpAtomic* instructions.
4947
4948:refpage: VkPhysicalDeviceVulkanSC10Features
4949include::{chapters}/features.adoc[tag=features]
4950
4951ifdef::hidden[]
4952// tag::scaddition[]
4953  * slink:VkPhysicalDeviceVulkanSC10Features <<SCID-1>>
4954// end::scaddition[]
4955// tag::scdeviation[]
4956  * slink:VkPhysicalDeviceVulkanSC10Features::pname:shaderAtomicInstructions
4957    are made optional <<SCID-1>>.
4958// end::scdeviation[]
4959endif::hidden[]
4960
4961include::{generated}/validity/structs/VkPhysicalDeviceVulkanSC10Features.adoc[]
4962--
4963endif::VKSC_VERSION_1_0[]
4964
4965ifdef::VK_KHR_performance_query[]
4966include::{chapters}/VK_KHR_performance_query/features.adoc[]
4967endif::VK_KHR_performance_query[]
4968
4969ifdef::VK_EXT_4444_formats[]
4970[open,refpage='VkPhysicalDevice4444FormatsFeaturesEXT',desc='Structure describing additional 4444 formats supported by an implementation',type='structs']
4971--
4972The sname:VkPhysicalDevice4444FormatsFeaturesEXT structure is defined as:
4973
4974include::{generated}/api/structs/VkPhysicalDevice4444FormatsFeaturesEXT.adoc[]
4975
4976This structure describes the following features:
4977
4978  * pname:sType is a elink:VkStructureType value identifying this structure.
4979  * pname:pNext is `NULL` or a pointer to a structure extending this
4980    structure.
4981  * [[features-formatA4R4G4B4]] pname:formatA4R4G4B4 indicates that the
4982    implementation must: support using a elink:VkFormat of
4983    ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT with at least the following
4984    elink:VkFormatFeatureFlagBits:
4985  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4986  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4987  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4988  * [[features-formatA4B4G4R4]] pname:formatA4B4G4R4 indicates that the
4989    implementation must: support using a elink:VkFormat of
4990    ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT with at least the following
4991    elink:VkFormatFeatureFlagBits:
4992  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
4993  ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT
4994  ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
4995
4996:refpage: VkPhysicalDevice4444FormatsFeaturesEXT
4997include::{chapters}/features.adoc[tag=features]
4998
4999include::{generated}/validity/structs/VkPhysicalDevice4444FormatsFeaturesEXT.adoc[]
5000
5001ifdef::VK_VERSION_1_3[]
5002[NOTE]
5003.Note
5004====
5005Although the formats defined by the `apiext:VK_EXT_4444_formats` extension
5006were promoted to Vulkan 1.3 as optional formats, the
5007slink:VkPhysicalDevice4444FormatsFeaturesEXT structure was not promoted to
5008Vulkan 1.3.
5009====
5010endif::VK_VERSION_1_3[]
5011--
5012endif::VK_EXT_4444_formats[]
5013
5014ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
5015[open,refpage='VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT',desc='Structure describing whether the mutable descriptor type is supported',type='structs',alias='VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE']
5016--
5017The sname:VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT structure is
5018defined as:
5019
5020include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.adoc[]
5021
5022ifdef::VK_VALVE_mutable_descriptor_type[]
5023or the equivalent
5024
5025include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.adoc[]
5026endif::VK_VALVE_mutable_descriptor_type[]
5027
5028This structure describes the following feature:
5029
5030  * pname:sType is a elink:VkStructureType value identifying this structure.
5031  * pname:pNext is `NULL` or a pointer to a structure extending this
5032    structure.
5033  * [[features-mutableDescriptorType]] pname:mutableDescriptorType indicates
5034    that the implementation must: support using the elink:VkDescriptorType
5035    of ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT with at least the following
5036    descriptor types, where any combination of the types must: be supported:
5037  ** ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
5038  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
5039  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
5040  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
5041  ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
5042  ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
5043
5044  * Additionally, pname:mutableDescriptorType indicates that:
5045ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
5046  ** Non-uniform descriptor indexing must: be supported if all descriptor
5047     types in a slink:VkMutableDescriptorTypeListEXT for
5048     ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT have the corresponding non-uniform
5049     indexing features enabled in
5050     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
5051  ** ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT with
5052     pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT relaxes
5053     the list of required descriptor types to the descriptor types which
5054     have the corresponding update-after-bind feature enabled in
5055     slink:VkPhysicalDeviceDescriptorIndexingFeatures.
5056endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
5057  ** Dynamically uniform descriptor indexing must: be supported if all
5058     descriptor types in a slink:VkMutableDescriptorTypeListEXT for
5059     ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT have the corresponding dynamic
5060     indexing features enabled.
5061  ** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT must: be
5062     supported.
5063  ** ename:VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT must: be supported.
5064
5065:refpage: VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT
5066include::{chapters}/features.adoc[tag=features]
5067
5068include::{generated}/validity/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.adoc[]
5069--
5070endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
5071
5072ifdef::VK_EXT_depth_clip_control[]
5073[open,refpage='VkPhysicalDeviceDepthClipControlFeaturesEXT',desc='Structure describing additional depth clip control supported by an implementation',type='structs']
5074--
5075The sname:VkPhysicalDeviceDepthClipControlFeaturesEXT structure is defined
5076as:
5077
5078include::{generated}/api/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.adoc[]
5079
5080This structure describes the following feature:
5081
5082  * pname:sType is a elink:VkStructureType value identifying this structure.
5083  * pname:pNext is `NULL` or a pointer to a structure extending this
5084    structure.
5085  * [[features-depthClipControl]] pname:depthClipControl indicates that the
5086    implementation supports setting
5087    slink:VkPipelineViewportDepthClipControlCreateInfoEXT::pname:negativeOneToOne
5088    to ename:VK_TRUE.
5089
5090:refpage: VkPhysicalDeviceDepthClipControlFeaturesEXT
5091include::{chapters}/features.adoc[tag=features]
5092
5093include::{generated}/validity/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.adoc[]
5094--
5095endif::VK_EXT_depth_clip_control[]
5096
5097ifdef::VK_KHR_workgroup_memory_explicit_layout[]
5098[open,refpage='VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',desc='Structure describing the workgroup storage explicit layout features that can be supported by an implementation',type='structs']
5099--
5100The sname:VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR structure
5101is defined as:
5102
5103include::{generated}/api/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.adoc[]
5104
5105This structure describes the following features:
5106
5107  * pname:sType is a elink:VkStructureType value identifying this structure.
5108  * pname:pNext is `NULL` or a pointer to a structure extending this
5109    structure.
5110  * [[features-workgroupMemoryExplicitLayout]]
5111    pname:workgroupMemoryExplicitLayout indicates whether the implementation
5112    supports the SPIR-V code:WorkgroupMemoryExplicitLayoutKHR capability.
5113  * [[features-workgroupMemoryExplicitLayoutScalarBlockLayout]]
5114    pname:workgroupMemoryExplicitLayoutScalarBlockLayout indicates whether
5115    the implementation supports scalar alignment for laying out Workgroup
5116    Blocks.
5117  * [[features-workgroupMemoryExplicitLayout8BitAccess]]
5118    pname:workgroupMemoryExplicitLayout8BitAccess indicates whether objects
5119    in the code:Workgroup storage class with the code:Block decoration can:
5120    have 8-bit integer members.
5121    If this feature is not enabled, 8-bit integer members must: not be used
5122    in such objects.
5123    This also indicates whether shader modules can: declare the
5124    code:WorkgroupMemoryExplicitLayout8BitAccessKHR capability.
5125  * [[features-workgroupMemoryExplicitLayout16BitAccess]]
5126    pname:workgroupMemoryExplicitLayout16BitAccess indicates whether objects
5127    in the code:Workgroup storage class with the code:Block decoration can:
5128    have 16-bit integer and 16-bit floating-point members.
5129    If this feature is not enabled, 16-bit integer or 16-bit floating-point
5130    members must: not be used in such objects.
5131    This also indicates whether shader modules can: declare the
5132    code:WorkgroupMemoryExplicitLayout16BitAccessKHR capability.
5133
5134:refpage: VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
5135include::{chapters}/features.adoc[tag=features]
5136
5137include::{generated}/validity/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.adoc[]
5138--
5139endif::VK_KHR_workgroup_memory_explicit_layout[]
5140
5141ifdef::VK_VERSION_1_3,VK_KHR_synchronization2[]
5142[open,refpage='VkPhysicalDeviceSynchronization2Features',desc='Structure describing whether the implementation supports v2 synchronization commands',type='structs',alias='VkPhysicalDeviceSynchronization2FeaturesKHR']
5143--
5144The sname:VkPhysicalDeviceSynchronization2Features structure is defined as:
5145
5146include::{generated}/api/structs/VkPhysicalDeviceSynchronization2Features.adoc[]
5147
5148ifdef::VK_KHR_synchronization2[]
5149or the equivalent
5150
5151include::{generated}/api/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.adoc[]
5152endif::VK_KHR_synchronization2[]
5153
5154This structure describes the following feature:
5155
5156  * pname:sType is a elink:VkStructureType value identifying this structure.
5157  * pname:pNext is `NULL` or a pointer to a structure extending this
5158    structure.
5159
5160// Must have preceding whitespace
5161ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5162ifndef::VK_VERSION_1_3[:anchor-prefix:]
5163// tag::VK_KHR_synchronization2-features[]
5164  * [[{anchor-prefix}features-synchronization2]] pname:synchronization2
5165    indicates whether the implementation supports the new set of
5166    synchronization commands introduced in `apiext:VK_KHR_synchronization2`.
5167// end::VK_KHR_synchronization2-features[]
5168
5169:refpage: VkPhysicalDeviceSynchronization2Features
5170include::{chapters}/features.adoc[tag=features]
5171
5172include::{generated}/validity/structs/VkPhysicalDeviceSynchronization2Features.adoc[]
5173--
5174endif::VK_VERSION_1_3,VK_KHR_synchronization2[]
5175
5176ifdef::VK_EXT_vertex_input_dynamic_state[]
5177[open,refpage='VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT',desc='Structure describing whether the dynamic vertex input state can be used',type='structs']
5178--
5179The sname:VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT structure is
5180defined as:
5181
5182include::{generated}/api/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.adoc[]
5183
5184This structure describes the following feature:
5185
5186  * pname:sType is a elink:VkStructureType value identifying this structure.
5187  * pname:pNext is `NULL` or a pointer to a structure extending this
5188    structure.
5189  * [[features-vertexInputDynamicState]] pname:vertexInputDynamicState
5190    indicates that the implementation supports the following dynamic states:
5191  ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
5192
5193:refpage: VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT
5194include::{chapters}/features.adoc[tag=features]
5195
5196include::{generated}/validity/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.adoc[]
5197--
5198endif::VK_EXT_vertex_input_dynamic_state[]
5199
5200ifdef::VK_EXT_primitives_generated_query[]
5201[open,refpage='VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT',desc='Structure describing support for primitives generated query',type='structs']
5202--
5203The sname:VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT structure is
5204defined as:
5205
5206include::{generated}/api/structs/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.adoc[]
5207
5208This structure describes the following features:
5209
5210  * pname:sType is a elink:VkStructureType value identifying this structure.
5211  * pname:pNext is `NULL` or a pointer to a structure extending this
5212    structure.
5213  * [[features-primitivesGeneratedQuery]] pname:primitivesGeneratedQuery
5214    indicates whether the implementation supports the
5215    ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query type.
5216  * [[features-primitivesGeneratedQueryWithRasterizerDiscard]]
5217    pname:primitivesGeneratedQueryWithRasterizerDiscard indicates whether
5218    the implementation supports this query when
5219    <<primsrast-discard,rasterization discard>> is enabled.
5220  * [[features-primitivesGeneratedQueryWithNonZeroStreams]]
5221    pname:primitivesGeneratedQueryWithNonZeroStreams indicates whether the
5222    implementation supports this query with a non-zero index in
5223    flink:vkCmdBeginQueryIndexedEXT.
5224
5225:refpage: VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT
5226include::{chapters}/features.adoc[tag=features]
5227
5228include::{generated}/validity/structs/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.adoc[]
5229--
5230endif::VK_EXT_primitives_generated_query[]
5231
5232ifdef::VK_KHR_fragment_shading_rate[]
5233[open,refpage='VkPhysicalDeviceFragmentShadingRateFeaturesKHR',desc='Structure indicating support for variable rate fragment shading',type='structs']
5234--
5235The sname:VkPhysicalDeviceFragmentShadingRateFeaturesKHR structure is
5236defined as:
5237
5238include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.adoc[]
5239
5240This structure describes the following features:
5241
5242  * pname:sType is a elink:VkStructureType value identifying this structure.
5243  * pname:pNext is `NULL` or a pointer to a structure extending this
5244    structure.
5245  * [[features-pipelineFragmentShadingRate]]
5246    pname:pipelineFragmentShadingRate indicates that the implementation
5247    supports the <<primsrast-fragment-shading-rate-pipeline, pipeline
5248    fragment shading rate>>.
5249  * [[features-primitiveFragmentShadingRate]]
5250    pname:primitiveFragmentShadingRate indicates that the implementation
5251    supports the <<primsrast-fragment-shading-rate-primitive, primitive
5252    fragment shading rate>>.
5253  * [[features-attachmentFragmentShadingRate]]
5254    pname:attachmentFragmentShadingRate indicates that the implementation
5255    supports the <<primsrast-fragment-shading-rate-attachment, attachment
5256    fragment shading rate>>.
5257
5258:refpage: VkPhysicalDeviceFragmentShadingRateFeaturesKHR
5259include::{chapters}/features.adoc[tag=features]
5260
5261include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.adoc[]
5262--
5263endif::VK_KHR_fragment_shading_rate[]
5264
5265ifdef::VK_EXT_legacy_dithering[]
5266[open,refpage='VkPhysicalDeviceLegacyDitheringFeaturesEXT',desc='Structure describing support for legacy dithering',type='structs']
5267--
5268The sname:VkPhysicalDeviceLegacyDitheringFeaturesEXT structure is defined
5269as:
5270
5271include::{generated}/api/structs/VkPhysicalDeviceLegacyDitheringFeaturesEXT.adoc[]
5272
5273This structure describes the following feature:
5274
5275  * pname:sType is a elink:VkStructureType value identifying this structure.
5276  * pname:pNext is `NULL` or a pointer to a structure extending this
5277    structure.
5278  * [[features-legacyDithering]] pname:legacyDithering indicates whether the
5279    implementation supports <<interfaces-legacy-dithering, Legacy
5280    Dithering>>.
5281
5282:refpage: VkPhysicalDeviceLegacyDitheringFeaturesEXT
5283include::{chapters}/features.adoc[tag=features]
5284
5285include::{generated}/validity/structs/VkPhysicalDeviceLegacyDitheringFeaturesEXT.adoc[]
5286--
5287endif::VK_EXT_legacy_dithering[]
5288
5289ifdef::VK_NV_fragment_shading_rate_enums[]
5290[open,refpage='VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV',desc='Structure indicating support for fragment shading rate enums',type='structs']
5291--
5292The sname:VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV structure is
5293defined as:
5294
5295include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.adoc[]
5296
5297This structure describes the following features:
5298
5299  * pname:sType is a elink:VkStructureType value identifying this structure.
5300  * pname:pNext is `NULL` or a pointer to a structure extending this
5301    structure.
5302  * [[features-fragmentShadingRateEnums]] pname:fragmentShadingRateEnums
5303    indicates that the implementation supports specifying fragment shading
5304    rates using the ename:VkFragmentShadingRateNV enumerated type.
5305  * [[features-supersampleFragmentShadingRates]]
5306    pname:supersampleFragmentShadingRates indicates that the implementation
5307    supports fragment shading rate enum values indicating more than one
5308    invocation per fragment.
5309  * [[features-noInvocationFragmentShadingRates]]
5310    pname:noInvocationFragmentShadingRates indicates that the implementation
5311    supports a fragment shading rate enum value indicating that no fragment
5312    shaders should be invoked when that shading rate is used.
5313
5314:refpage: VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV
5315include::{chapters}/features.adoc[tag=features]
5316
5317include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.adoc[]
5318--
5319endif::VK_NV_fragment_shading_rate_enums[]
5320
5321
5322ifdef::VK_NV_inherited_viewport_scissor[]
5323[open,refpage='VkPhysicalDeviceInheritedViewportScissorFeaturesNV',desc='Structure describing the viewport scissor inheritance behavior for an implementation',type='structs']
5324--
5325The sname:VkPhysicalDeviceInheritedViewportScissorFeaturesNV structure is
5326defined as:
5327
5328include::{generated}/api/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.adoc[]
5329
5330This structure describes the following feature:
5331
5332  * pname:sType is a elink:VkStructureType value identifying this structure.
5333  * pname:pNext is `NULL` or a pointer to a structure extending this
5334    structure.
5335  * [[features-inheritedViewportScissor2D]] pname:inheritedViewportScissor2D
5336    indicates whether secondary command buffers can inherit most of the
5337    dynamic state affected by
5338ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
5339    ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
5340    ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
5341endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[]
5342ifdef::VK_EXT_discard_rectangles[]
5343    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
5344    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT,
5345    ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT,
5346endif::VK_EXT_discard_rectangles[]
5347    ename:VK_DYNAMIC_STATE_VIEWPORT or ename:VK_DYNAMIC_STATE_SCISSOR, from
5348    a primary command buffer.
5349
5350:refpage: VkPhysicalDeviceInheritedViewportScissorFeaturesNV
5351include::{chapters}/features.adoc[tag=features]
5352
5353include::{generated}/validity/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.adoc[]
5354--
5355endif::VK_NV_inherited_viewport_scissor[]
5356
5357ifdef::VK_EXT_pipeline_protected_access[]
5358[open,refpage='VkPhysicalDevicePipelineProtectedAccessFeaturesEXT',desc='Structure describing support for specifying protected access on individual pipelines',type='structs']
5359--
5360The sname:VkPhysicalDevicePipelineProtectedAccessFeaturesEXT structure is
5361defined as:
5362
5363include::{generated}/api/structs/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.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-pipelineProtectedAccess]] pname:pipelineProtectedAccess
5371    indicates whether the implementation supports specifying protected
5372    access on individual pipelines.
5373
5374:refpage: VkPhysicalDevicePipelineProtectedAccessFeaturesEXT
5375include::{chapters}/features.adoc[tag=features]
5376
5377include::{generated}/validity/structs/VkPhysicalDevicePipelineProtectedAccessFeaturesEXT.adoc[]
5378--
5379endif::VK_EXT_pipeline_protected_access[]
5380
5381ifdef::VK_EXT_ycbcr_2plane_444_formats[]
5382[open,refpage='VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',desc='Structure describing whether the implementation supports additional 2-plane 444 {YCbCr} formats',type='structs']
5383--
5384The sname:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure is
5385defined as:
5386
5387include::{generated}/api/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.adoc[]
5388
5389This structure describes the following feature:
5390
5391  * pname:sType is a elink:VkStructureType value identifying this structure.
5392  * pname:pNext is `NULL` or a pointer to a structure extending this
5393    structure.
5394  * [[features-ycbcr2plane444Formats]] pname:ycbcr2plane444Formats indicates
5395    that the implementation supports the following 2-plane 444 {YCbCr}
5396    formats:
5397  ** ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
5398  ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
5399  ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
5400  ** ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM
5401
5402:refpage: VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
5403include::{chapters}/features.adoc[tag=features]
5404
5405include::{generated}/validity/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.adoc[]
5406
5407ifdef::VK_VERSION_1_3[]
5408[NOTE]
5409.Note
5410====
5411Although the formats defined by the `apiext:VK_EXT_ycbcr_2plane_444_formats`
5412were promoted to Vulkan 1.3 as optional formats, the
5413slink:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure was not
5414promoted to Vulkan 1.3.
5415====
5416endif::VK_VERSION_1_3[]
5417--
5418endif::VK_EXT_ycbcr_2plane_444_formats[]
5419
5420ifdef::VK_EXT_color_write_enable[]
5421[open,refpage='VkPhysicalDeviceColorWriteEnableFeaturesEXT',desc='Structure describing whether writes to color attachments can be enabled and disabled dynamically',type='structs']
5422--
5423The sname:VkPhysicalDeviceColorWriteEnableFeaturesEXT structure is defined
5424as:
5425
5426include::{generated}/api/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.adoc[]
5427
5428This structure describes the following feature:
5429
5430  * pname:sType is a elink:VkStructureType value identifying this structure.
5431  * pname:pNext is `NULL` or a pointer to a structure extending this
5432    structure.
5433  * [[features-colorWriteEnable]] pname:colorWriteEnable indicates that the
5434    implementation supports the dynamic state
5435    ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT.
5436
5437:refpage: VkPhysicalDeviceColorWriteEnableFeaturesEXT
5438include::{chapters}/features.adoc[tag=features]
5439
5440include::{generated}/validity/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.adoc[]
5441--
5442endif::VK_EXT_color_write_enable[]
5443
5444ifdef::VK_EXT_pipeline_properties[]
5445[open,refpage='VkPhysicalDevicePipelinePropertiesFeaturesEXT',desc='Structure describing what pipeline properties are supported',type='structs']
5446--
5447The sname:VkPhysicalDevicePipelinePropertiesFeaturesEXT structure is defined
5448as:
5449
5450include::{generated}/api/structs/VkPhysicalDevicePipelinePropertiesFeaturesEXT.adoc[]
5451
5452This structure describes the following feature:
5453
5454  * pname:sType is a elink:VkStructureType value identifying this structure.
5455  * pname:pNext is `NULL` or a pointer to a structure extending this
5456    structure.
5457  * [[features-pipelinePropertiesIdentifier]]
5458    pname:pipelinePropertiesIdentifier indicates that the implementation
5459    supports querying a unique pipeline identifier.
5460
5461:refpage: VkPhysicalDevicePipelinePropertiesFeaturesEXT
5462include::{chapters}/features.adoc[tag=features]
5463
5464include::{generated}/validity/structs/VkPhysicalDevicePipelinePropertiesFeaturesEXT.adoc[]
5465--
5466endif::VK_EXT_pipeline_properties[]
5467
5468ifdef::VK_EXT_provoking_vertex[]
5469[open,refpage='VkPhysicalDeviceProvokingVertexFeaturesEXT',desc='Structure describing the provoking vertex features that can be supported by an implementation',type='structs']
5470--
5471The sname:VkPhysicalDeviceProvokingVertexFeaturesEXT structure is defined
5472as:
5473
5474include::{generated}/api/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.adoc[]
5475
5476This structure describes the following features:
5477
5478  * pname:sType is a elink:VkStructureType value identifying this structure.
5479  * pname:pNext is `NULL` or a pointer to a structure extending this
5480    structure.
5481  * [[features-provokingVertexLast]] pname:provokingVertexLast indicates
5482    whether the implementation supports the
5483    ename:VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
5484    <<VkProvokingVertexModeEXT,provoking vertex mode>> for flat shading.
5485  * [[features-transformFeedbackPreservesProvokingVertex]]
5486    pname:transformFeedbackPreservesProvokingVertex indicates that the order
5487    of vertices within each primitive written by transform feedback will
5488    preserve the provoking vertex.
5489    This does not apply to triangle fan primitives when
5490    <<limits-transformFeedbackPreservesTriangleFanProvokingVertex,
5491    pname:transformFeedbackPreservesTriangleFanProvokingVertex>> is
5492    ename:VK_FALSE.
5493    pname:transformFeedbackPreservesProvokingVertex must: be ename:VK_FALSE
5494    when the `apiext:VK_EXT_transform_feedback` extension is not supported.
5495
5496:refpage: VkPhysicalDeviceProvokingVertexFeaturesEXT
5497include::{chapters}/features.adoc[tag=features]
5498
5499ifdef::VK_EXT_transform_feedback[]
5500When sname:VkPhysicalDeviceProvokingVertexFeaturesEXT is in the pname:pNext
5501chain of slink:VkDeviceCreateInfo but the <<features-transformFeedback,
5502pname:transformFeedback>> feature is not enabled, the value of
5503pname:transformFeedbackPreservesProvokingVertex is ignored.
5504endif::VK_EXT_transform_feedback[]
5505
5506include::{generated}/validity/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.adoc[]
5507--
5508endif::VK_EXT_provoking_vertex[]
5509
5510ifdef::VK_EXT_descriptor_buffer[]
5511[open,refpage='VkPhysicalDeviceDescriptorBufferFeaturesEXT',desc='Structure describing the descriptor buffer features that can be supported by an implementation',type='structs']
5512--
5513The sname:VkPhysicalDeviceDescriptorBufferFeaturesEXT structure is defined
5514as:
5515
5516include::{generated}/api/structs/VkPhysicalDeviceDescriptorBufferFeaturesEXT.adoc[]
5517
5518This structure describes the following feature:
5519
5520  * pname:sType is a elink:VkStructureType value identifying this structure.
5521  * pname:pNext is `NULL` or a pointer to a structure extending this
5522    structure.
5523  * [[features-descriptorBuffer]] pname:descriptorBuffer indicates that the
5524    implementation supports putting shader-accessible descriptors directly
5525    in memory.
5526  * [[features-descriptorBufferCaptureReplay]]
5527    pname:descriptorBufferCaptureReplay indicates that the implementation
5528    supports capture and replay when using descriptor buffers.
5529    If this is ename:VK_TRUE, all resources created with
5530    ename:VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5531    ename:VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5532    ename:VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT,
5533    ename:VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, or
5534    ename:VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT
5535    must: be created before resources of the same types without those flags.
5536  * [[features-descriptorBufferImageLayoutIgnored]]
5537    pname:descriptorBufferImageLayoutIgnored indicates that the
5538    implementation will ignore pname:imageLayout in
5539    sname:VkDescriptorImageInfo when calling flink:vkGetDescriptorEXT.
5540  * [[features-descriptorBufferPushDescriptors]]
5541    pname:descriptorBufferPushDescriptors indicates that the implementation
5542    supports using push descriptors with descriptor buffers.
5543
5544:refpage: VkPhysicalDeviceDescriptorBufferFeaturesEXT
5545include::{chapters}/features.adoc[tag=features]
5546
5547include::{generated}/validity/structs/VkPhysicalDeviceDescriptorBufferFeaturesEXT.adoc[]
5548--
5549endif::VK_EXT_descriptor_buffer[]
5550
5551ifdef::VK_EXT_pageable_device_local_memory[]
5552[open,refpage='VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',desc='Structure describing whether the implementation supports pageable device-local memory',type='structs']
5553--
5554The sname:VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT structure is
5555defined as:
5556
5557include::{generated}/api/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.adoc[]
5558
5559This structure describes the following feature:
5560
5561  * pname:sType is a elink:VkStructureType value identifying this structure.
5562  * pname:pNext is `NULL` or a pointer to a structure extending this
5563    structure.
5564  * [[features-pageableDeviceLocalMemory]] pname:pageableDeviceLocalMemory
5565    indicates that the implementation supports pageable device-local memory
5566    and may: transparently move device-local memory allocations to
5567    host-local memory to better share device-local memory with other
5568    applications.
5569
5570:refpage: VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT
5571include::{chapters}/features.adoc[tag=features]
5572
5573include::{generated}/validity/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.adoc[]
5574--
5575endif::VK_EXT_pageable_device_local_memory[]
5576
5577ifdef::VK_EXT_multi_draw[]
5578[open,refpage='VkPhysicalDeviceMultiDrawFeaturesEXT',desc='Structure describing whether the implementation supports multi draw functionality',type='structs']
5579--
5580The sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure is defined as:
5581
5582include::{generated}/api/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.adoc[]
5583
5584This structure describes the following features:
5585
5586  * pname:sType is a elink:VkStructureType value identifying this structure.
5587  * pname:pNext is `NULL` or a pointer to a structure extending this
5588    structure.
5589  * [[features-multiDraw]] pname:multiDraw indicates that the implementation
5590    supports flink:vkCmdDrawMultiEXT and flink:vkCmdDrawMultiIndexedEXT.
5591
5592:refpage: VkPhysicalDeviceMultiDrawFeaturesEXT
5593include::{chapters}/features.adoc[tag=features]
5594
5595include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.adoc[]
5596--
5597endif::VK_EXT_multi_draw[]
5598
5599ifdef::VK_NV_ray_tracing_motion_blur[]
5600[open,refpage='VkPhysicalDeviceRayTracingMotionBlurFeaturesNV',desc='Structure describing the ray tracing motion blur features that can be supported by an implementation',type='structs']
5601--
5602The sname:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV structure is
5603defined as:
5604
5605include::{generated}/api/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.adoc[]
5606
5607This structure describes the following features:
5608
5609  * pname:sType is a elink:VkStructureType value identifying this structure.
5610  * pname:pNext is `NULL` or a pointer to a structure extending this
5611    structure.
5612  * [[features-rayTracingMotionBlur]] pname:rayTracingMotionBlur indicates
5613    whether the implementation supports the motion blur feature.
5614  * [[features-rayTracingMotionBlurPipelineTraceRaysIndirect]]
5615    pname:rayTracingMotionBlurPipelineTraceRaysIndirect indicates whether
5616    the implementation supports indirect ray tracing commands with the
5617    motion blur feature enabled.
5618
5619:refpage: VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
5620include::{chapters}/features.adoc[tag=features]
5621
5622include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.adoc[]
5623--
5624endif::VK_NV_ray_tracing_motion_blur[]
5625
5626ifdef::VK_EXT_opacity_micromap[]
5627[open,refpage='VkPhysicalDeviceOpacityMicromapFeaturesEXT',desc='Structure describing the ray tracing opacity micromap features that can be supported by an implementation',type='structs']
5628--
5629The sname:VkPhysicalDeviceOpacityMicromapFeaturesEXT structure is defined
5630as:
5631
5632include::{generated}/api/structs/VkPhysicalDeviceOpacityMicromapFeaturesEXT.adoc[]
5633
5634This structure describes the following feature:
5635
5636  * pname:sType is a elink:VkStructureType value identifying this structure.
5637  * pname:pNext is `NULL` or a pointer to a structure extending this
5638    structure.
5639  * [[features-micromap]] pname:micromap indicates whether the
5640    implementation supports the micromap array feature.
5641  * [[features-micromapCaptureReplay]] pname:micromapCaptureReplay indicates
5642    whether the implementation supports capture and replay of addresses for
5643    micromap arrays.
5644  * [[features-micromapHostCommands]] pname:micromapHostCommands indicates
5645    whether the implementation supports host side micromap array commands.
5646
5647:refpage: VkPhysicalDeviceOpacityMicromapFeaturesEXT
5648include::{chapters}/features.adoc[tag=features]
5649
5650include::{generated}/validity/structs/VkPhysicalDeviceOpacityMicromapFeaturesEXT.adoc[]
5651--
5652endif::VK_EXT_opacity_micromap[]
5653
5654ifdef::VK_NV_displacement_micromap[]
5655[open,refpage='VkPhysicalDeviceDisplacementMicromapFeaturesNV',desc='Structure describing the ray tracing displacement micromap features that can be supported by an implementation',type='structs']
5656--
5657The sname:VkPhysicalDeviceDisplacementMicromapFeaturesNV structure is
5658defined as:
5659
5660include::{generated}/api/structs/VkPhysicalDeviceDisplacementMicromapFeaturesNV.adoc[]
5661
5662This structure describes the following feature:
5663
5664  * pname:sType is a elink:VkStructureType value identifying this structure.
5665  * pname:pNext is `NULL` or a pointer to a structure extending this
5666    structure.
5667  * [[features-displacementMicromap]] pname:displacementMicromap indicates
5668    whether the implementation supports the displacement micromap feature.
5669
5670:refpage: VkPhysicalDeviceDisplacementMicromapFeaturesNV
5671include::{chapters}/features.adoc[tag=features]
5672
5673include::{generated}/validity/structs/VkPhysicalDeviceDisplacementMicromapFeaturesNV.adoc[]
5674--
5675endif::VK_NV_displacement_micromap[]
5676
5677ifdef::VK_HUAWEI_subpass_shading[]
5678[open,refpage='VkPhysicalDeviceSubpassShadingFeaturesHUAWEI',desc='Structure describing whether subpass shading is enabled',type='structs']
5679--
5680The sname:VkPhysicalDeviceSubpassShadingFeaturesHUAWEI structure is defined
5681as:
5682
5683include::{generated}/api/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.adoc[]
5684
5685This structure describes the following feature:
5686
5687  * pname:sType is a elink:VkStructureType value identifying this structure.
5688  * pname:pNext is `NULL` or a pointer to a structure extending this
5689    structure.
5690  * [[features-subpassShading]] pname:subpassShading specifies whether
5691    subpass shading is supported.
5692
5693:refpage: VkPhysicalDeviceSubpassShadingFeaturesHUAWEI
5694include::{chapters}/features.adoc[tag=features]
5695
5696include::{generated}/validity/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.adoc[]
5697--
5698endif::VK_HUAWEI_subpass_shading[]
5699
5700ifdef::VK_NV_external_memory_rdma[]
5701[open,refpage='VkPhysicalDeviceExternalMemoryRDMAFeaturesNV',desc='Structure describing the external memory RDMA features supported by the implementation',type='structs']
5702--
5703The sname:VkPhysicalDeviceExternalMemoryRDMAFeaturesNV structure is defined
5704as:
5705
5706include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.adoc[]
5707
5708This structure describes the following feature:
5709
5710  * pname:sType is a elink:VkStructureType value identifying this structure.
5711  * pname:pNext is `NULL` or a pointer to a structure extending this
5712    structure.
5713  * [[features-externalMemoryRDMA]] pname:externalMemoryRDMA indicates
5714    whether the implementation has support for the
5715    ename:VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV memory property and the
5716    ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV external memory
5717    handle type.
5718
5719:refpage: VkPhysicalDeviceExternalMemoryRDMAFeaturesNV
5720include::{chapters}/features.adoc[tag=features]
5721
5722include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.adoc[]
5723--
5724endif::VK_NV_external_memory_rdma[]
5725
5726ifdef::VK_KHR_present_id[]
5727[open,refpage='VkPhysicalDevicePresentIdFeaturesKHR',desc='Structure indicating support for present id',type='structs']
5728--
5729The sname:VkPhysicalDevicePresentIdFeaturesKHR structure is defined as:
5730
5731include::{generated}/api/structs/VkPhysicalDevicePresentIdFeaturesKHR.adoc[]
5732
5733This structure describes the following feature:
5734
5735  * pname:sType is a elink:VkStructureType value identifying this structure.
5736  * pname:pNext is `NULL` or a pointer to a structure extending this
5737    structure.
5738  * [[features-presentId]] pname:presentId indicates that the implementation
5739    supports specifying present ID values in the sname:VkPresentIdKHR
5740    extension to the sname:VkPresentInfoKHR struct.
5741
5742:refpage: VkPhysicalDevicePresentIdFeaturesKHR
5743include::{chapters}/features.adoc[tag=features]
5744
5745include::{generated}/validity/structs/VkPhysicalDevicePresentIdFeaturesKHR.adoc[]
5746--
5747endif::VK_KHR_present_id[]
5748
5749ifdef::VK_KHR_present_wait[]
5750[open,refpage='VkPhysicalDevicePresentWaitFeaturesKHR',desc='Structure indicating support for present wait',type='structs']
5751--
5752The sname:VkPhysicalDevicePresentWaitFeaturesKHR structure is defined as:
5753
5754include::{generated}/api/structs/VkPhysicalDevicePresentWaitFeaturesKHR.adoc[]
5755
5756This structure describes the following feature:
5757
5758  * pname:sType is a elink:VkStructureType value identifying this structure.
5759  * pname:pNext is `NULL` or a pointer to a structure extending this
5760    structure.
5761  * [[features-presentWait]] pname:presentWait indicates that the
5762    implementation supports fname:vkWaitForPresentKHR.
5763
5764:refpage: VkPhysicalDevicePresentWaitFeaturesKHR
5765include::{chapters}/features.adoc[tag=features]
5766
5767include::{generated}/validity/structs/VkPhysicalDevicePresentWaitFeaturesKHR.adoc[]
5768--
5769endif::VK_KHR_present_wait[]
5770
5771ifdef::VK_EXT_host_image_copy[]
5772[open,refpage='VkPhysicalDeviceHostImageCopyFeaturesEXT',desc='Structure indicating support for copies to or from images from host memory',type='structs']
5773--
5774The sname:VkPhysicalDeviceHostImageCopyFeaturesEXT structure is defined as:
5775
5776include::{generated}/api/structs/VkPhysicalDeviceHostImageCopyFeaturesEXT.adoc[]
5777
5778This structure describes the following feature:
5779
5780  * pname:sType is a elink:VkStructureType value identifying this structure.
5781  * pname:pNext is `NULL` or a pointer to a structure extending this
5782    structure.
5783  * [[features-hostImageCopy]] pname:hostImageCopy indicates that the
5784    implementation supports copying from host memory to images using the
5785    flink:vkCopyMemoryToImageEXT command, copying from images to host memory
5786    using the flink:vkCopyImageToMemoryEXT command, and copying between
5787    images using the flink:vkCopyImageToImageEXT command.
5788
5789:refpage: VkPhysicalDeviceHostImageCopyFeaturesEXT
5790include::{chapters}/features.adoc[tag=features]
5791
5792include::{generated}/validity/structs/VkPhysicalDeviceHostImageCopyFeaturesEXT.adoc[]
5793--
5794endif::VK_EXT_host_image_copy[]
5795
5796ifdef::VK_NV_present_barrier[]
5797[open,refpage='VkPhysicalDevicePresentBarrierFeaturesNV',desc='Structure indicating support for VK_NV_present_barrier extension',type='structs']
5798--
5799The sname:VkPhysicalDevicePresentBarrierFeaturesNV structure is defined as:
5800
5801include::{generated}/api/structs/VkPhysicalDevicePresentBarrierFeaturesNV.adoc[]
5802
5803This structure describes the following feature:
5804
5805  * pname:sType is a elink:VkStructureType value identifying this structure.
5806  * pname:pNext is `NULL` or a pointer to a structure extending this
5807    structure.
5808  * [[features-presentBarrier]] pname:presentBarrier indicates that the
5809    implementation supports the present barrier feature.
5810
5811:refpage: VkPhysicalDevicePresentBarrierFeaturesNV
5812include::{chapters}/features.adoc[tag=features]
5813
5814include::{generated}/validity/structs/VkPhysicalDevicePresentBarrierFeaturesNV.adoc[]
5815--
5816endif::VK_NV_present_barrier[]
5817
5818ifdef::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
5819[open,refpage='VkPhysicalDeviceShaderIntegerDotProductFeatures',desc='Structure describing integer dot product features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR']
5820--
5821The sname:VkPhysicalDeviceShaderIntegerDotProductFeatures structure is
5822defined as:
5823
5824include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeatures.adoc[]
5825
5826ifdef::VK_KHR_shader_integer_dot_product[]
5827or the equivalent
5828
5829include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.adoc[]
5830endif::VK_KHR_shader_integer_dot_product[]
5831
5832This structure describes the following feature:
5833
5834  * pname:sType is a elink:VkStructureType value identifying this structure.
5835  * pname:pNext is `NULL` or a pointer to a structure extending this
5836    structure.
5837
5838// Must have preceding whitespace
5839ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5840ifndef::VK_VERSION_1_3[:anchor-prefix:]
5841// tag::VK_KHR_shader_integer_dot_product-features[]
5842  * [[{anchor-prefix}features-shaderIntegerDotProduct]]
5843    pname:shaderIntegerDotProduct specifies whether shader modules can:
5844    declare the code:DotProductInputAllKHR, code:DotProductInput4x8BitKHR,
5845    code:DotProductInput4x8BitPackedKHR and code:DotProductKHR capabilities.
5846// end::VK_KHR_shader_integer_dot_product-features[]
5847
5848:refpage: VkPhysicalDeviceShaderIntegerDotProductFeatures
5849include::{chapters}/features.adoc[tag=features]
5850
5851include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerDotProductFeatures.adoc[]
5852--
5853endif::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
5854
5855ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[]
5856[open,refpage='VkPhysicalDeviceMaintenance4Features',desc='Structure describing whether the implementation supports maintenance4 functionality',type='structs',alias='VkPhysicalDeviceMaintenance4FeaturesKHR']
5857--
5858The sname:VkPhysicalDeviceMaintenance4Features structure is defined as:
5859
5860include::{generated}/api/structs/VkPhysicalDeviceMaintenance4Features.adoc[]
5861
5862ifdef::VK_KHR_maintenance4[]
5863or the equivalent
5864
5865include::{generated}/api/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.adoc[]
5866endif::VK_KHR_maintenance4[]
5867
5868This structure describes the following feature:
5869
5870  * pname:sType is a elink:VkStructureType value identifying this structure.
5871  * pname:pNext is `NULL` or a pointer to a structure extending this
5872    structure.
5873
5874// Must have preceding whitespace
5875ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5876ifndef::VK_VERSION_1_3[:anchor-prefix:]
5877// tag::VK_KHR_maintenance4-features[]
5878  * [[{anchor-prefix}features-maintenance4]] pname:maintenance4 indicates
5879    that the implementation supports the following:
5880  ** The application may: destroy a slink:VkPipelineLayout object
5881     immediately after using it to create another object.
5882  ** code:LocalSizeId can: be used as an alternative to code:LocalSize to
5883     specify the local workgroup size with specialization constants.
5884  ** Images created with identical creation parameters will always have the
5885     same alignment requirements.
5886  ** The size memory requirement of a buffer or image is never greater than
5887     that of another buffer or image created with a greater or equal size.
5888  ** Push constants do not have to be initialized before they are
5889     dynamically accessed.
5890  ** The interface matching rules allow a larger output vector to match with
5891     a smaller input vector, with additional values being discarded.
5892// end::VK_KHR_maintenance4-features[]
5893
5894:refpage: VkPhysicalDeviceMaintenance4Features
5895include::{chapters}/features.adoc[tag=features]
5896
5897include::{generated}/validity/structs/VkPhysicalDeviceMaintenance4Features.adoc[]
5898--
5899endif::VK_VERSION_1_3,VK_KHR_maintenance4[]
5900
5901ifdef::VK_KHR_maintenance5[]
5902[open,refpage='VkPhysicalDeviceMaintenance5FeaturesKHR',desc='Structure describing whether the implementation supports maintenance5 functionality',type='structs',alias='VkPhysicalDeviceMaintenance5FeaturesKHR']
5903--
5904The sname:VkPhysicalDeviceMaintenance5FeaturesKHR structure is defined as:
5905
5906include::{generated}/api/structs/VkPhysicalDeviceMaintenance5FeaturesKHR.adoc[]
5907
5908This structure describes the following feature:
5909
5910  * pname:sType is a elink:VkStructureType value identifying this structure.
5911  * pname:pNext is `NULL` or a pointer to a structure extending this
5912    structure.
5913  * [[features-maintenance5]] pname:maintenance5 indicates that the
5914    implementation supports the following:
5915  ** The ability to expose support for the optional format
5916     ename:VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR.
5917  ** The ability to expose support for the optional format
5918     ename:VK_FORMAT_A8_UNORM_KHR.
5919  ** A property to indicate that multisample coverage operations are
5920     performed after sample counting in EarlyFragmentTests mode.
5921  ** Creating a sname:VkBufferView with a subset of the associated
5922     sname:VkBuffer usage using slink:VkBufferUsageFlags2CreateInfoKHR.
5923  ** A new function flink:vkCmdBindIndexBuffer2KHR, allowing a range of
5924     memory to be bound as an index buffer.
5925  ** flink:vkGetDeviceProcAddr will return `NULL` for function pointers of
5926     core functions for versions higher than the version requested by the
5927     application.
5928  ** flink:vkCmdBindVertexBuffers2 supports using ename:VK_WHOLE_SIZE in the
5929     pname:pSizes parameter.
5930  ** If code:PointSize is not written, a default value of `1.0` is used for
5931     the size of points.
5932  ** slink:VkShaderModuleCreateInfo can: be added as a chained structure to
5933     pipeline creation via slink:VkPipelineShaderStageCreateInfo, rather
5934     than having to create a shader module.
5935  ** A function flink:vkGetRenderingAreaGranularityKHR to query the optimal
5936     render area for a dynamic rendering instance.
5937  ** A property to indicate that depth/stencil texturing operations with
5938     ename:VK_COMPONENT_SWIZZLE_ONE have defined behavior.
5939  ** flink:vkGetDeviceImageSubresourceLayoutKHR allows an application to
5940     perform a flink:vkGetImageSubresourceLayout query without having to
5941     create an image.
5942  ** ename:VK_REMAINING_ARRAY_LAYERS as the pname:layerCount member of
5943     slink:VkImageSubresourceLayers.
5944  ** A property to indicate whether code:PointSize controls the final
5945     rasterization of polygons if <<primsrast-polygonmode, polygon mode>> is
5946     ename:VK_POLYGON_MODE_POINT.
5947  ** Two properties to indicate the non-strict line rasterization algorithm
5948     used.
5949  ** Two new flags words elink:VkPipelineCreateFlagBits2KHR and
5950     elink:VkBufferUsageFlagBits2KHR.
5951  ** Physical-device-level functions can: now be called with any value in
5952     the valid range for a type beyond the defined enumerants, such that
5953     applications can avoid checking individual features, extensions, or
5954     versions before querying supported properties of a particular
5955     enumerant.
5956  ** Copies between images of any type are allowed, with 1D images treated
5957     as 2D images with a height of `1`.
5958
5959:refpage: VkPhysicalDeviceMaintenance5FeaturesKHR
5960include::{chapters}/features.adoc[tag=features]
5961
5962include::{generated}/validity/structs/VkPhysicalDeviceMaintenance5FeaturesKHR.adoc[]
5963--
5964endif::VK_KHR_maintenance5[]
5965
5966ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
5967[open,refpage='VkPhysicalDeviceDynamicRenderingFeatures',desc='Structure indicating support for dynamic render pass instances',type='structs',alias='VkPhysicalDeviceDynamicRenderingFeaturesKHR']
5968--
5969The sname:VkPhysicalDeviceDynamicRenderingFeatures structure is defined as:
5970
5971include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeatures.adoc[]
5972
5973ifdef::VK_KHR_dynamic_rendering[]
5974or the equivalent
5975
5976include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.adoc[]
5977endif::VK_KHR_dynamic_rendering[]
5978
5979This structure describes the following feature:
5980
5981  * pname:sType is a elink:VkStructureType value identifying this structure.
5982  * pname:pNext is `NULL` or a pointer to a structure extending this
5983    structure.
5984
5985// Must have preceding whitespace
5986ifdef::VK_VERSION_1_3[:anchor-prefix: extension-]
5987ifndef::VK_VERSION_1_3[:anchor-prefix:]
5988// tag::VK_KHR_dynamic_rendering-features[]
5989  * [[{anchor-prefix}features-dynamicRendering]] pname:dynamicRendering
5990    specifies that the implementation supports dynamic render pass instances
5991    using the flink:vkCmdBeginRendering command.
5992// end::VK_KHR_dynamic_rendering-features[]
5993
5994:refpage: VkPhysicalDeviceDynamicRenderingFeatures
5995include::{chapters}/features.adoc[tag=features]
5996
5997include::{generated}/validity/structs/VkPhysicalDeviceDynamicRenderingFeatures.adoc[]
5998--
5999endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
6000
6001ifdef::VK_EXT_rgba10x6_formats[]
6002[open,refpage='VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT',desc='Structure describing whether rendering to VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 formats can be supported by an implementation',type='structs']
6003--
6004The sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT structure is defined
6005as:
6006
6007include::{generated}/api/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.adoc[]
6008
6009This structure describes the following feature:
6010
6011  * pname:sType is a elink:VkStructureType value identifying this structure.
6012  * pname:pNext is `NULL` or a pointer to a structure extending this
6013    structure.
6014  * [[features-formatRgba10x6WithoutYCbCrSampler]]
6015    pname:formatRgba10x6WithoutYCbCrSampler indicates that
6016    ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 can: be used with a
6017    sname:VkImageView with pname:subresourceRange.aspectMask equal to
6018    ename:VK_IMAGE_ASPECT_COLOR_BIT without a <<samplers-YCbCr-conversion,
6019    sampler {YCbCr} conversion>> enabled.
6020
6021:refpage: VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT
6022include::{chapters}/features.adoc[tag=features]
6023
6024include::{generated}/validity/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.adoc[]
6025--
6026endif::VK_EXT_rgba10x6_formats[]
6027
6028ifdef::VK_EXT_pipeline_robustness[]
6029[open,refpage='VkPhysicalDevicePipelineRobustnessFeaturesEXT',desc='Structure describing whether an implementation supports robustness requests on a per-pipeline stage granularity',type='structs']
6030--
6031The sname:VkPhysicalDevicePipelineRobustnessFeaturesEXT structure is defined
6032as:
6033
6034include::{generated}/api/structs/VkPhysicalDevicePipelineRobustnessFeaturesEXT.adoc[]
6035
6036This structure describes the following feature:
6037
6038  * pname:sType is a elink:VkStructureType value identifying this structure.
6039  * pname:pNext is `NULL` or a pointer to a structure extending this
6040    structure.
6041  * [[features-pipelineRobustness]] pname:pipelineRobustness indicates that
6042    robustness can: be requested on a per-pipeline-stage granularity.
6043
6044[NOTE]
6045.Note
6046====
6047Enabling <<features-pipelineRobustness, pname:pipelineRobustness>> may, on
6048some platforms, incur a minor performance cost when
6049<<features-robustBufferAccess, pname:robustBufferAccess>> is disabled, even
6050for pipelines which do not make use of any robustness features.
6051If robustness is not needed, <<features-pipelineRobustness,
6052pname:pipelineRobustness>> should not be enabled by an application.
6053====
6054
6055:refpage: VkPhysicalDevicePipelineRobustnessFeaturesEXT
6056include::{chapters}/features.adoc[tag=features]
6057
6058include::{generated}/validity/structs/VkPhysicalDevicePipelineRobustnessFeaturesEXT.adoc[]
6059--
6060endif::VK_EXT_pipeline_robustness[]
6061
6062ifdef::VK_EXT_image_view_min_lod[]
6063[open,refpage='VkPhysicalDeviceImageViewMinLodFeaturesEXT',desc='Structure describing whether clamping the min LOD of a image view is supported by the implementation',type='structs']
6064--
6065The sname:VkPhysicalDeviceImageViewMinLodFeaturesEXT structure is defined
6066as:
6067
6068include::{generated}/api/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.adoc[]
6069
6070This structure describes the following feature:
6071
6072  * pname:sType is a elink:VkStructureType value identifying this structure.
6073  * pname:pNext is `NULL` or a pointer to a structure extending this
6074    structure.
6075  * [[features-minLod]] pname:minLod indicates whether the implementation
6076    supports clamping the minimum LOD value during
6077    <<textures-image-level-selection,Image Level(s) Selection>>,
6078    <<textures-gather,Texel Gathering>> and
6079    <<textures-integer-coordinate-operations,Integer Texel Coordinate
6080    Operations>> with a given slink:VkImageView by
6081    slink:VkImageViewMinLodCreateInfoEXT::pname:minLod.
6082
6083:refpage: VkPhysicalDeviceImageViewMinLodFeaturesEXT
6084include::{chapters}/features.adoc[tag=features]
6085
6086include::{generated}/validity/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.adoc[]
6087--
6088endif::VK_EXT_image_view_min_lod[]
6089
6090ifdef::VK_EXT_rasterization_order_attachment_access[]
6091[open,refpage='VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT',desc='Structure describing whether rasterization order attachment access can be supported by an implementation',type='structs']
6092--
6093The sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
6094structure is defined as:
6095
6096include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.adoc[]
6097
6098ifdef::VK_ARM_rasterization_order_attachment_access[]
6099or the equivalent
6100
6101include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.adoc[]
6102endif::VK_ARM_rasterization_order_attachment_access[]
6103
6104This structure describes the following features:
6105
6106  * pname:sType is a elink:VkStructureType value identifying this structure.
6107  * pname:pNext is `NULL` or a pointer to a structure extending this
6108    structure.
6109  * [[features-rasterizationOrderColorAttachmentAccess]]
6110    pname:rasterizationOrderColorAttachmentAccess indicates that
6111    rasterization order access to color and input attachments is supported
6112    by the implementation.
6113  * [[features-rasterizationOrderDepthAttachmentAccess]]
6114    pname:rasterizationOrderDepthAttachmentAccess indicates that
6115    rasterization order access to the depth aspect of depth/stencil and
6116    input attachments is supported by the implementation.
6117  * [[features-rasterizationOrderStencilAttachmentAccess]]
6118    pname:rasterizationOrderStencilAttachmentAccess indicates that
6119    rasterization order access to the stencil aspect of depth/stencil and
6120    input attachments is supported by the implementation.
6121
6122:refpage: VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT
6123include::{chapters}/features.adoc[tag=features]
6124
6125include::{generated}/validity/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.adoc[]
6126--
6127endif::VK_EXT_rasterization_order_attachment_access[]
6128
6129ifdef::VK_EXT_subpass_merge_feedback[]
6130[open,refpage='VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT',desc='Structure describing whether subpass merging feedback can be supported by the implementation',type='structs']
6131--
6132The sname:VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT structure is
6133defined as:
6134
6135include::{generated}/api/structs/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.adoc[]
6136
6137This structure describes the following feature:
6138
6139  * pname:sType is a elink:VkStructureType value identifying this structure.
6140  * pname:pNext is `NULL` or a pointer to a structure extending this
6141    structure.
6142  * [[features-subpassMergeFeedback]] pname:subpassMergeFeedback indicates
6143    whether the implementation supports feedback of subpass merging.
6144
6145:refpage: VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT
6146include::{chapters}/features.adoc[tag=features]
6147
6148include::{generated}/validity/structs/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.adoc[]
6149--
6150endif::VK_EXT_subpass_merge_feedback[]
6151
6152ifdef::VK_NV_linear_color_attachment[]
6153[open,refpage='VkPhysicalDeviceLinearColorAttachmentFeaturesNV',desc='Structure describing whether <<glossary-linear-color-attachment, Linear Color Attachment>> rendering is supported by the implementation',type='structs']
6154--
6155The sname:VkPhysicalDeviceLinearColorAttachmentFeaturesNV structure is
6156defined as:
6157
6158include::{generated}/api/structs/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.adoc[]
6159
6160This structure describes the following feature:
6161
6162  * pname:sType is a elink:VkStructureType value identifying this structure.
6163  * pname:pNext is `NULL` or a pointer to a structure extending this
6164    structure.
6165  * [[features-linearColorAttachment]] pname:linearColorAttachment indicates
6166    whether the implementation supports renderable
6167    <<glossary-linear-color-attachment, Linear Color Attachment>>
6168
6169:refpage: VkPhysicalDeviceLinearColorAttachmentFeaturesNV
6170include::{chapters}/features.adoc[tag=features]
6171
6172include::{generated}/validity/structs/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.adoc[]
6173--
6174endif::VK_NV_linear_color_attachment[]
6175ifdef::VK_EXT_attachment_feedback_loop_layout[]
6176
6177[open,refpage='VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT',desc='Structure indicating support for a render feedback loop image layout',type='structs']
6178--
6179The sname:VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT structure
6180is defined as:
6181
6182include::{generated}/api/structs/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.adoc[]
6183
6184This structure describes the following feature:
6185
6186  * pname:sType is a elink:VkStructureType value identifying this structure.
6187  * pname:pNext is `NULL` or a pointer to a structure extending this
6188    structure.
6189  * [[features-attachmentFeedbackLoopLayout]]
6190    pname:attachmentFeedbackLoopLayout indicates whether the implementation
6191    supports using
6192    ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT image layout
6193    for images created with
6194    ename:VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT.
6195
6196include::{generated}/validity/structs/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.adoc[]
6197--
6198
6199endif::VK_EXT_attachment_feedback_loop_layout[]
6200
6201ifdef::VK_EXT_nested_command_buffer[]
6202[open,refpage='VkPhysicalDeviceNestedCommandBufferFeaturesEXT',desc='Structure describing whether nested command buffers are supported by the implementation',type='structs']
6203--
6204The sname:VkPhysicalDeviceNestedCommandBufferFeaturesEXT structure is
6205defined as:
6206
6207include::{generated}/api/structs/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.adoc[]
6208
6209This structure describes the following features:
6210
6211  * [[features-nestedCommandBuffer]] pname:nestedCommandBuffer indicates the
6212    implementation supports nested command buffers, which allows <<glossary,
6213    Secondary Command Buffers>> to execute other <<glossary, Secondary
6214    Command Buffers>>.
6215  * [[features-nestedCommandBufferRendering]]
6216    pname:nestedCommandBufferRendering indicates that it is valid to call
6217    flink:vkCmdExecuteCommands inside a <<glossary, Secondary Command
6218    Buffer>> recorded with
6219    ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT.
6220  * [[features-nestedCommandBufferSimultaneousUse]]
6221    pname:nestedCommandBufferSimultaneousUse indicates that the
6222    implementation supports nested command buffers with command buffers that
6223    are recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
6224
6225:refpage: VkPhysicalDeviceNestedCommandBufferFeaturesEXT
6226include::{chapters}/features.adoc[tag=features]
6227
6228include::{generated}/validity/structs/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.adoc[]
6229--
6230endif::VK_EXT_nested_command_buffer[]
6231
6232ifdef::VK_EXT_graphics_pipeline_library[]
6233[open,refpage='VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT',desc='Structure describing support for graphics pipeline libraries',type='structs']
6234--
6235The sname:VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT structure is
6236defined as:
6237
6238include::{generated}/api/structs/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.adoc[]
6239
6240This structure describes the following feature:
6241
6242  * pname:sType is a elink:VkStructureType value identifying this structure.
6243  * pname:pNext is `NULL` or a pointer to a structure extending this
6244    structure.
6245  * [[features-graphicsPipelineLibrary]] pname:graphicsPipelineLibrary
6246    indicates that the implementation supports <<pipelines-library, graphics
6247    pipeline libraries>>.
6248
6249:refpage: VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT
6250include::{chapters}/features.adoc[tag=features]
6251
6252include::{generated}/validity/structs/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.adoc[]
6253--
6254endif::VK_EXT_graphics_pipeline_library[]
6255
6256ifdef::VK_EXT_multisampled_render_to_single_sampled[]
6257[open,refpage='VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT',desc='Structure describing whether multisampled rendering to single-sampled attachments is supported',type='structs']
6258--
6259The sname:VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
6260structure is defined as:
6261
6262include::{generated}/api/structs/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.adoc[]
6263
6264This structure describes the following features:
6265
6266  * pname:sType is a elink:VkStructureType value identifying this structure.
6267  * pname:pNext is `NULL` or a pointer to a structure extending this
6268    structure.
6269  * [[features-multisampledRenderToSingleSampled]]
6270    pname:multisampledRenderToSingleSampled indicates that the
6271    implementation supports multisampled rendering to single-sampled render
6272    pass attachments.
6273
6274:refpage: VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT
6275include::{chapters}/features.adoc[tag=features]
6276
6277include::{generated}/validity/structs/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.adoc[]
6278--
6279endif::VK_EXT_multisampled_render_to_single_sampled[]
6280
6281ifdef::VK_EXT_image_2d_view_of_3d[]
6282[open,refpage='VkPhysicalDeviceImage2DViewOf3DFeaturesEXT',desc='Structure describing whether single-slice 2D views of 3D images can be used in image descriptors',type='structs']
6283--
6284The sname:VkPhysicalDeviceImage2DViewOf3DFeaturesEXT structure is defined
6285as:
6286
6287include::{generated}/api/structs/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.adoc[]
6288
6289This structure describes the following features:
6290
6291  * pname:sType is a elink:VkStructureType value identifying this structure.
6292  * pname:pNext is `NULL` or a pointer to a structure extending this
6293    structure.
6294  * [[features-image2DViewOf3D]] pname:image2DViewOf3D indicates that the
6295    implementation supports using a 2D view of a 3D image in a descriptor of
6296    type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE if the image is created
6297    using ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT.
6298  * [[features-sampler2DViewOf3D]] pname:sampler2DViewOf3D indicates that
6299    the implementation supports using a 2D view of a 3D image in a
6300    descriptor of type ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
6301    ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER if the image is created
6302    using ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT.
6303
6304:refpage: VkPhysicalDeviceImage2DViewOf3DFeaturesEXT
6305include::{chapters}/features.adoc[tag=features]
6306
6307
6308include::{generated}/validity/structs/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.adoc[]
6309--
6310endif::VK_EXT_image_2d_view_of_3d[]
6311
6312ifdef::VK_EXT_image_sliced_view_of_3d[]
6313
6314[open,refpage='VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT',desc='Structure describing whether slice-based views of 3D images can be used in storage image descriptors',type='structs']
6315--
6316The sname:VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT structure is
6317defined as:
6318
6319include::{generated}/api/structs/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.adoc[]
6320
6321The members of the sname:VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
6322structure describe the following features:
6323
6324  * [[features-imageSlicedViewOf3D]] pname:imageSlicedViewOf3D indicates
6325    that the implementation supports using a sliced view of a 3D image in a
6326    descriptor of type ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE by using a
6327    slink:VkImageViewSlicedCreateInfoEXT structure when creating the view.
6328
6329:refpage: VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT
6330include::{chapters}/features.adoc[tag=features]
6331
6332
6333include::{generated}/validity/structs/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.adoc[]
6334--
6335
6336endif::VK_EXT_image_sliced_view_of_3d[]
6337
6338ifdef::VK_EXT_image_compression_control[]
6339[open,refpage='VkPhysicalDeviceImageCompressionControlFeaturesEXT',desc='Structure describing whether image compression controls can be supported by an implementation',type='structs']
6340--
6341The sname:VkPhysicalDeviceImageCompressionControlFeaturesEXT structure is
6342defined as:
6343
6344include::{generated}/api/structs/VkPhysicalDeviceImageCompressionControlFeaturesEXT.adoc[]
6345
6346This structure describes the following feature:
6347
6348  * pname:sType is a elink:VkStructureType value identifying this structure.
6349  * pname:pNext is `NULL` or a pointer to a structure extending this
6350    structure.
6351  * [[features-imageCompressionControl]] pname:imageCompressionControl
6352    indicates that the implementation supports providing controls for image
6353    compression at image creation time.
6354
6355:refpage: VkPhysicalDeviceImageCompressionControlFeaturesEXT
6356include::{chapters}/features.adoc[tag=features]
6357
6358include::{generated}/validity/structs/VkPhysicalDeviceImageCompressionControlFeaturesEXT.adoc[]
6359--
6360
6361ifdef::VK_EXT_image_compression_control_swapchain[]
6362[open,refpage='VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT',desc='Structure describing whether per-swapchain image compression controls can be supported by an implementation',type='structs']
6363--
6364The sname:VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
6365structure is defined as:
6366
6367include::{generated}/api/structs/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.adoc[]
6368
6369This structure describes the following feature:
6370
6371  * pname:sType is a elink:VkStructureType value identifying this structure.
6372  * pname:pNext is `NULL` or a pointer to a structure extending this
6373    structure.
6374  * [[features-imageCompressionControlSwapchain]]
6375    pname:imageCompressionControlSwapchain indicates that the implementation
6376    supports controlling image controls per swapchain and querying image
6377    compression properties per surface.
6378
6379:refpage: VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT
6380include::{chapters}/features.adoc[tag=features]
6381
6382include::{generated}/validity/structs/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.adoc[]
6383--
6384endif::VK_EXT_image_compression_control_swapchain[]
6385
6386endif::VK_EXT_image_compression_control[]
6387
6388ifdef::VK_KHR_ray_tracing_position_fetch[]
6389[open,refpage='VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR',desc='Structure describing support for fetching vertex positions of hit triangles',type='structs']
6390--
6391The sname:VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR structure is
6392defined as:
6393
6394include::{generated}/api/structs/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.adoc[]
6395
6396This structure describes the following feature:
6397
6398  * pname:sType is a elink:VkStructureType value identifying this structure.
6399  * pname:pNext is `NULL` or a pointer to a structure extending this
6400    structure.
6401  * [[features-rayTracingPositionFetch]] pname:rayTracingPositionFetch
6402    indicates that the implementation supports fetching the object space
6403    vertex positions of a hit triangle.
6404
6405:refpage: VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
6406include::{chapters}/features.adoc[tag=features]
6407
6408include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.adoc[]
6409--
6410endif::VK_KHR_ray_tracing_position_fetch[]
6411
6412
6413ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
6414[open,refpage='VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',desc='Structure describing whether early and late fragment tests can be supported by an implementation',type='structs']
6415--
6416The sname:VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
6417structure is defined as:
6418
6419include::{generated}/api/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.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-shaderEarlyAndLateFragmentTests]]
6427    pname:shaderEarlyAndLateFragmentTests indicates whether the
6428    implementation supports the code:EarlyAndLateFragmentTestsAMD
6429    {ExecutionMode}.
6430
6431:refpage: VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
6432include::{chapters}/features.adoc[tag=features]
6433
6434include::{generated}/validity/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.adoc[]
6435--
6436endif::VK_AMD_shader_early_and_late_fragment_tests[]
6437
6438ifdef::VK_EXT_non_seamless_cube_map[]
6439[open,refpage='VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT',desc='Structure describing features to disable seamless cube maps',type='structs']
6440--
6441The sname:VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT structure is defined
6442as:
6443
6444include::{generated}/api/structs/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.adoc[]
6445
6446This structure describes the following feature:
6447
6448  * pname:sType is a elink:VkStructureType value identifying this structure.
6449  * pname:pNext is `NULL` or a pointer to a structure extending this
6450    structure.
6451  * [[features-nonSeamlessCubeMap]] pname:nonSeamlessCubeMap indicates that
6452    the implementation supports
6453    ename:VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT.
6454
6455:refpage: VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT
6456include::{chapters}/features.adoc[tag=features]
6457
6458include::{generated}/validity/structs/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.adoc[]
6459--
6460endif::VK_EXT_non_seamless_cube_map[]
6461
6462ifdef::VK_EXT_shader_module_identifier[]
6463[open,refpage='VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT',desc='Structure describing whether querying and providing an identifier of a shader module is supported by the implementation',type='structs']
6464--
6465The sname:VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT structure is
6466defined as:
6467
6468include::{generated}/api/structs/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.adoc[]
6469
6470This structure describes the following feature:
6471
6472  * pname:sType is a elink:VkStructureType value identifying this structure.
6473  * pname:pNext is `NULL` or a pointer to a structure extending this
6474    structure.
6475  * [[features-shaderModuleIdentifier]] pname:shaderModuleIdentifier
6476    indicates whether the implementation supports querying an identifier of
6477    a slink:VkShaderModule or slink:VkShaderModuleCreateInfo structure, and
6478    creating pipelines from identifiers only.
6479
6480:refpage: VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT
6481include::{chapters}/features.adoc[tag=features]
6482
6483include::{generated}/validity/structs/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.adoc[]
6484--
6485endif::VK_EXT_shader_module_identifier[]
6486
6487ifdef::VK_QCOM_tile_properties[]
6488[open,refpage='VkPhysicalDeviceTilePropertiesFeaturesQCOM',desc='Structure describing tile properties features that can be supported by an implementation',type='structs']
6489--
6490The sname:VkPhysicalDeviceTilePropertiesFeaturesQCOM structure is defined
6491as:
6492
6493include::{generated}/api/structs/VkPhysicalDeviceTilePropertiesFeaturesQCOM.adoc[]
6494
6495This structure describes the following features:
6496
6497  * pname:sType is a elink:VkStructureType value identifying this structure.
6498  * pname:pNext is `NULL` or a pointer to a structure extending this
6499    structure.
6500  * [[features-tileProperties]] pname:tileProperties indicates that the
6501    implementation supports queries for returning tile properties.
6502
6503:refpage: VkPhysicalDeviceTilePropertiesFeaturesQCOM
6504include::{chapters}/features.adoc[tag=features]
6505
6506include::{generated}/validity/structs/VkPhysicalDeviceTilePropertiesFeaturesQCOM.adoc[]
6507--
6508endif::VK_QCOM_tile_properties[]
6509
6510ifdef::VK_QCOM_image_processing[]
6511[open,refpage='VkPhysicalDeviceImageProcessingFeaturesQCOM',desc='Structure describing image processing features that can be supported by an implementation',type='structs']
6512--
6513The sname:VkPhysicalDeviceImageProcessingFeaturesQCOM structure is defined
6514as:
6515
6516include::{generated}/api/structs/VkPhysicalDeviceImageProcessingFeaturesQCOM.adoc[]
6517
6518This structure describes the following features:
6519
6520  * pname:sType is a elink:VkStructureType value identifying this structure.
6521  * pname:pNext is `NULL` or a pointer to a structure extending this
6522    structure.
6523  * [[features-textureSampleWeighted]] pname:textureSampleWeighted indicates
6524    that the implementation supports shader modules that declare the
6525    pname:TextureSampleWeightedQCOM capability.
6526  * [[features-textureBoxFilter]] pname:textureBoxFilter indicates that the
6527    implementation supports shader modules that declare the
6528    pname:TextureBoxFilterQCOM capability.
6529  * [[features-textureBlockMatch]] pname:textureBlockMatch indicates that
6530    the implementation supports shader modules that declare the
6531    pname:TextureBlockMatchQCOM capability.
6532
6533:refpage: VkPhysicalDeviceImageProcessingFeaturesQCOM
6534include::{chapters}/features.adoc[tag=features]
6535
6536include::{generated}/validity/structs/VkPhysicalDeviceImageProcessingFeaturesQCOM.adoc[]
6537--
6538endif::VK_QCOM_image_processing[]
6539
6540ifdef::VK_QCOM_image_processing2[]
6541[open,refpage='VkPhysicalDeviceImageProcessing2FeaturesQCOM',desc='Structure describing image processing features that can be supported by an implementation',type='structs']
6542--
6543The sname:VkPhysicalDeviceImageProcessing2FeaturesQCOM structure is defined
6544as:
6545
6546include::{generated}/api/structs/VkPhysicalDeviceImageProcessing2FeaturesQCOM.adoc[]
6547
6548This structure describes the following features:
6549
6550  * pname:sType is a elink:VkStructureType value identifying this structure.
6551  * pname:pNext is `NULL` or a pointer to a structure extending this
6552    structure.
6553  * [[features-textureBlockMatch2]] pname:textureBlockMatch2 indicates that
6554    the implementation supports shader modules that declare the
6555    code:TextureBlockMatch2QCOM capability.
6556
6557:refpage: VkPhysicalDeviceImageProcessing2FeaturesQCOM
6558include::{chapters}/features.adoc[tag=features]
6559
6560include::{generated}/validity/structs/VkPhysicalDeviceImageProcessing2FeaturesQCOM.adoc[]
6561--
6562endif::VK_QCOM_image_processing2[]
6563
6564
6565
6566ifdef::VK_EXT_depth_clamp_zero_one[]
6567[open,refpage='VkPhysicalDeviceDepthClampZeroOneFeaturesEXT',desc='Structure describing feature to control zero to one depth clamping',type='structs']
6568--
6569The sname:VkPhysicalDeviceDepthClampZeroOneFeaturesEXT structure is defined
6570as:
6571
6572include::{generated}/api/structs/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.adoc[]
6573
6574This structure describes the following feature:
6575
6576  * pname:sType is a elink:VkStructureType value identifying this structure.
6577  * pname:pNext is `NULL` or a pointer to a structure extending this
6578    structure.
6579
6580  * [[features-depthClampZeroOne]] pname:depthClampZeroOne indicates that
6581    the implementation supports clamping the depth to a range of `0` to `1`.
6582
6583:refpage: VkPhysicalDeviceDepthClampZeroOneFeaturesEXT
6584include::{chapters}/features.adoc[tag=features]
6585
6586include::{generated}/validity/structs/VkPhysicalDeviceDepthClampZeroOneFeaturesEXT.adoc[]
6587--
6588endif::VK_EXT_depth_clamp_zero_one[]
6589ifdef::VK_EXT_shader_tile_image[]
6590[open,refpage='VkPhysicalDeviceShaderTileImageFeaturesEXT',desc='Structure describing tile image features supported by the implementation',type='structs']
6591--
6592The sname:VkPhysicalDeviceShaderTileImageFeaturesEXT structure is defined
6593as:
6594
6595include::{generated}/api/structs/VkPhysicalDeviceShaderTileImageFeaturesEXT.adoc[]
6596
6597The members of the sname:VkPhysicalDeviceShaderTileImageFeaturesEXT
6598structure describe the following features:
6599
6600  * pname:sType is a elink:VkStructureType value identifying this structure.
6601  * pname:pNext is `NULL` or a pointer to a structure extending this
6602    structure.
6603  * [[features-shaderTileImageColorReadAccess]]
6604    pname:shaderTileImageColorReadAccess indicates that the implementation
6605    supports the code:TileImageColorReadAccessEXT SPIR-V capability.
6606  * [[features-shaderTileImageDepthReadAccess]]
6607    pname:shaderTileImageDepthReadAccess indicates that the implementation
6608    supports the code:TileImageDepthReadAccessEXT SPIR-V capability.
6609  * [[features-shaderTileImageStencilReadAccess]]
6610    pname:shaderTileImageStencilReadAccess indicates that the implementation
6611    supports the code:TileImageStencilReadAccessEXT SPIR-V capability.
6612
6613:refpage: VkPhysicalDeviceShaderTileImageFeaturesEXT
6614include::{chapters}/features.adoc[tag=features]
6615
6616include::{generated}/validity/structs/VkPhysicalDeviceShaderTileImageFeaturesEXT.adoc[]
6617--
6618endif::VK_EXT_shader_tile_image[]
6619
6620
6621ifdef::VK_EXT_depth_bias_control[]
6622
6623[open,refpage='VkPhysicalDeviceDepthBiasControlFeaturesEXT',desc='Structure indicating support for depth bias scaling and representation control',type='structs']
6624--
6625The sname:VkPhysicalDeviceDepthBiasControlFeaturesEXT structure is defined
6626as:
6627
6628include::{generated}/api/structs/VkPhysicalDeviceDepthBiasControlFeaturesEXT.adoc[]
6629
6630This structure describes the following feature:
6631
6632  * pname:sType is a elink:VkStructureType value identifying this structure.
6633  * pname:pNext is `NULL` or a pointer to a structure extending this
6634    structure.
6635  * [[features-depthBiasControl]] pname:depthBiasControl indicates whether
6636    the implementation supports the fname:vkCmdSetDepthBias2EXT command and
6637    the sname:VkDepthBiasRepresentationInfoEXT structure.
6638  * [[features-leastRepresentableValueForceUnormRepresentation]]
6639    pname:leastRepresentableValueForceUnormRepresentation indicates whether
6640    the implementation supports using the
6641    ename:VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT
6642    depth bias representation.
6643  * [[features-floatRepresentation]] pname:floatRepresentation indicates
6644    whether the implementation supports using the
6645    ename:VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT depth bias representation.
6646  * [[features-depthBiasExact]] pname:depthBiasExact indicates whether the
6647    implementation supports forcing depth bias to not be scaled to ensure a
6648    minimum resolvable difference using
6649    sname:VkDepthBiasRepresentationInfoEXT::pname:depthBiasExact.
6650
6651include::{generated}/validity/structs/VkPhysicalDeviceDepthBiasControlFeaturesEXT.adoc[]
6652--
6653
6654endif::VK_EXT_depth_bias_control[]
6655
6656ifdef::VK_EXT_device_address_binding_report[]
6657[open,refpage='VkPhysicalDeviceAddressBindingReportFeaturesEXT',desc='Structure describing the virtual allocation reporting feature supported by an implementation',type='structs']
6658--
6659The sname:VkPhysicalDeviceAddressBindingReportFeaturesEXT structure is
6660defined as:
6661
6662include::{generated}/api/structs/VkPhysicalDeviceAddressBindingReportFeaturesEXT.adoc[]
6663
6664This structure describes the following feature:
6665
6666  * pname:sType is a elink:VkStructureType value identifying this structure.
6667  * pname:pNext is `NULL` or a pointer to a structure extending this
6668    structure.
6669  * [[features-reportAddressBinding]] pname:reportAddressBinding indicates
6670    whether this implementation supports reporting the binding of GPU
6671    virtual address ranges to Vulkan objects.
6672
6673:refpage: VkPhysicalDeviceAddressBindingReportFeaturesEXT
6674include::{chapters}/features.adoc[tag=features]
6675
6676include::{generated}/validity/structs/VkPhysicalDeviceAddressBindingReportFeaturesEXT.adoc[]
6677--
6678endif::VK_EXT_device_address_binding_report[]
6679
6680ifdef::VK_NV_optical_flow[]
6681[open,refpage='VkPhysicalDeviceOpticalFlowFeaturesNV',desc='Structure describing the optical flow features supported by the implementation',type='structs']
6682--
6683The sname:VkPhysicalDeviceOpticalFlowFeaturesNV structure is defined as:
6684
6685include::{generated}/api/structs/VkPhysicalDeviceOpticalFlowFeaturesNV.adoc[]
6686
6687This structure describes the following feature:
6688
6689  * pname:sType is a elink:VkStructureType value identifying this structure.
6690  * pname:pNext is `NULL` or a pointer to a structure extending this
6691    structure.
6692  * [[features-opticalFlow]] pname:opticalFlow indicates whether the
6693    implementation supports optical flow.
6694
6695:refpage: VkPhysicalDeviceOpticalFlowFeaturesNV
6696include::{chapters}/features.adoc[tag=features]
6697
6698include::{generated}/validity/structs/VkPhysicalDeviceOpticalFlowFeaturesNV.adoc[]
6699--
6700endif::VK_NV_optical_flow[]
6701
6702ifdef::VK_EXT_device_fault[]
6703[open,refpage='VkPhysicalDeviceFaultFeaturesEXT',desc='Structure indicating support for device fault reporting',type='structs']
6704--
6705The sname:VkPhysicalDeviceFaultFeaturesEXT structure is defined as:
6706
6707include::{generated}/api/structs/VkPhysicalDeviceFaultFeaturesEXT.adoc[]
6708
6709The members of the sname:VkPhysicalDeviceFaultFeaturesEXT structure describe
6710the following features:
6711
6712  * [[features-deviceFault]] pname:deviceFault indicates that the
6713    implementation supports the reporting of device fault information.
6714  * [[features-deviceFaultVendorBinary]] pname:deviceFaultVendorBinary
6715    indicates that the implementation supports the generation of
6716    vendor-specific binary crash dumps.
6717    These may provide additional information when imported into
6718    vendor-specific external tools.
6719
6720:refpage: VkPhysicalDeviceFaultFeaturesEXT
6721include::{chapters}/features.adoc[tag=features]
6722
6723include::{generated}/validity/structs/VkPhysicalDeviceFaultFeaturesEXT.adoc[]
6724--
6725endif::VK_EXT_device_fault[]
6726
6727ifdef::VK_EXT_pipeline_library_group_handles[]
6728[open,refpage='VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT',desc='Structure describing whether querying shader group handles from a pipeline library is supported by the implementation',type='structs']
6729--
6730The sname:VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT structure
6731is defined as:
6732
6733include::{generated}/api/structs/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.adoc[]
6734
6735This structure describes the following features:
6736
6737  * [[features-pipelineLibraryGroupHandles]]
6738    pname:pipelineLibraryGroupHandles indicates whether the implementation
6739    supports querying group handles directly from a ray tracing pipeline
6740    library, and guarantees bitwise identical group handles for such
6741    libraries when linked into other pipelines.
6742
6743:refpage: VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT
6744include::{chapters}/features.adoc[tag=features]
6745
6746include::{generated}/validity/structs/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.adoc[]
6747--
6748endif::VK_EXT_pipeline_library_group_handles[]
6749
6750ifdef::VK_EXT_shader_object[]
6751[open,refpage='VkPhysicalDeviceShaderObjectFeaturesEXT',desc='Structure describing whether shader objects can be supported by an implementation',type='structs']
6752--
6753The sname:VkPhysicalDeviceShaderObjectFeaturesEXT structure is defined as:
6754
6755include::{generated}/api/structs/VkPhysicalDeviceShaderObjectFeaturesEXT.adoc[]
6756
6757This structure describes the following feature:
6758
6759  * [[features-shaderObject]] pname:shaderObject indicates whether the
6760    implementation supports <<shaders-objects, shader objects>>.
6761
6762:refpage: VkPhysicalDeviceShaderObjectFeaturesEXT
6763include::{chapters}/features.adoc[tag=features]
6764
6765include::{generated}/validity/structs/VkPhysicalDeviceShaderObjectFeaturesEXT.adoc[]
6766--
6767endif::VK_EXT_shader_object[]
6768
6769ifdef::VK_ARM_shader_core_builtins[]
6770[open,refpage='VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM',desc='Structure describing the shader core builtins features that can be supported by an implementation',type='structs']
6771--
6772The sname:VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM structure is defined
6773as:
6774
6775include::{generated}/api/structs/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.adoc[]
6776
6777This structure describes the following feature:
6778
6779  * pname:sType is a elink:VkStructureType value identifying this structure.
6780  * pname:pNext is `NULL` or a pointer to a structure extending this
6781    structure.
6782  * [[features-shaderCoreBuiltins]] pname:shaderCoreBuiltins indicates
6783    whether the implementation supports the SPIR-V code:CoreBuiltinsARM
6784    capability.
6785
6786:refpage: VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM
6787include::{chapters}/features.adoc[tag=features]
6788
6789include::{generated}/validity/structs/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.adoc[]
6790--
6791endif::VK_ARM_shader_core_builtins[]
6792
6793ifdef::VK_EXT_frame_boundary[]
6794[open,refpage='VkPhysicalDeviceFrameBoundaryFeaturesEXT',desc='Structure describing the frame boundary features that can be supported by an implementation',type='structs']
6795--
6796The sname:VkPhysicalDeviceFrameBoundaryFeaturesEXT structure is defined as:
6797
6798include::{generated}/api/structs/VkPhysicalDeviceFrameBoundaryFeaturesEXT.adoc[]
6799
6800This structure describes the following feature:
6801
6802  * pname:sType is a elink:VkStructureType value identifying this structure.
6803  * pname:pNext is `NULL` or a pointer to a structure extending this
6804    structure.
6805  * [[features-frameBoundary]] pname:frameBoundary indicates whether the
6806    implementation supports frame boundary information.
6807
6808:refpage: VkPhysicalDeviceFrameBoundaryFeaturesEXT
6809include::{chapters}/features.adoc[tag=features]
6810
6811include::{generated}/validity/structs/VkPhysicalDeviceFrameBoundaryFeaturesEXT.adoc[]
6812--
6813endif::VK_EXT_frame_boundary[]
6814
6815ifdef::VK_EXT_swapchain_maintenance1[]
6816[open,refpage='VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT',desc='Structure describing whether implementation supports swapchain maintenance1 functionality',type='structs']
6817--
6818The sname:VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT structure is
6819defined as:
6820
6821include::{generated}/api/structs/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.adoc[]
6822
6823This structure describes the following feature:
6824
6825  * pname:sType is a elink:VkStructureType value identifying this structure.
6826  * pname:pNext is `NULL` or a pointer to a structure extending this
6827    structure.
6828  * [[features-swapchainMaintenance1]] pname:swapchainMaintenance1 indicates
6829    that the implementation supports the following:
6830  ** slink:VkSwapchainPresentFenceInfoEXT, specifying a fence that is
6831     signaled when the resources associated with a present operation can: be
6832     safely destroyed.
6833  ** slink:VkSwapchainPresentModesCreateInfoEXT and
6834     slink:VkSwapchainPresentModeInfoEXT, allowing the swapchain to switch
6835     present modes without a need for recreation.
6836  ** slink:VkSwapchainPresentScalingCreateInfoEXT, specifying the scaling
6837     behavior of the swapchain in presence of window resizing.
6838  ** The ename:VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT flag,
6839     allowing the implementation to defer the allocation of swapchain image
6840     memory until first acquisition.
6841  ** flink:vkReleaseSwapchainImagesEXT, allowing acquired swapchain images
6842     to be released without presenting them.
6843
6844:refpage: VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT
6845include::{chapters}/features.adoc[tag=features]
6846
6847include::{generated}/validity/structs/VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT.adoc[]
6848--
6849endif::VK_EXT_swapchain_maintenance1[]
6850
6851ifdef::VK_EXT_dynamic_rendering_unused_attachments[]
6852[open,refpage='VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT',desc='Structure describing the dynamic rendering unused attachment features that can be supported by an implementation',type='structs']
6853--
6854The sname:VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
6855structure is defined as:
6856
6857include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.adoc[]
6858
6859This structure describes the following feature:
6860
6861  * pname:sType is a elink:VkStructureType value identifying this structure.
6862  * pname:pNext is `NULL` or a pointer to a structure extending this
6863    structure.
6864  * [[features-dynamicRenderingUnusedAttachments]]
6865    pname:dynamicRenderingUnusedAttachments indicates that the
6866    implementation supports binding graphics pipelines within a render pass
6867    instance where any pipeline
6868    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats
6869    element with a format other than ename:VK_FORMAT_UNDEFINED is allowed
6870    with a corresponding slink:VkRenderingInfo::pname:pColorAttachments
6871    element with a pname:imageView equal to dlink:VK_NULL_HANDLE, or any
6872    pipeline
6873    slink:VkPipelineRenderingCreateInfo::pname:pColorAttachmentFormats
6874    element with a ename:VK_FORMAT_UNDEFINED format is allowed with a
6875    corresponding slink:VkRenderingInfo::pname:pColorAttachments element
6876    with a non-dlink:VK_NULL_HANDLE pname:imageView.
6877    Also a slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat
6878    other than ename:VK_FORMAT_UNDEFINED is allowed with a
6879    dlink:VK_NULL_HANDLE slink:VkRenderingInfo::pname:pDepthAttachment, or a
6880    slink:VkPipelineRenderingCreateInfo::pname:depthAttachmentFormat of
6881    ename:VK_FORMAT_UNDEFINED is allowed with a non-dlink:VK_NULL_HANDLE
6882    slink:VkRenderingInfo::pname:pDepthAttachment.
6883    Also a
6884    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat other
6885    than ename:VK_FORMAT_UNDEFINED is allowed with a dlink:VK_NULL_HANDLE
6886    slink:VkRenderingInfo::pname:pStencilAttachment, or a
6887    slink:VkPipelineRenderingCreateInfo::pname:stencilAttachmentFormat of
6888    ename:VK_FORMAT_UNDEFINED is allowed with a non-dlink:VK_NULL_HANDLE
6889    slink:VkRenderingInfo::pname:pStencilAttachment.
6890    Any writes to a slink:VkRenderingInfo::pname:pColorAttachments,
6891    slink:VkRenderingInfo::pname:pDepthAttachment, or
6892    slink:VkRenderingInfo::pname:pStencilAttachment with
6893    dlink:VK_NULL_HANDLE are discarded.
6894
6895:refpage: VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT
6896include::{chapters}/features.adoc[tag=features]
6897
6898include::{generated}/validity/structs/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.adoc[]
6899
6900--
6901endif::VK_EXT_dynamic_rendering_unused_attachments[]
6902
6903ifdef::VK_NV_ray_tracing_invocation_reorder[]
6904[open,refpage='VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV',desc='Structure describing feature to control ray tracing invocation reordering',type='structs']
6905--
6906The sname:VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV structure is
6907defined as:
6908
6909include::{generated}/api/structs/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.adoc[]
6910
6911This structure describes the following feature:
6912
6913  * pname:sType is a elink:VkStructureType value identifying this structure.
6914  * pname:pNext is `NULL` or a pointer to a structure extending this
6915    structure.
6916  * [[features-rayTracingInvocationReorder]]
6917    pname:rayTracingInvocationReorder indicates that the implementation
6918    supports `SPV_NV_shader_invocation_reorder`.
6919
6920:refpage: VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV
6921include::{chapters}/features.adoc[tag=features]
6922
6923include::{generated}/validity/structs/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.adoc[]
6924
6925--
6926endif::VK_NV_ray_tracing_invocation_reorder[]
6927
6928ifdef::VK_NV_extended_sparse_address_space[]
6929[open,refpage='VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV',desc='Structure describing feature to use extended sparse address space',type='structs']
6930--
6931The sname:VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV structure is
6932defined as:
6933
6934include::{generated}/api/structs/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.adoc[]
6935
6936This structure describes the following feature:
6937
6938  * pname:sType is a elink:VkStructureType value identifying this structure.
6939  * pname:pNext is `NULL` or a pointer to a structure extending this
6940    structure.
6941  * [[features-extendedSparseAddressSpace]] pname:extendedSparseAddressSpace
6942    indicates that the implementation supports allowing certain usages of
6943    sparse memory resources to exceed
6944    sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize.
6945    See slink:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.
6946
6947:refpage: VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV
6948include::{chapters}/features.adoc[tag=features]
6949
6950include::{generated}/validity/structs/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.adoc[]
6951
6952--
6953endif::VK_NV_extended_sparse_address_space[]
6954
6955ifdef::VK_QCOM_multiview_per_view_viewports[]
6956[open,refpage='VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM',desc='Structure describing multiview per view viewports features that can be supported by an implementation',type='structs']
6957--
6958The sname:VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM structure is
6959defined as:
6960
6961include::{generated}/api/structs/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.adoc[]
6962
6963This structure describes the following features:
6964
6965  * [[features-multiview-per-view-viewports]]
6966    pname:multiviewPerViewViewports indicates that the implementation
6967    supports multiview per-view viewports.
6968
6969:refpage: VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM
6970include::{chapters}/features.adoc[tag=features]
6971
6972include::{generated}/validity/structs/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.adoc[]
6973--
6974endif::VK_QCOM_multiview_per_view_viewports[]
6975
6976ifdef::VK_QCOM_multiview_per_view_render_areas[]
6977[open,refpage='VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM',desc='Structure describing multiview per view render areas features that can be supported by an implementation',type='structs']
6978--
6979The sname:VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM structure
6980is defined as:
6981
6982include::{generated}/api/structs/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.adoc[]
6983
6984This structure describes the following features:
6985
6986  * [[features-multiview-per-view-render-areas]]
6987    pname:multiviewPerViewRenderAreas indicates that the implementation
6988    supports multiview per-view render areas.
6989
6990:refpage: VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM
6991include::{chapters}/features.adoc[tag=features]
6992
6993include::{generated}/validity/structs/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.adoc[]
6994--
6995endif::VK_QCOM_multiview_per_view_render_areas[]
6996
6997ifdef::VK_HUAWEI_cluster_culling_shader[]
6998
6999[open,refpage='VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI',desc='Structure describing whether cluster culling shader is enabled',type='structs']
7000--
7001The sname:VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI structure is
7002defined as:
7003
7004include::{generated}/api/structs/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.adoc[]
7005
7006  * pname:sType is a elink:VkStructureType value identifying this structure.
7007  * pname:pNext is `NULL` or a pointer to a structure extending this
7008    structure.
7009  * [[features-clustercullingShader]] pname:clustercullingShader specifies
7010    whether cluster culling shader is supported.
7011  * [[features-multiviewClusterCullingShader]]
7012    pname:multiviewClusterCullingShader specifies whether multiview is
7013    supported.
7014
7015:refpage: VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI
7016include::{chapters}/features.adoc[tag=features]
7017
7018include::{generated}/validity/structs/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.adoc[]
7019--
7020endif::VK_HUAWEI_cluster_culling_shader[]
7021
7022ifdef::VK_AMDX_shader_enqueue[]
7023[open,refpage='VkPhysicalDeviceShaderEnqueueFeaturesAMDX',desc='Structure describing whether shader enqueue within execution graphs are supported by the implementation',type='structs']
7024--
7025The sname:VkPhysicalDeviceShaderEnqueueFeaturesAMDX structure is defined as:
7026
7027include::{generated}/api/structs/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.adoc[]
7028
7029This structure describes the following feature:
7030
7031  * [[features-shaderEnqueue]] pname:shaderEnqueue indicates whether the
7032    implementation supports <<executiongraphs,execution graphs>>.
7033
7034:refpage: VkPhysicalDeviceShaderEnqueueFeaturesAMDX
7035include::{chapters}/features.adoc[tag=features]
7036
7037include::{generated}/validity/structs/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.adoc[]
7038--
7039endif::VK_AMDX_shader_enqueue[]
7040
7041ifdef::VK_QCOM_filter_cubic_clamp[]
7042[open,refpage='VkPhysicalDeviceCubicClampFeaturesQCOM',desc='Structure describing cubic clamp features that can be supported by an implementation',type='structs']
7043--
7044The sname:VkPhysicalDeviceCubicClampFeaturesQCOM structure is defined as:
7045
7046include::{generated}/api/structs/VkPhysicalDeviceCubicClampFeaturesQCOM.adoc[]
7047
7048This structure describes the following features:
7049
7050  * [[features-filter-cubic-range-clamp]] pname:cubicRangeClamp indicates
7051    that the implementation supports cubic filtering in combination with a
7052    <<textures-texel-range-clamp,texel range clamp>>.
7053
7054:refpage: VkPhysicalDeviceCubicClampFeaturesQCOM
7055include::{chapters}/features.adoc[tag=features]
7056
7057include::{generated}/validity/structs/VkPhysicalDeviceCubicClampFeaturesQCOM.adoc[]
7058--
7059endif::VK_QCOM_filter_cubic_clamp[]
7060
7061ifdef::VK_QCOM_ycbcr_degamma[]
7062[open,refpage='VkPhysicalDeviceYcbcrDegammaFeaturesQCOM',desc='Structure describing {YCbCr} degamma features that can be supported by an implementation',type='structs']
7063--
7064The sname:VkPhysicalDeviceYcbcrDegammaFeaturesQCOM structure is defined as:
7065
7066include::{generated}/api/structs/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.adoc[]
7067
7068This structure describes the following features:
7069
7070  * pname:sType is a elink:VkStructureType value identifying this structure.
7071  * pname:pNext is `NULL` or a pointer to a structure extending this
7072    structure.
7073  * [[features-ycbcr-degamma]] pname:ycbcrDegamma indicates whether the
7074    implementation supports <<textures-ycbcr-degamma,{YCbCr} degamma>>.
7075
7076:refpage: VkPhysicalDeviceYcbcrDegammaFeaturesQCOM
7077include::{chapters}/features.adoc[tag=features]
7078
7079include::{generated}/validity/structs/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.adoc[]
7080--
7081endif::VK_QCOM_ycbcr_degamma[]
7082
7083ifdef::VK_QCOM_filter_cubic_weights[]
7084[open,refpage='VkPhysicalDeviceCubicWeightsFeaturesQCOM',desc='Structure describing cubic weight selection features that can be supported by an implementation',type='structs']
7085--
7086The sname:VkPhysicalDeviceCubicWeightsFeaturesQCOM structure is defined as:
7087
7088include::{generated}/api/structs/VkPhysicalDeviceCubicWeightsFeaturesQCOM.adoc[]
7089
7090This structure describes the following feature:
7091
7092  * [[features-filter-cubic-weight-selection]] pname:selectableCubicWeights
7093    indicates that the implementation supports the selection of filter cubic
7094    weights.
7095
7096:refpage: VkPhysicalDeviceCubicWeightsFeaturesQCOM
7097include::{chapters}/features.adoc[tag=features]
7098
7099include::{generated}/validity/structs/VkPhysicalDeviceCubicWeightsFeaturesQCOM.adoc[]
7100--
7101endif::VK_QCOM_filter_cubic_weights[]
7102
7103ifdef::VK_NV_descriptor_pool_overallocation[]
7104[open,refpage='VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV',desc='Structure describing feature to allow descriptor pool overallocation',type='structs']
7105--
7106The sname:VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV structure
7107is defined as:
7108
7109include::{generated}/api/structs/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.adoc[]
7110
7111This structure describes the following feature:
7112
7113  * pname:sType is a elink:VkStructureType value identifying this structure.
7114  * pname:pNext is `NULL` or a pointer to a structure extending this
7115    structure.
7116  * [[features-descriptorPoolOverallocation]]
7117    pname:descriptorPoolOverallocation indicates that the implementation
7118    allows the application to opt into descriptor pool overallocation by
7119    creating the descriptor pool with
7120    ename:VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV and/or
7121    ename:VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV flags.
7122
7123:refpage: VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV
7124include::{chapters}/features.adoc[tag=features]
7125
7126include::{generated}/validity/structs/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.adoc[]
7127
7128--
7129endif::VK_NV_descriptor_pool_overallocation[]
7130
7131
7132ifdef::VK_NV_cuda_kernel_launch[]
7133[open,refpage='VkPhysicalDeviceCudaKernelLaunchFeaturesNV',desc='Structure describing whether cuda kernel launch is supported by the implementation',type='structs']
7134--
7135The sname:VkPhysicalDeviceCudaKernelLaunchFeaturesNV structure is defined
7136as:
7137
7138include::{generated}/api/structs/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.adoc[]
7139
7140This structure describes the following features:
7141
7142  * [[features-cudaKernelLaunchFeatures]] pname:cudaKernelLaunchFeatures is
7143    non-zero if cuda kernel launch is supported.
7144
7145:refpage: VkPhysicalDeviceCudaKernelLaunchFeaturesNV
7146include::{chapters}/features.adoc[tag=features]
7147
7148include::{generated}/validity/structs/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.adoc[]
7149--
7150endif::VK_NV_cuda_kernel_launch[]
7151
7152ifdef::VK_ANDROID_external_format_resolve[]
7153
7154[open,refpage='VkPhysicalDeviceExternalFormatResolveFeaturesANDROID',desc='Structure describing whether external format resolves are supported',type='structs']
7155--
7156The sname:VkPhysicalDeviceExternalFormatResolveFeaturesANDROID structure is
7157defined as:
7158
7159include::{generated}/api/structs/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.adoc[]
7160
7161  * pname:sType is a elink:VkStructureType value identifying this structure.
7162  * pname:pNext is `NULL` or a pointer to a structure extending this
7163    structure.
7164  * [[features-externalFormatResolve]] pname:externalFormatResolve specifies
7165    whether external format resolves are supported.
7166
7167:refpage: VkPhysicalDeviceExternalFormatResolveFeaturesANDROID
7168include::{chapters}/features.adoc[tag=features]
7169
7170include::{generated}/validity/structs/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.adoc[]
7171--
7172
7173endif::VK_ANDROID_external_format_resolve[]
7174
7175ifdef::VK_ARM_scheduling_controls[]
7176[open,refpage='VkPhysicalDeviceSchedulingControlsFeaturesARM',desc='Structure describing scheduling controls features that can be supported by an implementation',type='structs']
7177--
7178The sname:VkPhysicalDeviceSchedulingControlsFeaturesARM structure is defined
7179as:
7180
7181include::{generated}/api/structs/VkPhysicalDeviceSchedulingControlsFeaturesARM.adoc[]
7182
7183This structure describes the following features:
7184
7185  * [[features-schedulingControls]] pname:schedulingControls indicates that
7186    the implementation supports scheduling controls.
7187
7188:refpage: VkPhysicalDeviceSchedulingControlsFeaturesARM
7189include::{chapters}/features.adoc[tag=features]
7190
7191include::{generated}/validity/structs/VkPhysicalDeviceSchedulingControlsFeaturesARM.adoc[]
7192--
7193endif::VK_ARM_scheduling_controls[]
7194
7195[[features-requirements]]
7196== Feature Requirements
7197
7198All Vulkan graphics implementations must: support the following features:
7199
7200ifdef::VK_KHR_portability_subset[]
7201  * <<features-robustBufferAccess, pname:robustBufferAccess>>, unless the
7202    `apiext:VK_KHR_portability_subset` extension is enabled.
7203endif::VK_KHR_portability_subset[]
7204ifndef::VK_KHR_portability_subset[]
7205  * <<features-robustBufferAccess, pname:robustBufferAccess>>
7206endif::VK_KHR_portability_subset[]
7207ifdef::VK_VERSION_1_1[]
7208  * <<features-multiview, pname:multiview>>, if Vulkan 1.1 is supported.
7209ifdef::VKSC_VERSION_1_0[]
7210    Vulkan SC 1.0 does not require pname:multiview to be supported
7211    <<SCID-8>>.
7212ifdef::hidden[]
7213// tag::scdeviation[]
7214  * slink:VkPhysicalDeviceVulkan11Features::pname:multiview is made optional
7215    <<SCID-8>>.
7216// end::scdeviation[]
7217endif::hidden[]
7218endif::VKSC_VERSION_1_0[]
7219ifdef::VK_KHR_shader_draw_parameters[]
7220  * <<features-shaderDrawParameters, pname:shaderDrawParameters>>, if the
7221    `apiext:VK_KHR_shader_draw_parameters` extension is supported.
7222endif::VK_KHR_shader_draw_parameters[]
7223endif::VK_VERSION_1_1[]
7224ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
7225  * <<features-uniformBufferStandardLayout,
7226    pname:uniformBufferStandardLayout>>, if Vulkan 1.2 or the
7227    `apiext:VK_KHR_uniform_buffer_standard_layout` extension is supported.
7228endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[]
7229ifdef::VK_KHR_variable_pointers[]
7230  * <<features-variablePointersStorageBuffer,
7231    pname:variablePointersStorageBuffer>>, if the
7232    `apiext:VK_KHR_variable_pointers` extension is supported.
7233endif::VK_KHR_variable_pointers[]
7234ifdef::VK_KHR_8bit_storage[]
7235  * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if
7236    the `apiext:VK_KHR_8bit_storage` extension is supported.
7237endif::VK_KHR_8bit_storage[]
7238ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[]
7239  * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if
7240    <<features-uniformAndStorageBuffer8BitAccess,
7241    pname:uniformAndStorageBuffer8BitAccess>> is enabled.
7242endif::VK_VERSION_1_2,VK_KHR_8bit_storage[]
7243ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
7244  * If
7245ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature is supported, or if]
7246    the `apiext:VK_EXT_descriptor_indexing` extension is supported:
7247  ** <<features-shaderSampledImageArrayDynamicIndexing,
7248     pname:shaderSampledImageArrayDynamicIndexing>>
7249  ** <<features-shaderStorageBufferArrayDynamicIndexing,
7250     pname:shaderStorageBufferArrayDynamicIndexing>>
7251  ** <<features-shaderUniformTexelBufferArrayDynamicIndexing,
7252     pname:shaderUniformTexelBufferArrayDynamicIndexing>>
7253  ** <<features-shaderStorageTexelBufferArrayDynamicIndexing,
7254     pname:shaderStorageTexelBufferArrayDynamicIndexing>>
7255  ** <<features-shaderSampledImageArrayNonUniformIndexing,
7256     pname:shaderSampledImageArrayNonUniformIndexing>>
7257  ** <<features-shaderStorageBufferArrayNonUniformIndexing,
7258     pname:shaderStorageBufferArrayNonUniformIndexing>>
7259  ** <<features-shaderUniformTexelBufferArrayNonUniformIndexing,
7260     pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
7261  ** <<features-descriptorBindingSampledImageUpdateAfterBind,
7262     pname:descriptorBindingSampledImageUpdateAfterBind>>
7263  ** <<features-descriptorBindingStorageImageUpdateAfterBind,
7264     pname:descriptorBindingStorageImageUpdateAfterBind>>
7265  ** <<features-descriptorBindingStorageBufferUpdateAfterBind,
7266     pname:descriptorBindingStorageBufferUpdateAfterBind>> (see also
7267     <<limits-robustBufferAccessUpdateAfterBind,
7268     pname:robustBufferAccessUpdateAfterBind>>)
7269  ** <<features-descriptorBindingUniformTexelBufferUpdateAfterBind,
7270     pname:descriptorBindingUniformTexelBufferUpdateAfterBind>> (see also
7271     <<limits-robustBufferAccessUpdateAfterBind,
7272     pname:robustBufferAccessUpdateAfterBind>>)
7273  ** <<features-descriptorBindingStorageTexelBufferUpdateAfterBind,
7274     pname:descriptorBindingStorageTexelBufferUpdateAfterBind>> (see also
7275     <<limits-robustBufferAccessUpdateAfterBind,
7276     pname:robustBufferAccessUpdateAfterBind>>)
7277  ** <<features-descriptorBindingUpdateUnusedWhilePending,
7278     pname:descriptorBindingUpdateUnusedWhilePending>>
7279  ** <<features-descriptorBindingPartiallyBound,
7280     pname:descriptorBindingPartiallyBound>>
7281  ** <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
7282endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
7283ifdef::VK_VERSION_1_3[]
7284  * If Vulkan 1.3 is supported:
7285  ** <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>
7286  ** <<features-vulkanMemoryModelDeviceScope,
7287     pname:vulkanMemoryModelDeviceScope>>
7288endif::VK_VERSION_1_3[]
7289ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
7290  * <<features-inlineUniformBlock, pname:inlineUniformBlock>>, if
7291ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7292    the `apiext:VK_EXT_inline_uniform_block` extension is supported.
7293ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
7294  * <<features-descriptorBindingInlineUniformBlockUpdateAfterBind,
7295    pname:descriptorBindingInlineUniformBlockUpdateAfterBind>>, if
7296ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7297    the `apiext:VK_EXT_inline_uniform_block` extension is supported; and if
7298ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature is supported, or]
7299    the `apiext:VK_EXT_descriptor_indexing` extension is supported.
7300endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[]
7301endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[]
7302ifdef::VK_EXT_scalar_block_layout[]
7303  * <<features-scalarBlockLayout, pname:scalarBlockLayout>>, if the
7304    `apiext:VK_EXT_scalar_block_layout` extension is supported.
7305endif::VK_EXT_scalar_block_layout[]
7306ifdef::VK_VERSION_1_2[]
7307  * <<features-subgroupBroadcastDynamicId,
7308    pname:subgroupBroadcastDynamicId>>, if Vulkan 1.2 is supported.
7309endif::VK_VERSION_1_2[]
7310ifdef::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
7311  * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>,
7312    if the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is
7313    supported.
7314endif::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[]
7315ifdef::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
7316  * <<features-drawIndirectCount, pname:drawIndirectCount>>, if the
7317    `apiext:VK_KHR_draw_indirect_count` extension is supported.
7318endif::VK_VERSION_1_2+VK_KHR_draw_indirect_count[]
7319ifdef::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
7320  * <<features-samplerFilterMinmax, pname:samplerFilterMinmax>>, if the
7321    `apiext:VK_EXT_sampler_filter_minmax` extension is supported.
7322endif::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[]
7323ifdef::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
7324  * <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>>,
7325    if the `apiext:VK_EXT_shader_viewport_index_layer` extension is
7326    supported.
7327  * <<features-shaderOutputLayer, pname:shaderOutputLayer>>, if the
7328    `apiext:VK_EXT_shader_viewport_index_layer` extension is supported.
7329endif::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[]
7330ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
7331  * <<features-subgroupSizeControl, pname:subgroupSizeControl>>, if
7332ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7333    the `apiext:VK_EXT_subgroup_size_control` extension is supported.
7334  * <<features-computeFullSubgroups, pname:computeFullSubgroups>>, if
7335ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7336    the `apiext:VK_EXT_subgroup_size_control` extension is supported.
7337endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[]
7338ifdef::VK_EXT_device_memory_report[]
7339  * <<features-deviceMemoryReport, pname:deviceMemoryReport>>, if the
7340    `apiext:VK_EXT_device_memory_report` extension is supported.
7341endif::VK_EXT_device_memory_report[]
7342ifdef::VK_EXT_global_priority_query[]
7343  * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the
7344    `apiext:VK_EXT_global_priority_query` extension is supported.
7345endif::VK_EXT_global_priority_query[]
7346ifdef::VK_KHR_global_priority[]
7347  * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the
7348    `apiext:VK_KHR_global_priority` extension is supported.
7349endif::VK_KHR_global_priority[]
7350ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
7351  * <<features-imagelessFramebuffer, pname:imagelessFramebuffer>>, if Vulkan
7352    1.2 or the `apiext:VK_KHR_imageless_framebuffer` extension is supported.
7353endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[]
7354ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
7355  * <<features-separateDepthStencilLayouts,
7356    pname:separateDepthStencilLayouts>>, if Vulkan 1.2 or the
7357    `apiext:VK_KHR_separate_depth_stencil_layouts` extension is supported.
7358endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[]
7359ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[]
7360  * <<features-hostQueryReset, pname:hostQueryReset>>, if Vulkan 1.2 or the
7361    `apiext:VK_EXT_host_query_reset` extension is supported.
7362endif::VK_VERSION_1_2,VK_EXT_host_query_reset[]
7363ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
7364  * <<features-timelineSemaphore, pname:timelineSemaphore>>, if Vulkan 1.2
7365    or the `apiext:VK_KHR_timeline_semaphore` extension is supported.
7366ifdef::VKSC_VERSION_1_0[]
7367    Vulkan SC 1.0 does not require pname:timelineSemaphore to be supported
7368    <<SCID-8>>.
7369ifdef::hidden[]
7370// tag::scdeviation[]
7371  * slink:VkPhysicalDeviceVulkan12Features::pname:timelineSemaphore is made
7372    optional <<SCID-8>>.
7373// end::scdeviation[]
7374endif::hidden[]
7375endif::VKSC_VERSION_1_0[]
7376endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[]
7377ifdef::VK_KHR_acceleration_structure[]
7378  * If the `apiext:VK_KHR_acceleration_structure` extension is supported:
7379  ** <<features-accelerationStructure, pname:accelerationStructure>>
7380  ** All the features required by
7381ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing, pname:descriptorIndexing>> feature if Vulkan 1.2 is supported, or]
7382     the `apiext:VK_EXT_descriptor_indexing` extension.
7383  ** <<features-descriptorBindingAccelerationStructureUpdateAfterBind,
7384     pname:descriptorBindingAccelerationStructureUpdateAfterBind>>
7385  ** <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> from
7386ifdef::VK_VERSION_1_2[Vulkan 1.2 or]
7387     the `apiext:VK_KHR_buffer_device_address` extension.
7388endif::VK_KHR_acceleration_structure[]
7389ifdef::VK_KHR_ray_tracing_pipeline[]
7390  * If the `apiext:VK_KHR_ray_tracing_pipeline` extension is supported:
7391  ** <<features-rayTracingPipeline, pname:rayTracingPipeline>>
7392  ** <<features-rayTracingPipelineTraceRaysIndirect,
7393     pname:rayTracingPipelineTraceRaysIndirect>>
7394  ** <<features-rayTraversalPrimitiveCulling,
7395     pname:rayTraversalPrimitiveCulling>>, if <<features-rayQuery,
7396     pname:rayQuery>> is supported
7397  ** the `apiext:VK_KHR_pipeline_library` extension must: be supported.
7398endif::VK_KHR_ray_tracing_pipeline[]
7399ifdef::VK_KHR_ray_query[]
7400  * <<features-rayQuery, pname:rayQuery>>, if the `apiext:VK_KHR_ray_query`
7401    extension is supported.
7402endif::VK_KHR_ray_query[]
7403ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
7404  * <<features-pipelineCreationCacheControl,
7405    pname:pipelineCreationCacheControl>>, if
7406ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7407    the `apiext:VK_EXT_pipeline_creation_cache_control` extension is
7408    supported.
7409endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[]
7410ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
7411  * <<features-subgroup-extended-types, pname:shaderSubgroupExtendedTypes>>,
7412    if Vulkan 1.2 or the `apiext:VK_KHR_shader_subgroup_extended_types`
7413    extension is supported.
7414endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[]
7415ifdef::VK_KHR_sampler_ycbcr_conversion[]
7416  * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>, if
7417    the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is supported.
7418endif::VK_KHR_sampler_ycbcr_conversion[]
7419ifdef::VK_KHR_pipeline_executable_properties[]
7420  * <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>>, if
7421    the `apiext:VK_KHR_pipeline_executable_properties` extension is
7422    supported.
7423endif::VK_KHR_pipeline_executable_properties[]
7424ifdef::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
7425  * <<features-textureCompressionASTC_HDR,
7426    pname:textureCompressionASTC_HDR>>, if the
7427    `apiext:VK_EXT_texture_compression_astc_hdr` extension is supported.
7428endif::VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr[]
7429ifdef::VK_EXT_depth_clip_enable[]
7430  * <<features-depthClipEnable, pname:depthClipEnable>>, if the
7431    `apiext:VK_EXT_depth_clip_enable` extension is supported.
7432endif::VK_EXT_depth_clip_enable[]
7433ifdef::VK_EXT_memory_priority[]
7434  * <<features-memoryPriority, pname:memoryPriority>>, if the
7435    `apiext:VK_EXT_memory_priority` extension is supported.
7436endif::VK_EXT_memory_priority[]
7437ifdef::VK_EXT_ycbcr_image_arrays[]
7438  * <<features-ycbcrImageArrays, pname:ycbcrImageArrays>>, if the
7439    `apiext:VK_EXT_ycbcr_image_arrays` extension is supported.
7440endif::VK_EXT_ycbcr_image_arrays[]
7441ifdef::VK_EXT_index_type_uint8[]
7442  * <<features-indexTypeUint8, pname:indexTypeUint8>>, if the
7443    `apiext:VK_EXT_index_type_uint8` extension is supported.
7444endif::VK_EXT_index_type_uint8[]
7445ifdef::VK_EXT_primitive_topology_list_restart[]
7446  * <<features-primitiveTopologyListRestart,
7447    pname:primitiveTopologyListRestart>>, if the
7448    `apiext:VK_EXT_primitive_topology_list_restart` extension is supported.
7449endif::VK_EXT_primitive_topology_list_restart[]
7450ifdef::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
7451  * <<features-shaderDemoteToHelperInvocation,
7452    pname:shaderDemoteToHelperInvocation>>, if
7453ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7454    the `apiext:VK_EXT_shader_demote_to_helper_invocation` extension is
7455    supported.
7456endif::VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation[]
7457ifdef::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[]
7458  * <<features-texelBufferAlignment, pname:texelBufferAlignment>>, if
7459ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7460    the `apiext:VK_EXT_texel_buffer_alignment` extension is supported.
7461endif::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[]
7462ifdef::VK_KHR_vulkan_memory_model,VKSC_VERSION_1_0[]
7463  * <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>,
7464ifdef::VKSC_VERSION_1_0[]
7465    if Vulkan SC 1.0 <<SCID-5>> or
7466ifdef::hidden[]
7467// tag::scdeviation[]
7468  * slink:VkPhysicalDeviceVulkan12Features::pname:vulkanMemoryModel must: be
7469    reported as ename:VK_TRUE <<SCID-1>>.
7470// end::scdeviation[]
7471endif::hidden[]
7472endif::VKSC_VERSION_1_0[]
7473    if the `apiext:VK_KHR_vulkan_memory_model` extension is supported.
7474endif::VK_KHR_vulkan_memory_model,VKSC_VERSION_1_0[]
7475ifdef::VK_VERSION_1_3,VK_KHR_buffer_device_address[]
7476  * <<features-bufferDeviceAddress, pname:bufferDeviceAddress>>, if
7477ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7478    the `apiext:VK_KHR_buffer_device_address` extension is supported.
7479endif::VK_VERSION_1_3,VK_KHR_buffer_device_address[]
7480ifdef::VK_KHR_performance_query[]
7481  * <<VkPhysicalDevicePerformanceQueryFeaturesKHR,
7482    pname:performanceCounterQueryPools>>, if the
7483    `apiext:VK_KHR_performance_query` extension is supported.
7484endif::VK_KHR_performance_query[]
7485ifdef::VK_EXT_transform_feedback[]
7486  * <<features-transformFeedback, pname:transformFeedback>>, if the
7487    `apiext:VK_EXT_transform_feedback` extension is supported.
7488endif::VK_EXT_transform_feedback[]
7489ifdef::VK_EXT_conditional_rendering[]
7490  * <<features-conditionalRendering, pname:conditionalRendering>>, if the
7491    `apiext:VK_EXT_conditional_rendering` extension is supported.
7492endif::VK_EXT_conditional_rendering[]
7493ifdef::VK_EXT_vertex_attribute_divisor[]
7494  * <<features-vertexAttributeInstanceRateDivisor,
7495    pname:vertexAttributeInstanceRateDivisor>>, if the
7496    `apiext:VK_EXT_vertex_attribute_divisor` extension is supported.
7497endif::VK_EXT_vertex_attribute_divisor[]
7498ifdef::VK_EXT_fragment_density_map[]
7499  * <<features-fragmentDensityMap, pname:fragmentDensityMap>>, if the
7500    `apiext:VK_EXT_fragment_density_map` extension is supported.
7501endif::VK_EXT_fragment_density_map[]
7502ifdef::VK_KHR_shader_clock[]
7503  * <<features-shaderSubgroupClock, pname:shaderSubgroupClock>>, if the
7504    `apiext:VK_KHR_shader_clock` extension is supported.
7505endif::VK_KHR_shader_clock[]
7506ifdef::VK_KHR_shader_atomic_int64[]
7507  * <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>,
7508    if the `apiext:VK_KHR_shader_atomic_int64` extension is supported.
7509endif::VK_KHR_shader_atomic_int64[]
7510ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
7511  * <<features-shaderInt64, pname:shaderInt64>>, if the
7512    <<features-shaderSharedInt64Atomics, pname:shaderSharedInt64Atomics>> or
7513    <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>
7514    features are supported.
7515endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[]
7516ifdef::VK_KHR_shader_float16_int8[]
7517  * <<features-shaderFloat16, pname:shaderFloat16>> or
7518    <<features-shaderInt8, pname:shaderInt8>>, if the
7519    `apiext:VK_KHR_shader_float16_int8` extension is supported.
7520endif::VK_KHR_shader_float16_int8[]
7521ifdef::VK_EXT_fragment_shader_interlock[]
7522  * <<features-fragmentShaderSampleInterlock,
7523    pname:fragmentShaderSampleInterlock>> or
7524    <<features-fragmentShaderPixelInterlock,
7525    pname:fragmentShaderPixelInterlock>> or
7526    <<features-fragmentShaderShadingRateInterlock,
7527    pname:fragmentShaderShadingRateInterlock>>, if the
7528    `apiext:VK_EXT_fragment_shader_interlock` extension is supported.
7529endif::VK_EXT_fragment_shader_interlock[]
7530ifdef::VK_EXT_line_rasterization[]
7531  * <<features-rectangularLines, pname:rectangularLines>> or
7532    <<features-bresenhamLines, pname:bresenhamLines>> or
7533    <<features-smoothLines, pname:smoothLines>> or
7534    <<features-stippledRectangularLines, pname:stippledRectangularLines>> or
7535    <<features-stippledBresenhamLines, pname:stippledBresenhamLines>> or
7536    <<features-stippledSmoothLines, pname:stippledSmoothLines>>, if the
7537    `apiext:VK_EXT_line_rasterization` extension is supported.
7538endif::VK_EXT_line_rasterization[]
7539ifdef::VK_KHR_16bit_storage[]
7540  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
7541    if the `apiext:VK_KHR_16bit_storage` extension is supported.
7542endif::VK_KHR_16bit_storage[]
7543ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
7544  * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>,
7545    if <<features-uniformAndStorageBuffer16BitAccess,
7546    pname:uniformAndStorageBuffer16BitAccess>> is enabled.
7547endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
7548ifdef::VK_VERSION_1_3,VK_EXT_image_robustness[]
7549  * <<features-robustImageAccess, pname:robustImageAccess>>, if
7550ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7551    the `apiext:VK_EXT_image_robustness` extension is supported.
7552endif::VK_VERSION_1_3,VK_EXT_image_robustness[]
7553ifdef::VK_EXT_4444_formats[]
7554  * <<features-formatA4R4G4B4, pname:formatA4R4G4B4>>, if the
7555    `apiext:VK_EXT_4444_formats` extension is supported.
7556endif::VK_EXT_4444_formats[]
7557ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
7558  * <<features-mutableDescriptorType, pname:mutableDescriptorType>>, if the
7559    `apiext:VK_EXT_mutable_descriptor_type` or
7560    `apiext:VK_VALVE_mutable_descriptor_type` extension is supported.
7561endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
7562ifdef::VK_EXT_shader_image_atomic_int64[]
7563  * <<features-shaderInt64, pname:shaderInt64>> and
7564    <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
7565    the `apiext:VK_EXT_shader_image_atomic_int64` extension is supported.
7566  * <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if
7567    the <<features-sparseImageInt64Atomics, pname:sparseImageInt64Atomics>>
7568    feature is supported.
7569endif::VK_EXT_shader_image_atomic_int64[]
7570ifdef::VK_EXT_shader_atomic_float[]
7571  * <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>>,
7572    if the <<features-sparseImageFloat32Atomics,
7573    pname:sparseImageFloat32Atomics>> feature is supported.
7574  * <<features-shaderImageFloat32AtomicAdd,
7575    pname:shaderImageFloat32AtomicAdd>>, if the
7576    <<features-sparseImageFloat32AtomicAdd,
7577    pname:sparseImageFloat32AtomicAdd>> feature is supported.
7578endif::VK_EXT_shader_atomic_float[]
7579ifdef::VK_EXT_primitives_generated_query[]
7580  * <<features-primitivesGeneratedQuery, pname:primitivesGeneratedQuery>>,
7581    if the `apiext:VK_EXT_primitives_generated_query` extension is
7582    supported.
7583endif::VK_EXT_primitives_generated_query[]
7584ifdef::VK_KHR_fragment_shading_rate[]
7585  * <<features-pipelineFragmentShadingRate,
7586    pname:pipelineFragmentShadingRate>>, if the
7587    `apiext:VK_KHR_fragment_shading_rate` extension is supported.
7588endif::VK_KHR_fragment_shading_rate[]
7589ifdef::VK_EXT_pipeline_protected_access[]
7590  * <<features-pipelineProtectedAccess, pname:pipelineProtectedAccess>>, if
7591    the `apiext:VK_EXT_pipeline_protected_access` extension is supported.
7592endif::VK_EXT_pipeline_protected_access[]
7593ifdef::VK_EXT_legacy_dithering[]
7594  * <<features-legacyDithering, pname:legacyDithering>>, if the
7595    `apiext:VK_EXT_legacy_dithering` extension is supported.
7596endif::VK_EXT_legacy_dithering[]
7597ifdef::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
7598  * <<features-shaderTerminateInvocation, pname:shaderTerminateInvocation>>
7599    if
7600ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7601    the `apiext:VK_KHR_shader_terminate_invocation` extension is supported.
7602endif::VK_VERSION_1_3,VK_KHR_shader_terminate_invocation[]
7603ifdef::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
7604  * <<features-shaderZeroInitializeWorkgroupMemory,
7605    pname:shaderZeroInitializeWorkgroupMemory>>, if
7606ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7607    the `apiext:VK_KHR_zero_initialize_workgroup_memory` extension is
7608    supported.
7609endif::VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory[]
7610ifdef::VK_KHR_workgroup_memory_explicit_layout[]
7611  * <<features-workgroupMemoryExplicitLayout,
7612    pname:workgroupMemoryExplicitLayout>>, if the
7613    `apiext:VK_KHR_workgroup_memory_explicit_layout` extension is supported.
7614endif::VK_KHR_workgroup_memory_explicit_layout[]
7615ifdef::VK_EXT_vertex_input_dynamic_state[]
7616  * <<features-vertexInputDynamicState, pname:vertexInputDynamicState>>, if
7617    the `apiext:VK_EXT_vertex_input_dynamic_state` extension is supported.
7618endif::VK_EXT_vertex_input_dynamic_state[]
7619ifdef::VK_VERSION_1_3,VK_KHR_synchronization2[]
7620  * <<features-synchronization2, pname:synchronization2>> if
7621ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7622    the `apiext:VK_KHR_synchronization2` extension is supported.
7623endif::VK_VERSION_1_3,VK_KHR_synchronization2[]
7624ifdef::VK_EXT_provoking_vertex[]
7625  * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the
7626    `apiext:VK_EXT_provoking_vertex` extension is supported.
7627endif::VK_EXT_provoking_vertex[]
7628ifdef::VK_EXT_descriptor_buffer[]
7629  * <<features-descriptorBuffer, pname:descriptorBuffer>>, if the
7630    `<<VK_EXT_descriptor_buffer>>` extension is supported.
7631endif::VK_EXT_descriptor_buffer[]
7632ifdef::VK_KHR_shader_subgroup_uniform_control_flow[]
7633  * <<features-shaderSubgroupUniformControlFlow,
7634    pname:shaderSubgroupUniformControlFlow>>, if the
7635    `apiext:VK_KHR_shader_subgroup_uniform_control_flow` extension is
7636    supported.
7637endif::VK_KHR_shader_subgroup_uniform_control_flow[]
7638ifdef::VK_EXT_border_color_swizzle[]
7639  * <<features-borderColorSwizzle, pname:borderColorSwizzle>> if the
7640    `apiext:VK_EXT_border_color_swizzle` extension is supported.
7641endif::VK_EXT_border_color_swizzle[]
7642ifdef::VK_EXT_multi_draw[]
7643  * <<features-multiDraw, pname:multiDraw>>, if the
7644    `apiext:VK_EXT_multi_draw` extension is supported.
7645endif::VK_EXT_multi_draw[]
7646ifdef::VK_EXT_shader_atomic_float2[]
7647  * <<features-shaderImageFloat32AtomicMinMax,
7648    pname:shaderImageFloat32AtomicMinMax>>, if the
7649    <<features-sparseImageFloat32AtomicMinMax,
7650    pname:sparseImageFloat32AtomicMinMax>> feature is supported.
7651endif::VK_EXT_shader_atomic_float2[]
7652ifdef::VK_KHR_present_id[]
7653  * <<features-presentId, pname:presentId>>, if the
7654    `apiext:VK_KHR_present_id` extension is supported.
7655endif::VK_KHR_present_id[]
7656ifdef::VK_KHR_present_wait[]
7657  * <<features-presentWait, pname:presentWait>>, if the
7658    `apiext:VK_KHR_present_wait` extension is supported.
7659endif::VK_KHR_present_wait[]
7660ifdef::VK_EXT_host_image_copy[]
7661  * <<features-hostImageCopy, pname:hostImageCopy>>, if the
7662    `<<VK_EXT_host_image_copy>>` extension is supported.
7663endif::VK_EXT_host_image_copy[]
7664ifdef::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
7665  * <<features-shaderIntegerDotProduct, pname:shaderIntegerDotProduct>> if
7666ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7667    the `apiext:VK_KHR_shader_integer_dot_product` extension is supported.
7668endif::VK_VERSION_1_3,VK_KHR_shader_integer_dot_product[]
7669ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[]
7670  * <<features-maintenance4, pname:maintenance4>>, if
7671ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7672    the `apiext:VK_KHR_maintenance4` extension is supported.
7673endif::VK_VERSION_1_3,VK_KHR_maintenance4[]
7674ifdef::VK_KHR_maintenance5[]
7675  * <<features-maintenance5, pname:maintenance5>>, if the
7676    `apiext:VK_KHR_maintenance5` extension is supported.
7677endif::VK_KHR_maintenance5[]
7678ifdef::VK_EXT_image_2d_view_of_3d[]
7679  * <<features-image2DViewOf3D, pname:image2DViewOf3D>>, if the
7680    `apiext:VK_EXT_image_2d_view_of_3d` extension is supported.
7681endif::VK_EXT_image_2d_view_of_3d[]
7682ifdef::VK_EXT_image_sliced_view_of_3d[]
7683  * <<features-imageSlicedViewOf3D, pname:imageSlicedViewOf3D>>, if the
7684    `apiext:VK_EXT_image_sliced_view_of_3d` extension is supported.
7685endif::VK_EXT_image_sliced_view_of_3d[]
7686ifdef::VK_VERSION_1_3,VK_EXT_private_data[]
7687  * <<features-privateData, pname:privateData>>, if
7688ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7689    the `apiext:VK_EXT_private_data` extension is supported.
7690endif::VK_VERSION_1_3,VK_EXT_private_data[]
7691ifdef::VK_EXT_extended_dynamic_state[]
7692  * <<features-extendedDynamicState, pname:extendedDynamicState>>, if the
7693    `apiext:VK_EXT_extended_dynamic_state` extension is supported.
7694endif::VK_EXT_extended_dynamic_state[]
7695ifdef::VK_EXT_extended_dynamic_state2[]
7696  * <<features-extendedDynamicState2, pname:extendedDynamicState2>>, if the
7697    `apiext:VK_EXT_extended_dynamic_state2` extension is supported.
7698endif::VK_EXT_extended_dynamic_state2[]
7699ifdef::VK_EXT_depth_clip_control[]
7700  * <<features-depthClipControl, pname:depthClipControl>>, if the
7701    `apiext:VK_EXT_depth_clip_control` extension is supported.
7702endif::VK_EXT_depth_clip_control[]
7703ifdef::VK_EXT_image_view_min_lod[]
7704  * <<features-minLod, pname:minLod>>, if the
7705    `apiext:VK_EXT_image_view_min_lod` extension is supported.
7706endif::VK_EXT_image_view_min_lod[]
7707ifdef::VK_NV_external_sci_sync[]
7708  * At least one of <<features-sciSyncFence, pname:sciSyncFence>> and
7709    <<features-sciSyncSemaphore, pname:sciSyncSemaphore>>, and at least one
7710    of <<features-sciSyncImport, pname:sciSyncImport>> and
7711    <<features-sciSyncExport, pname:sciSyncExport>>, if the
7712    `apiext:VK_NV_external_sci_sync` extension is supported.
7713endif::VK_NV_external_sci_sync[]
7714ifdef::VK_NV_external_sci_sync2[]
7715  * At least one of <<features-sciSyncFence2, pname:sciSyncFence>> and
7716    <<features-sciSyncSemaphore2, pname:sciSyncSemaphore2>>, and at least
7717    one of <<features-sciSyncImport2, pname:sciSyncImport>> and
7718    <<features-sciSyncExport2, pname:sciSyncExport>>, if the
7719    `apiext:VK_NV_external_sci_sync2` extension is supported.
7720endif::VK_NV_external_sci_sync2[]
7721ifdef::VK_NV_external_memory_sci_buf[]
7722  * At least one of <<features-sciBufImport, pname:sciBufImport>> and
7723    <<features-sciBufExport, pname:sciBufExport>>, if the
7724    `apiext:VK_NV_external_memory_sci_buf` extension is supported.
7725endif::VK_NV_external_memory_sci_buf[]
7726ifdef::VK_NV_linear_color_attachment[]
7727  * <<features-linearColorAttachment, pname:linearColorAttachment>>, if the
7728    `apiext:VK_NV_linear_color_attachment` extension is supported.
7729endif::VK_NV_linear_color_attachment[]
7730ifdef::VK_NV_present_barrier[]
7731  * <<features-presentBarrier, pname:presentBarrier>>, if the
7732    `apiext:VK_NV_present_barrier` extension is supported.
7733endif::VK_NV_present_barrier[]
7734ifdef::VK_EXT_graphics_pipeline_library[]
7735  * <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>>, if
7736    the `apiext:VK_EXT_graphics_pipeline_library` extension is supported.
7737endif::VK_EXT_graphics_pipeline_library[]
7738ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
7739  * <<features-dynamicRendering, pname:dynamicRendering>>, if
7740ifdef::VK_VERSION_1_3[Vulkan 1.3 or]
7741    the `apiext:VK_KHR_dynamic_rendering` extension is supported.
7742endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
7743ifdef::VK_EXT_nested_command_buffer[]
7744  * <<features-nestedCommandBuffer, pname:nestedCommandBuffer>>, if the
7745    `apiext:VK_EXT_nested_command_buffer` extension is supported.
7746endif::VK_EXT_nested_command_buffer[]
7747ifdef::VK_EXT_mesh_shader[]
7748  * <<features-taskShader, pname:taskShader>> and <<features-meshShader,
7749    pname:meshShader>>, if the `apiext:VK_EXT_mesh_shader` extension is
7750    supported.
7751endif::VK_EXT_mesh_shader[]
7752ifdef::VK_EXT_mesh_shader+VK_KHR_fragment_shading_rate[]
7753  * <<features-primitiveFragmentShadingRate,
7754    pname:primitiveFragmentShadingRate>> if
7755    <<features-primitiveFragmentShadingRate-mesh,
7756    pname:primitiveFragmentShadingRateMeshShader>> feature is supported.
7757endif::VK_EXT_mesh_shader+VK_KHR_fragment_shading_rate[]
7758ifdef::VK_EXT_subpass_merge_feedback[]
7759  * <<features-subpassMergeFeedback, pname:subpassMergeFeedback>>, if the
7760    `apiext:VK_EXT_subpass_merge_feedback` extension is supported.
7761endif::VK_EXT_subpass_merge_feedback[]
7762ifdef::VK_KHR_ray_tracing_maintenance1[]
7763  * <<features-rayTracingMaintenance1, pname:rayTracingMaintenance1>>, if
7764    the `apiext:VK_KHR_ray_tracing_maintenance1` extension is supported.
7765endif::VK_KHR_ray_tracing_maintenance1[]
7766ifdef::VK_EXT_color_write_enable[]
7767  * <<features-colorWriteEnable, pname:colorWriteEnable>>, if the
7768    `apiext:VK_EXT_color_write_enable` extension is supported.
7769endif::VK_EXT_color_write_enable[]
7770ifdef::VK_EXT_multisampled_render_to_single_sampled[]
7771  * <<features-multisampledRenderToSingleSampled,
7772    pname:multisampledRenderToSingleSampled>>, if the
7773    `apiext:VK_EXT_multisampled_render_to_single_sampled` extension is
7774    supported.
7775endif::VK_EXT_multisampled_render_to_single_sampled[]
7776ifdef::VK_EXT_image_compression_control[]
7777  * <<features-imageCompressionControl, pname:imageCompressionControl>>, if
7778    the `apiext:VK_EXT_image_compression_control` extension is supported.
7779ifdef::VK_EXT_image_compression_control_swapchain[]
7780  * <<features-imageCompressionControlSwapchain,
7781    pname:imageCompressionControlSwapchain>>, if the
7782    `apiext:VK_EXT_image_compression_control_swapchain` extension is
7783    supported.
7784endif::VK_EXT_image_compression_control_swapchain[]
7785endif::VK_EXT_image_compression_control[]
7786ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
7787  * <<features-shaderEarlyAndLateFragmentTests,
7788    pname:shaderEarlyAndLateFragmentTests>>, if the
7789    `apiext:VK_AMD_shader_early_and_late_fragment_tests` extension is
7790    supported.
7791endif::VK_AMD_shader_early_and_late_fragment_tests[]
7792ifdef::VK_EXT_non_seamless_cube_map[]
7793  * <<features-nonSeamlessCubeMap, pname:nonSeamlessCubeMap>>, if the
7794    `apiext:VK_EXT_non_seamless_cube_map` extension is supported.
7795endif::VK_EXT_non_seamless_cube_map[]
7796ifdef::VK_EXT_shader_module_identifier[]
7797  * <<features-shaderModuleIdentifier, pname:shaderModuleIdentifier>>, if
7798    `apiext:VK_EXT_shader_module_identifier` extension is supported.
7799endif::VK_EXT_shader_module_identifier[]
7800ifdef::VK_EXT_pipeline_robustness[]
7801  * <<features-pipelineRobustness, pname:pipelineRobustness>>, if the
7802    `apiext:VK_EXT_pipeline_robustness` extension is supported.
7803endif::VK_EXT_pipeline_robustness[]
7804ifdef::VK_QCOM_image_processing[]
7805  * <<features-textureSampleWeighted, pname:textureSampleWeighted>>,
7806    <<features-textureBlockMatch, pname:TextureBlockMatch>>, and
7807    <<features-textureBoxFilter, pname:TextureBoxFilter>> if
7808    `apiext:VK_QCOM_image_processing` extension is supported.
7809endif::VK_QCOM_image_processing[]
7810ifdef::VK_QCOM_image_processing2[]
7811  * <<features-textureBlockMatch2, pname:TextureBlockMatch2>> if
7812    `apiext:VK_QCOM_image_processing2` extension is supported.
7813endif::VK_QCOM_image_processing2[]
7814ifdef::VK_QCOM_tile_properties[]
7815  * <<features-tileProperties, pname:tileProperties>> if
7816    `apiext:VK_QCOM_tile_properties` extension is supported.
7817endif::VK_QCOM_tile_properties[]
7818ifdef::VK_EXT_attachment_feedback_loop_layout[]
7819  * <<features-attachmentFeedbackLoopLayout,
7820    pname:attachmentFeedbackLoopLayout>>, if the
7821    `apiext:VK_EXT_attachment_feedback_loop_layout` extension is supported.
7822endif::VK_EXT_attachment_feedback_loop_layout[]
7823ifdef::VK_EXT_depth_clamp_zero_one[]
7824  * <<features-depthClampZeroOne, pname:depthClampZeroOne>>, if the
7825    `apiext:VK_EXT_depth_clamp_zero_one` extension is supported.
7826endif::VK_EXT_depth_clamp_zero_one[]
7827ifdef::VK_EXT_device_fault[]
7828  * <<features-deviceFault, pname:deviceFault>>, if the
7829    `apiext:VK_EXT_device_fault` extension is supported.
7830endif::VK_EXT_device_fault[]
7831ifdef::VK_EXT_device_address_binding_report[]
7832  * <<features-reportAddressBinding, pname:reportAddressBinding>>, if the
7833    `apiext:VK_EXT_device_address_binding_report` extension is supported.
7834endif::VK_EXT_device_address_binding_report[]
7835ifdef::VK_EXT_opacity_micromap[]
7836  * <<features-micromap, pname:micromap>>, if the
7837    `apiext:VK_EXT_opacity_micromap` extension is supported.
7838endif::VK_EXT_opacity_micromap[]
7839ifdef::VK_EXT_frame_boundary[]
7840  * <<features-frameBoundary, pname:frameBoundary>>, if the
7841    `apiext:VK_EXT_frame_boundary` extension is supported.
7842endif::VK_EXT_frame_boundary[]
7843ifdef::VK_NV_displacement_micromap[]
7844  * <<features-displacementMicromap, pname:displacementMicromap>>, if the
7845    `apiext:VK_NV_displacement_micromap` extension is supported.
7846endif::VK_NV_displacement_micromap[]
7847ifdef::VK_EXT_pipeline_library_group_handles[]
7848  * <<features-pipelineLibraryGroupHandles,
7849    pname:pipelineLibraryGroupHandles>>, if the
7850    `apiext:VK_EXT_pipeline_library_group_handles` extension is supported.
7851endif::VK_EXT_pipeline_library_group_handles[]
7852ifdef::VK_EXT_swapchain_maintenance1[]
7853  * <<features-swapchainMaintenance1, pname:swapchainMaintenance1>>, if the
7854    `apiext:VK_EXT_swapchain_maintenance1` extension is supported.
7855endif::VK_EXT_swapchain_maintenance1[]
7856ifdef::VK_EXT_extended_dynamic_state3[]
7857  * <<features-tessellationShader, pname:tessellationShader>>, if the
7858    <<features-extendedDynamicState3TessellationDomainOrigin,
7859    pname:extendedDynamicState3TessellationDomainOrigin>> feature is
7860    supported.
7861  * <<features-depthClamp, pname:depthClamp>>, if the
7862    <<features-extendedDynamicState3DepthClampEnable,
7863    pname:extendedDynamicState3DepthClampEnable>> feature is supported.
7864  * <<features-fillModeNonSolid, pname:fillModeNonSolid>>, if the
7865    <<features-extendedDynamicState3PolygonMode,
7866    pname:extendedDynamicState3PolygonMode>> feature is supported.
7867  * <<features-alphaToOne, pname:alphaToOne>>, if the
7868    <<features-extendedDynamicState3AlphaToOneEnable,
7869    pname:extendedDynamicState3AlphaToOneEnable>> feature is supported.
7870  * <<features-logicOp, pname:logicOp>>, if the
7871    <<features-extendedDynamicState3LogicOpEnable,
7872    pname:extendedDynamicState3LogicOpEnable>> feature is supported.
7873ifdef::VK_EXT_transform_feedback[]
7874  * <<features-geometryStreams, pname:geometryStreams>>, if the
7875    <<features-extendedDynamicState3RasterizationStream,
7876    pname:extendedDynamicState3RasterizationStream>> feature is supported.
7877endif::VK_EXT_transform_feedback[]
7878ifdef::VK_EXT_conservative_rasterization[]
7879  * `apiext:VK_EXT_conservative_rasterization` extension, if the
7880    <<features-extendedDynamicState3ConservativeRasterizationMode,
7881    pname:extendedDynamicState3ConservativeRasterizationMode>> feature is
7882    supported.
7883  * `apiext:VK_EXT_conservative_rasterization` extension, if the
7884    <<features-extendedDynamicState3ExtraPrimitiveOverestimationSize,
7885    pname:extendedDynamicState3ExtraPrimitiveOverestimationSize>> feature is
7886    supported.
7887endif::VK_EXT_conservative_rasterization[]
7888ifdef::VK_EXT_sample_locations[]
7889  * `apiext:VK_EXT_sample_locations` extension, if the
7890    <<features-extendedDynamicState3SampleLocationsEnable,
7891    pname:extendedDynamicState3SampleLocationsEnable>> feature is supported.
7892endif::VK_EXT_sample_locations[]
7893ifdef::VK_EXT_blend_operation_advanced[]
7894  * `apiext:VK_EXT_blend_operation_advanced` extension, if the
7895    <<features-extendedDynamicState3ColorBlendAdvanced,
7896    pname:extendedDynamicState3ColorBlendAdvanced>> feature is supported.
7897endif::VK_EXT_blend_operation_advanced[]
7898ifdef::VK_EXT_provoking_vertex[]
7899  * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the
7900    <<features-extendedDynamicState3ProvokingVertexMode,
7901    pname:extendedDynamicState3ProvokingVertexMode>> feature is supported.
7902endif::VK_EXT_provoking_vertex[]
7903ifdef::VK_EXT_line_rasterization[]
7904  * `apiext:VK_EXT_line_rasterization` extension, if the
7905    <<features-extendedDynamicState3LineRasterizationMode,
7906    pname:extendedDynamicState3LineRasterizationMode>> feature is supported.
7907  * `apiext:VK_EXT_line_rasterization` extension, if the
7908    <<features-extendedDynamicState3LineStippleEnable,
7909    pname:extendedDynamicState3LineStippleEnable>> feature is supported.
7910endif::VK_EXT_line_rasterization[]
7911ifdef::VK_EXT_depth_clip_control[]
7912  * <<features-depthClipControl, pname:depthClipControl>>, if the
7913    <<features-extendedDynamicState3DepthClipNegativeOneToOne,
7914    pname:extendedDynamicState3DepthClipNegativeOneToOne>> feature is
7915    supported.
7916endif::VK_EXT_depth_clip_control[]
7917ifdef::VK_NV_clip_space_w_scaling[]
7918  * `apiext:VK_NV_clip_space_w_scaling` extension, if the
7919    <<features-extendedDynamicState3ViewportWScalingEnable,
7920    pname:extendedDynamicState3ViewportWScalingEnable>> feature is
7921    supported.
7922endif::VK_NV_clip_space_w_scaling[]
7923ifdef::VK_NV_viewport_swizzle[]
7924  * `apiext:VK_NV_viewport_swizzle` extension, if the
7925    <<features-extendedDynamicState3ViewportSwizzle,
7926    pname:extendedDynamicState3ViewportSwizzle>> feature is supported.
7927endif::VK_NV_viewport_swizzle[]
7928ifdef::VK_NV_fragment_coverage_to_color[]
7929  * `apiext:VK_NV_fragment_coverage_to_color` extension, if the
7930    <<features-extendedDynamicState3CoverageToColorEnable,
7931    pname:extendedDynamicState3CoverageToColorEnable>> feature is supported.
7932  * `apiext:VK_NV_fragment_coverage_to_color` extension, if the
7933    <<features-extendedDynamicState3CoverageToColorLocation,
7934    pname:extendedDynamicState3CoverageToColorLocation>> feature is
7935    supported.
7936endif::VK_NV_fragment_coverage_to_color[]
7937ifdef::VK_NV_framebuffer_mixed_samples[]
7938  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
7939    <<features-extendedDynamicState3CoverageModulationMode,
7940    pname:extendedDynamicState3CoverageModulationMode>> feature is
7941    supported.
7942  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
7943    <<features-extendedDynamicState3CoverageModulationTableEnable,
7944    pname:extendedDynamicState3CoverageModulationTableEnable>> feature is
7945    supported.
7946  * `apiext:VK_NV_framebuffer_mixed_samples` extension, if the
7947    <<features-extendedDynamicState3CoverageModulationTable,
7948    pname:extendedDynamicState3CoverageModulationTable>> feature is
7949    supported.
7950endif::VK_NV_framebuffer_mixed_samples[]
7951ifdef::VK_NV_coverage_reduction_mode[]
7952  * <<features-coverageReductionMode, pname:coverageReductionMode>>, if the
7953    <<features-extendedDynamicState3CoverageReductionMode,
7954    pname:extendedDynamicState3CoverageReductionMode>> feature is supported.
7955endif::VK_NV_coverage_reduction_mode[]
7956ifdef::VK_NV_representative_fragment_test[]
7957  * <<features-representativeFragmentTest,
7958    pname:representativeFragmentTest>>, if the
7959    <<features-extendedDynamicState3RepresentativeFragmentTestEnable,
7960    pname:extendedDynamicState3RepresentativeFragmentTestEnable>> feature is
7961    supported.
7962endif::VK_NV_representative_fragment_test[]
7963ifdef::VK_NV_shading_rate_image[]
7964  * <<features-shadingRateImage, pname:shadingRateImage>>, if the
7965    <<features-extendedDynamicState3ShadingRateImageEnable,
7966    pname:extendedDynamicState3ShadingRateImageEnable>> feature is
7967    supported.
7968endif::VK_NV_shading_rate_image[]
7969endif::VK_EXT_extended_dynamic_state3[]
7970ifdef::VK_QCOM_multiview_per_view_viewports[]
7971  * <<features-multiview-per-view-viewports,
7972    pname:multiviewPerViewViewports>>, if the
7973    `apiext:VK_QCOM_multiview_per_view_viewports` extension is supported.
7974endif::VK_QCOM_multiview_per_view_viewports[]
7975ifdef::VK_EXT_attachment_feedback_loop_dynamic_state[]
7976  * <<features-attachmentFeedbackLoopDynamicState,
7977    pname:attachmentFeedbackLoopDynamicState>>, if the
7978    `apiext:VK_EXT_attachment_feedback_loop_dynamic_state` extension is
7979    supported.
7980endif::VK_EXT_attachment_feedback_loop_dynamic_state[]
7981ifdef::VK_KHR_ray_tracing_position_fetch[]
7982  * <<features-rayTracingPositionFetch, pname:rayTracingPositionFetch>>, if
7983    the `apiext:VK_KHR_ray_tracing_position_fetch` extension is supported.
7984endif::VK_KHR_ray_tracing_position_fetch[]
7985ifdef::VK_EXT_shader_object[]
7986  * <<features-shaderObject, pname:shaderObject>>, if the
7987    `apiext:VK_EXT_shader_object` extension is supported.
7988endif::VK_EXT_shader_object[]
7989ifdef::VK_EXT_shader_tile_image[]
7990  * <<features-shaderTileImageColorReadAccess,
7991    pname:shaderTileImageColorReadAccess>>, if the
7992    `apiext:VK_EXT_shader_tile_image` extension is supported.
7993endif::VK_EXT_shader_tile_image[]
7994ifdef::VK_EXT_depth_bias_control[]
7995  * <<features-depthBiasControl, pname:depthBiasControl>>, if the
7996    `apiext:VK_EXT_depth_bias_control` extension is supported.
7997endif::VK_EXT_depth_bias_control[]
7998ifdef::VK_NV_device_generated_commands_compute[]
7999  * <<features-deviceGeneratedCompute, pname:deviceGeneratedCompute>>, if
8000    the `apiext:VK_NV_device_generated_commands_compute` extension is
8001    supported.
8002endif::VK_NV_device_generated_commands_compute[]
8003ifdef::VK_AMDX_shader_enqueue[]
8004  * <<features-shaderEnqueue, pname:shaderEnqueue>> if the
8005    `apiext:VK_AMDX_shader_enqueue` extension is supported.
8006endif::VK_AMDX_shader_enqueue[]
8007ifdef::VK_KHR_cooperative_matrix[]
8008  * <<features-cooperativeMatrix, pname:cooperativeMatrix>> if the
8009    `apiext:VK_KHR_cooperative_matrix` extension is supported.
8010endif::VK_KHR_cooperative_matrix[]
8011ifdef::VK_QCOM_ycbcr_degamma[]
8012  * <<features-ycbcr-degamma,pname:ycbcrDegamma>>, if the
8013    `apiext:VK_QCOM_ycbcr_degamma` extension is supported.
8014endif::VK_QCOM_ycbcr_degamma[]
8015ifdef::VK_NV_descriptor_pool_overallocation[]
8016  * <<features-descriptorPoolOverallocation,pname:descriptorPoolOverallocation>>,
8017    if the `apiext:VK_NV_descriptor_pool_overallocation` extension is
8018    supported.
8019endif::VK_NV_descriptor_pool_overallocation[]
8020ifdef::VK_ANDROID_external_format_resolve[]
8021  * <<features-externalFormatResolve, pname:externalFormatResolve>>, if the
8022    `apiext:VK_ANDROID_external_format_resolve` extension is supported.
8023endif::VK_ANDROID_external_format_resolve[]
8024ifdef::VK_NV_extended_sparse_address_space[]
8025  * <<features-extendedSparseAddressSpace,
8026    pname:extendedSparseAddressSpace>>, if the
8027    `apiext:VK_NV_extended_sparse_address_space` extension is supported.
8028endif::VK_NV_extended_sparse_address_space[]
8029ifdef::VK_ARM_scheduling_controls[]
8030  * <<features-schedulingControls,pname:schedulingControls>>, if the
8031    `apiext:VK_ARM_scheduling_controls` extension is supported.
8032endif::VK_ARM_scheduling_controls[]
8033
8034All other features defined in the Specification are optional:.
8035
8036
8037ifdef::VK_VERSION_1_3[]
8038[[profile-features]]
8039== Profile Features
8040
8041
8042[[profile-features-roadmap-2022]]
8043=== Roadmap 2022
8044
8045Implementations that claim support for the <<roadmap-2022, Roadmap 2022>>
8046profile must: support the following features:
8047
8048  * <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>>
8049  * <<features-imageCubeArray, pname:imageCubeArray>>
8050  * <<features-independentBlend, pname:independentBlend>>
8051  * <<features-sampleRateShading, pname:sampleRateShading>>
8052  * <<features-drawIndirectFirstInstance, pname:drawIndirectFirstInstance>>
8053  * <<features-depthClamp, pname:depthClamp>>
8054  * <<features-depthBiasClamp, pname:depthBiasClamp>>
8055  * <<features-samplerAnisotropy, pname:samplerAnisotropy>>
8056  * <<features-occlusionQueryPrecise, pname:occlusionQueryPrecise>>
8057  * <<features-fragmentStoresAndAtomics, pname:fragmentStoresAndAtomics>>
8058  * <<features-shaderStorageImageExtendedFormats,
8059    pname:shaderStorageImageExtendedFormats>>
8060  * <<features-shaderUniformBufferArrayDynamicIndexing,
8061    pname:shaderUniformBufferArrayDynamicIndexing>>
8062  * <<features-shaderSampledImageArrayDynamicIndexing,
8063    pname:shaderSampledImageArrayDynamicIndexing>>
8064  * <<features-shaderStorageBufferArrayDynamicIndexing,
8065    pname:shaderStorageBufferArrayDynamicIndexing>>
8066  * <<features-shaderStorageImageArrayDynamicIndexing,
8067    pname:shaderStorageImageArrayDynamicIndexing>>
8068  * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>
8069  * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>
8070  * <<features-descriptorIndexing, pname:descriptorIndexing>>
8071  * <<features-shaderUniformTexelBufferArrayDynamicIndexing,
8072    pname:shaderUniformTexelBufferArrayDynamicIndexing>>
8073  * <<features-shaderStorageTexelBufferArrayDynamicIndexing,
8074    pname:shaderStorageTexelBufferArrayDynamicIndexing>>
8075  * <<features-shaderUniformBufferArrayNonUniformIndexing,
8076    pname:shaderUniformBufferArrayNonUniformIndexing>>
8077  * <<features-shaderSampledImageArrayNonUniformIndexing,
8078    pname:shaderSampledImageArrayNonUniformIndexing>>
8079  * <<features-shaderStorageBufferArrayNonUniformIndexing,
8080    pname:shaderStorageBufferArrayNonUniformIndexing>>
8081  * <<features-shaderStorageImageArrayNonUniformIndexing,
8082    pname:shaderStorageImageArrayNonUniformIndexing>>
8083  * <<features-shaderUniformTexelBufferArrayNonUniformIndexing,
8084    pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
8085  * <<features-shaderStorageTexelBufferArrayNonUniformIndexing,
8086    pname:shaderStorageTexelBufferArrayNonUniformIndexing>>
8087  * <<features-descriptorBindingSampledImageUpdateAfterBind,
8088    pname:descriptorBindingSampledImageUpdateAfterBind>>
8089  * <<features-descriptorBindingStorageImageUpdateAfterBind,
8090    pname:descriptorBindingStorageImageUpdateAfterBind>>
8091  * <<features-descriptorBindingStorageBufferUpdateAfterBind,
8092    pname:descriptorBindingStorageBufferUpdateAfterBind>>
8093  * <<features-descriptorBindingUniformTexelBufferUpdateAfterBind,
8094    pname:descriptorBindingUniformTexelBufferUpdateAfterBind>>
8095  * <<features-descriptorBindingStorageTexelBufferUpdateAfterBind,
8096    pname:descriptorBindingStorageTexelBufferUpdateAfterBind>>
8097  * <<features-descriptorBindingUpdateUnusedWhilePending,
8098    pname:descriptorBindingUpdateUnusedWhilePending>>
8099  * <<features-descriptorBindingPartiallyBound,
8100    pname:descriptorBindingPartiallyBound>>
8101  * <<features-descriptorBindingVariableDescriptorCount,
8102    pname:descriptorBindingVariableDescriptorCount>>
8103  * <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
8104  * <<features-scalarBlockLayout, pname:scalarBlockLayout>>
8105endif::VK_VERSION_1_3[]
8106