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