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