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