1// Copyright 2015-2021 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[width="100%",options="header"] 63|==== 64| Extension | Feature(s) 65ifdef::VK_VERSION_1_2[] 66ifdef::VK_KHR_shader_draw_parameters[] 67| `apiext:VK_KHR_shader_draw_parameters` | <<features-shaderDrawParameters,pname:shaderDrawParameters>> 68endif::VK_KHR_shader_draw_parameters[] 69ifdef::VK_KHR_draw_indirect_count[] 70| `apiext:VK_KHR_draw_indirect_count` | <<features-drawIndirectCount,pname:drawIndirectCount>> 71endif::VK_KHR_draw_indirect_count[] 72ifdef::VK_KHR_sampler_mirror_clamp_to_edge[] 73| `apiext:VK_KHR_sampler_mirror_clamp_to_edge` | <<features-samplerMirrorClampToEdge,pname:samplerMirrorClampToEdge>> 74endif::VK_KHR_sampler_mirror_clamp_to_edge[] 75ifdef::VK_EXT_descriptor_indexing[] 76| `apiext:VK_EXT_descriptor_indexing` | <<features-descriptorIndexing,pname:descriptorIndexing>> 77endif::VK_EXT_descriptor_indexing[] 78ifdef::VK_EXT_sampler_filter_minmax[] 79| `apiext:VK_EXT_sampler_filter_minmax` | <<features-samplerFilterMinmax,pname:samplerFilterMinmax>> 80endif::VK_EXT_sampler_filter_minmax[] 81ifdef::VK_EXT_shader_viewport_index_layer[] 82| `apiext:VK_EXT_shader_viewport_index_layer` | <<features-shaderOutputViewportIndex,pname:shaderOutputViewportIndex>>, <<features-shaderOutputLayer,pname:shaderOutputLayer>> 83endif::VK_EXT_shader_viewport_index_layer[] 84endif::VK_VERSION_1_2[] 85|==== 86 87[open,refpage='vkGetPhysicalDeviceFeatures',desc='Reports capabilities of a physical device',type='protos'] 88-- 89To query supported features, call: 90 91include::{generated}/api/protos/vkGetPhysicalDeviceFeatures.txt[] 92 93 * pname:physicalDevice is the physical device from which to query the 94 supported features. 95 * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures 96 structure in which the physical device features are returned. 97 For each feature, a value of ename:VK_TRUE specifies that the feature is 98 supported on this physical device, and ename:VK_FALSE specifies that the 99 feature is not supported. 100 101include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures.txt[] 102-- 103 104Fine-grained features used by a logical device must: be enabled at 105sname:VkDevice creation time. 106If a feature is enabled that the physical device does not support, 107sname:VkDevice creation will fail and return 108ename:VK_ERROR_FEATURE_NOT_PRESENT. 109 110The fine-grained features are enabled by passing a pointer to the 111sname:VkPhysicalDeviceFeatures structure via the pname:pEnabledFeatures 112member of the slink:VkDeviceCreateInfo structure that is passed into the 113fname:vkCreateDevice call. 114If a member of pname:pEnabledFeatures is set to ename:VK_TRUE or 115ename:VK_FALSE, then the device will be created with the indicated feature 116enabled or disabled, respectively. 117ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 118Features can: also be enabled by using the slink:VkPhysicalDeviceFeatures2 119structure. 120endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 121 122If an application wishes to enable all features supported by a device, it 123can: simply pass in the sname:VkPhysicalDeviceFeatures structure that was 124previously returned by fname:vkGetPhysicalDeviceFeatures. 125To disable an individual feature, the application can: set the desired 126member to ename:VK_FALSE in the same structure. 127Setting pname:pEnabledFeatures to `NULL` 128ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 129and not including a slink:VkPhysicalDeviceFeatures2 in the pname:pNext chain 130of slink:VkDeviceCreateInfo 131endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 132is equivalent to setting all members of the structure to ename:VK_FALSE. 133 134[NOTE] 135.Note 136==== 137Some features, such as pname:robustBufferAccess, may: incur a runtime 138performance cost. 139Application writers should: carefully consider the implications of enabling 140all supported features. 141==== 142 143ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 144[open,refpage='vkGetPhysicalDeviceFeatures2',desc='Reports capabilities of a physical device',type='protos'] 145-- 146To query supported features defined by the core or extensions, call: 147 148ifdef::VK_VERSION_1_1[] 149include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2.txt[] 150endif::VK_VERSION_1_1[] 151 152ifdef::VK_VERSION_1_1+VK_KHR_get_physical_device_properties2[or the equivalent command] 153 154ifdef::VK_KHR_get_physical_device_properties2[] 155include::{generated}/api/protos/vkGetPhysicalDeviceFeatures2KHR.txt[] 156endif::VK_KHR_get_physical_device_properties2[] 157 158 * pname:physicalDevice is the physical device from which to query the 159 supported features. 160 * pname:pFeatures is a pointer to a slink:VkPhysicalDeviceFeatures2 161 structure in which the physical device features are returned. 162 163Each structure in pname:pFeatures and its pname:pNext chain contains members 164corresponding to fine-grained features. 165fname:vkGetPhysicalDeviceFeatures2 writes each member to a boolean value 166indicating whether that feature is supported. 167 168include::{generated}/validity/protos/vkGetPhysicalDeviceFeatures2.txt[] 169-- 170 171[open,refpage='VkPhysicalDeviceFeatures2',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs'] 172-- 173The sname:VkPhysicalDeviceFeatures2 structure is defined as: 174 175include::{generated}/api/structs/VkPhysicalDeviceFeatures2.txt[] 176 177ifdef::VK_KHR_get_physical_device_properties2[] 178or the equivalent 179 180include::{generated}/api/structs/VkPhysicalDeviceFeatures2KHR.txt[] 181endif::VK_KHR_get_physical_device_properties2[] 182 183 * pname:sType is the type of this structure. 184 * pname:pNext is `NULL` or a pointer to a structure extending this 185 structure. 186 * pname:features is a slink:VkPhysicalDeviceFeatures structure describing 187 the fine-grained features of the Vulkan 1.0 API. 188 189The pname:pNext chain of this structure is used to extend the structure with 190features defined by extensions. 191This structure can: be used in flink:vkGetPhysicalDeviceFeatures2 or can: be 192included in the pname:pNext chain of a slink:VkDeviceCreateInfo structure, 193in which case it controls which features are enabled in the device in lieu 194of pname:pEnabledFeatures. 195 196include::{generated}/validity/structs/VkPhysicalDeviceFeatures2.txt[] 197-- 198endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 199 200[open,refpage='VkPhysicalDeviceFeatures',desc='Structure describing the fine-grained features that can be supported by an implementation',type='structs'] 201-- 202The sname:VkPhysicalDeviceFeatures structure is defined as: 203 204include::{generated}/api/structs/VkPhysicalDeviceFeatures.txt[] 205 206This structure describes the following features: 207 208 * [[features-robustBufferAccess]] pname:robustBufferAccess specifies that 209 accesses to buffers are bounds-checked against the range of the buffer 210 descriptor (as determined by sname:VkDescriptorBufferInfo::pname:range, 211 slink:VkBufferViewCreateInfo::pname:range, or the size of the buffer). 212 Out of bounds accesses must: not cause application termination, and the 213 effects of shader loads, stores, and atomics must: conform to an 214 implementation-dependent behavior as described below. 215 ** A buffer access is considered to be out of bounds if any of the 216 following are true: 217 *** The pointer was formed by code:OpImageTexelPointer and the coordinate 218 is less than zero or greater than or equal to the number of whole 219 elements in the bound range. 220 *** The pointer was not formed by code:OpImageTexelPointer and the object 221 pointed to is not wholly contained within the bound range. 222ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[] 223 This includes accesses performed via _variable pointers_ where the 224 buffer descriptor being accessed cannot be statically determined. 225 Uninitialized pointers and pointers equal to code:OpConstantNull are 226 treated as pointing to a zero-sized object, so all accesses through 227 such pointers are considered to be out of bounds. 228endif::VK_VERSION_1_1,VK_KHR_variable_pointers[] 229ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 230 Buffer accesses through buffer device addresses are not 231 bounds-checked. 232endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 233ifdef::VK_NV_cooperative_matrix[] 234 If the 235 <<features-cooperativeMatrixRobustBufferAccess,pname:cooperativeMatrixRobustBufferAccess>> 236 feature is not enabled, then accesses using 237 code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV 238 may: not be bounds-checked. 239endif::VK_NV_cooperative_matrix[] 240+ 241[NOTE] 242.Note 243==== 244If a SPIR-V code:OpLoad instruction loads a structure and the tail end of 245the structure is out of bounds, then all members of the structure are 246considered out of bounds even if the members at the end are not statically 247used. 248==== 249 250 *** If 251ifdef::VK_EXT_robustness2[] 252 <<features-robustBufferAccess2,pname:robustBufferAccess2>> is not 253 enabled and 254endif::VK_EXT_robustness2[] 255 any buffer access is determined to be out of bounds, then any other 256 access of the same type (load, store, or atomic) to the same buffer 257 that accesses an address less than 16 bytes away from the out of 258 bounds address may: also be considered out of bounds. 259 *** If the access is a load that reads from the same memory locations as a 260 prior store in the same shader invocation, with no other intervening 261 accesses to the same memory locations in that shader invocation, then 262 the result of the load may: be the value stored by the store 263 instruction, even if the access is out of bounds. 264 If the load is code:Volatile, then an out of bounds load must: return 265 the appropriate out of bounds value. 266ifdef::VK_EXT_robustness2[] 267 ** Accesses to descriptors written with a dlink:VK_NULL_HANDLE resource or 268 view are not considered to be out of bounds. 269 Instead, each type of descriptor access defines a specific behavior for 270 accesses to a null descriptor. 271endif::VK_EXT_robustness2[] 272 ** Out-of-bounds buffer loads will return any of the following values: 273ifdef::VK_EXT_robustness2[] 274 *** If the access is to a uniform buffer and 275 <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled, 276 loads of offsets between the end of the descriptor range and the end 277 of the descriptor range rounded up to a multiple of 278 <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>> 279 bytes must: return either zero values or the contents of the memory at 280 the offset being loaded. 281 Loads of offsets past the descriptor range rounded up to a multiple of 282 <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>> 283 bytes must: return zero values. 284 *** If the access is to a storage buffer and 285 <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled, 286 loads of offsets between the end of the descriptor range and the end 287 of the descriptor range rounded up to a multiple of 288 <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>> 289 bytes must: return either zero values or the contents of the memory at 290 the offset being loaded. 291 Loads of offsets past the descriptor range rounded up to a multiple of 292 <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>> 293 bytes must: return zero values. 294 Similarly, stores to addresses between the end of the descriptor range 295 and the end of the descriptor range rounded up to a multiple of 296 <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>> 297 bytes may: be discarded. 298 *** Non-atomic accesses to storage buffers that are a multiple of 32 bits 299 may: be decomposed into 32-bit accesses that are individually 300 bounds-checked. 301 *** If the access is to an index buffer and 302 <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled, 303 zero values must: be returned. 304 *** If the access is to a uniform texel buffer or storage texel buffer and 305 <<features-robustBufferAccess2,pname:robustBufferAccess2>> is enabled, 306 zero values must: be returned, and then 307 <<textures-conversion-to-rgba,Conversion to RGBA>> is applied based on 308 the buffer view's format. 309endif::VK_EXT_robustness2[] 310 *** Values from anywhere within the memory range(s) bound to the buffer 311 (possibly including bytes of memory past the end of the buffer, up to 312 the end of the bound range). 313 *** Zero values, or [eq]#(0,0,0,x)# vectors for vector reads where x is a 314 valid value represented in the type of the vector components and may: 315 be any of: 316 **** 0, 1, or the maximum representable positive integer value, for signed 317 or unsigned integer components 318 **** 0.0 or 1.0, for floating-point components 319 ** Out-of-bounds writes may: modify values within the memory range(s) 320 bound to the buffer, but must: not modify any other memory. 321ifdef::VK_EXT_robustness2[] 322 *** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is 323 enabled, out of bounds writes must: not modify any memory. 324endif::VK_EXT_robustness2[] 325 ** Out-of-bounds atomics may: modify values within the memory range(s) 326 bound to the buffer, but must: not modify any other memory, and return 327 an undefined: value. 328ifdef::VK_EXT_robustness2[] 329 *** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is 330 enabled, out of bounds atomics must: not modify any memory, and return 331 an undefined: value. 332 ** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is 333 disabled, vertex 334endif::VK_EXT_robustness2[] 335ifndef::VK_EXT_robustness2[] 336 ** Vertex 337endif::VK_EXT_robustness2[] 338 input attributes are considered out of bounds if the offset of the 339 attribute in the bound vertex buffer range plus the size of the 340 attribute is greater than either: 341+ 342 *** code:vertexBufferRangeSize, if [eq]#code:bindingStride == 0#; or 343 *** [eq]#(code:vertexBufferRangeSize - (code:vertexBufferRangeSize % 344 code:bindingStride))# 345+ 346where code:vertexBufferRangeSize is the byte size of the memory range bound 347to the vertex buffer binding and code:bindingStride is the byte stride of 348the corresponding vertex input binding. 349Further, if any vertex input attribute using a specific vertex input binding 350is out of bounds, then all vertex input attributes using that vertex input 351binding for that vertex shader invocation are considered out of bounds. 352 *** If a vertex input attribute is out of bounds, it will be assigned one 353 of the following values: 354 **** Values from anywhere within the memory range(s) bound to the buffer, 355 converted according to the format of the attribute. 356 **** Zero values, format converted according to the format of the 357 attribute. 358 **** Zero values, or [eq]#(0,0,0,x)# vectors, as described above. 359ifdef::VK_EXT_robustness2[] 360 ** If <<features-robustBufferAccess2,pname:robustBufferAccess2>> is 361 enabled, vertex input attributes are considered out of bounds if the 362 offset of the attribute in the bound vertex buffer range plus the size 363 of the attribute is greater than the byte size of the memory range 364 bound to the vertex buffer binding. 365 *** If a vertex input attribute is out of bounds, the 366 <<fxvertex-input-extraction,raw data>> extracted are zero values, and 367 missing G, B, or A components are <<fxvertex-input-extraction,filled 368 with [eq]#(0,0,1)#>>. 369endif::VK_EXT_robustness2[] 370 ** If pname:robustBufferAccess is not enabled, applications must: not 371 perform out of bounds accesses. 372 * [[features-fullDrawIndexUint32]] pname:fullDrawIndexUint32 specifies the 373 full 32-bit range of indices is supported for indexed draw calls when 374 using a elink:VkIndexType of ename:VK_INDEX_TYPE_UINT32. 375 pname:maxDrawIndexedIndexValue is the maximum index value that may: be 376 used (aside from the primitive restart index, which is always 2^32^-1 377 when the elink:VkIndexType is ename:VK_INDEX_TYPE_UINT32). 378 If this feature is supported, pname:maxDrawIndexedIndexValue must: be 379 2^32^-1; otherwise it must: be no smaller than 2^24^-1. 380 See <<limits-maxDrawIndexedIndexValue,maxDrawIndexedIndexValue>>. 381 * [[features-imageCubeArray]] pname:imageCubeArray specifies whether image 382 views with a elink:VkImageViewType of 383 ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY can: be created, and that the 384 corresponding code:SampledCubeArray and code:ImageCubeArray SPIR-V 385 capabilities can: be used in shader code. 386 * [[features-independentBlend]] pname:independentBlend specifies whether 387 the sname:VkPipelineColorBlendAttachmentState settings are controlled 388 independently per-attachment. 389 If this feature is not enabled, the 390 sname:VkPipelineColorBlendAttachmentState settings for all color 391 attachments must: be identical. 392 Otherwise, a different sname:VkPipelineColorBlendAttachmentState can: be 393 provided for each bound color attachment. 394 * [[features-geometryShader]] pname:geometryShader specifies whether 395 geometry shaders are supported. 396 If this feature is not enabled, the ename:VK_SHADER_STAGE_GEOMETRY_BIT 397 and ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT enum values must: not be 398 used. 399 This also specifies whether shader modules can: declare the 400 code:Geometry capability. 401 * [[features-tessellationShader]] pname:tessellationShader specifies 402 whether tessellation control and evaluation shaders are supported. 403 If this feature is not enabled, the 404 ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, 405 ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, 406 ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, 407 ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, and 408 ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO enum 409 values must: not be used. 410 This also specifies whether shader modules can: declare the 411 code:Tessellation capability. 412 * [[features-sampleRateShading]] pname:sampleRateShading specifies whether 413 <<primsrast-sampleshading,Sample Shading>> and multisample interpolation 414 are supported. 415 If this feature is not enabled, the pname:sampleShadingEnable member of 416 the slink:VkPipelineMultisampleStateCreateInfo structure must: be set to 417 ename:VK_FALSE and the pname:minSampleShading member is ignored. 418 This also specifies whether shader modules can: declare the 419 code:SampleRateShading capability. 420 * [[features-dualSrcBlend]] pname:dualSrcBlend specifies whether blend 421 operations which take two sources are supported. 422 If this feature is not enabled, the ename:VK_BLEND_FACTOR_SRC1_COLOR, 423 ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, 424 ename:VK_BLEND_FACTOR_SRC1_ALPHA, and 425 ename:VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA enum values must: not be used 426 as source or destination blending factors. 427 See <<framebuffer-dsb>>. 428 * [[features-logicOp]] pname:logicOp specifies whether logic operations 429 are supported. 430 If this feature is not enabled, the pname:logicOpEnable member of the 431 slink:VkPipelineColorBlendStateCreateInfo structure must: be set to 432 ename:VK_FALSE, and the pname:logicOp member is ignored. 433 * [[features-multiDrawIndirect]] pname:multiDrawIndirect specifies whether 434 multiple draw indirect is supported. 435 If this feature is not enabled, the pname:drawCount parameter to the 436 fname:vkCmdDrawIndirect and fname:vkCmdDrawIndexedIndirect commands 437 must: be 0 or 1. 438 The pname:maxDrawIndirectCount member of the 439 sname:VkPhysicalDeviceLimits structure must: also be 1 if this feature 440 is not supported. 441 See <<limits-maxDrawIndirectCount,maxDrawIndirectCount>>. 442 * [[features-drawIndirectFirstInstance]] pname:drawIndirectFirstInstance 443 specifies whether indirect drawing calls support the pname:firstInstance 444 parameter. 445 If this feature is not enabled, the pname:firstInstance member of all 446 sname:VkDrawIndirectCommand and sname:VkDrawIndexedIndirectCommand 447 structures that are provided to the fname:vkCmdDrawIndirect and 448 fname:vkCmdDrawIndexedIndirect commands must: be 0. 449 * [[features-depthClamp]] pname:depthClamp specifies whether depth 450 clamping is supported. 451 If this feature is not enabled, the pname:depthClampEnable member of the 452 slink:VkPipelineRasterizationStateCreateInfo structure must: be set to 453 ename:VK_FALSE. 454 Otherwise, setting pname:depthClampEnable to ename:VK_TRUE will enable 455 depth clamping. 456 * [[features-depthBiasClamp]] pname:depthBiasClamp specifies whether depth 457 bias clamping is supported. 458 If this feature is not enabled, the pname:depthBiasClamp member of the 459 slink:VkPipelineRasterizationStateCreateInfo structure must: be set to 460 0.0 unless the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is 461 enabled, and the pname:depthBiasClamp parameter to 462 fname:vkCmdSetDepthBias must: be set to 0.0. 463 * [[features-fillModeNonSolid]] pname:fillModeNonSolid specifies whether 464 point and wireframe fill modes are supported. 465 If this feature is not enabled, the ename:VK_POLYGON_MODE_POINT and 466 ename:VK_POLYGON_MODE_LINE enum values must: not be used. 467 * [[features-depthBounds]] pname:depthBounds specifies whether depth 468 bounds tests are supported. 469 If this feature is not enabled, the pname:depthBoundsTestEnable member 470 of the slink:VkPipelineDepthStencilStateCreateInfo structure must: be 471 set to ename:VK_FALSE. 472 When pname:depthBoundsTestEnable is set to ename:VK_FALSE, the 473 pname:minDepthBounds and pname:maxDepthBounds members of the 474 slink:VkPipelineDepthStencilStateCreateInfo structure are ignored. 475 * [[features-wideLines]] pname:wideLines specifies whether lines with 476 width other than 1.0 are supported. 477 If this feature is not enabled, the pname:lineWidth member of the 478 slink:VkPipelineRasterizationStateCreateInfo structure must: be set to 479 1.0 unless the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is 480 enabled, and the pname:lineWidth parameter to fname:vkCmdSetLineWidth 481 must: be set to 1.0. 482 When this feature is supported, the range and granularity of supported 483 line widths are indicated by the pname:lineWidthRange and 484 pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits 485 structure, respectively. 486 * [[features-largePoints]] pname:largePoints specifies whether points with 487 size greater than 1.0 are supported. 488 If this feature is not enabled, only a point size of 1.0 written by a 489 shader is supported. 490 The range and granularity of supported point sizes are indicated by the 491 pname:pointSizeRange and pname:pointSizeGranularity members of the 492 sname:VkPhysicalDeviceLimits structure, respectively. 493 * [[features-alphaToOne]] pname:alphaToOne specifies whether the 494 implementation is able to replace the alpha value of the fragment shader 495 color output in the <<fragops-covg, Multisample Coverage>> fragment 496 operation. 497 If this feature is not enabled, then the pname:alphaToOneEnable member 498 of the slink:VkPipelineMultisampleStateCreateInfo structure must: be set 499 to ename:VK_FALSE. 500 Otherwise setting pname:alphaToOneEnable to ename:VK_TRUE will enable 501 alpha-to-one behavior. 502 * [[features-multiViewport]] pname:multiViewport specifies whether more 503 than one viewport is supported. 504 If this feature is not enabled: 505 ** The pname:viewportCount and pname:scissorCount members of the 506 slink:VkPipelineViewportStateCreateInfo structure must: be set to 1. 507 ** The pname:firstViewport and pname:viewportCount parameters to the 508 fname:vkCmdSetViewport command must: be set to 0 and 1, respectively. 509 ** The pname:firstScissor and pname:scissorCount parameters to the 510 fname:vkCmdSetScissor command must: be set to 0 and 1, respectively. 511ifdef::VK_NV_scissor_exclusive[] 512 ** The pname:exclusiveScissorCount member of the 513 slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure 514 must: be set to 0 or 1. 515 ** The pname:firstExclusiveScissor and pname:exclusiveScissorCount 516 parameters to the fname:vkCmdSetExclusiveScissorNV command must: be set 517 to 0 and 1, respectively. 518endif::VK_NV_scissor_exclusive[] 519 * [[features-samplerAnisotropy]] pname:samplerAnisotropy specifies whether 520 anisotropic filtering is supported. 521 If this feature is not enabled, the pname:anisotropyEnable member of the 522 slink:VkSamplerCreateInfo structure must: be ename:VK_FALSE. 523 * [[features-textureCompressionETC2]] pname:textureCompressionETC2 524 specifies whether all of the ETC2 and EAC compressed texture formats are 525 supported. 526 If this feature is enabled, then the 527 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 528 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 529 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: 530 be supported in pname:optimalTilingFeatures for the following formats: 531+ 532 ** ename:VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK 533 ** ename:VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK 534 ** ename:VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK 535 ** ename:VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK 536 ** ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK 537 ** ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK 538 ** ename:VK_FORMAT_EAC_R11_UNORM_BLOCK 539 ** ename:VK_FORMAT_EAC_R11_SNORM_BLOCK 540 ** ename:VK_FORMAT_EAC_R11G11_UNORM_BLOCK 541 ** ename:VK_FORMAT_EAC_R11G11_SNORM_BLOCK 542+ 543To query for additional properties, or if the feature is not enabled, 544flink:vkGetPhysicalDeviceFormatProperties and 545flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for 546supported properties of individual formats as normal. 547 548 * [[features-textureCompressionASTC_LDR]] pname:textureCompressionASTC_LDR 549 specifies whether all of the ASTC LDR compressed texture formats are 550 supported. 551 If this feature is enabled, then the 552 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 553 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 554 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: 555 be supported in pname:optimalTilingFeatures for the following formats: 556+ 557 ** ename:VK_FORMAT_ASTC_4x4_UNORM_BLOCK 558 ** ename:VK_FORMAT_ASTC_4x4_SRGB_BLOCK 559 ** ename:VK_FORMAT_ASTC_5x4_UNORM_BLOCK 560 ** ename:VK_FORMAT_ASTC_5x4_SRGB_BLOCK 561 ** ename:VK_FORMAT_ASTC_5x5_UNORM_BLOCK 562 ** ename:VK_FORMAT_ASTC_5x5_SRGB_BLOCK 563 ** ename:VK_FORMAT_ASTC_6x5_UNORM_BLOCK 564 ** ename:VK_FORMAT_ASTC_6x5_SRGB_BLOCK 565 ** ename:VK_FORMAT_ASTC_6x6_UNORM_BLOCK 566 ** ename:VK_FORMAT_ASTC_6x6_SRGB_BLOCK 567 ** ename:VK_FORMAT_ASTC_8x5_UNORM_BLOCK 568 ** ename:VK_FORMAT_ASTC_8x5_SRGB_BLOCK 569 ** ename:VK_FORMAT_ASTC_8x6_UNORM_BLOCK 570 ** ename:VK_FORMAT_ASTC_8x6_SRGB_BLOCK 571 ** ename:VK_FORMAT_ASTC_8x8_UNORM_BLOCK 572 ** ename:VK_FORMAT_ASTC_8x8_SRGB_BLOCK 573 ** ename:VK_FORMAT_ASTC_10x5_UNORM_BLOCK 574 ** ename:VK_FORMAT_ASTC_10x5_SRGB_BLOCK 575 ** ename:VK_FORMAT_ASTC_10x6_UNORM_BLOCK 576 ** ename:VK_FORMAT_ASTC_10x6_SRGB_BLOCK 577 ** ename:VK_FORMAT_ASTC_10x8_UNORM_BLOCK 578 ** ename:VK_FORMAT_ASTC_10x8_SRGB_BLOCK 579 ** ename:VK_FORMAT_ASTC_10x10_UNORM_BLOCK 580 ** ename:VK_FORMAT_ASTC_10x10_SRGB_BLOCK 581 ** ename:VK_FORMAT_ASTC_12x10_UNORM_BLOCK 582 ** ename:VK_FORMAT_ASTC_12x10_SRGB_BLOCK 583 ** ename:VK_FORMAT_ASTC_12x12_UNORM_BLOCK 584 ** ename:VK_FORMAT_ASTC_12x12_SRGB_BLOCK 585+ 586To query for additional properties, or if the feature is not enabled, 587flink:vkGetPhysicalDeviceFormatProperties and 588flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for 589supported properties of individual formats as normal. 590 591 * [[features-textureCompressionBC]] pname:textureCompressionBC specifies 592 whether all of the BC compressed texture formats are supported. 593 If this feature is enabled, then the 594 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 595 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 596 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: 597 be supported in pname:optimalTilingFeatures for the following formats: 598+ 599 ** ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK 600 ** ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK 601 ** ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK 602 ** ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK 603 ** ename:VK_FORMAT_BC2_UNORM_BLOCK 604 ** ename:VK_FORMAT_BC2_SRGB_BLOCK 605 ** ename:VK_FORMAT_BC3_UNORM_BLOCK 606 ** ename:VK_FORMAT_BC3_SRGB_BLOCK 607 ** ename:VK_FORMAT_BC4_UNORM_BLOCK 608 ** ename:VK_FORMAT_BC4_SNORM_BLOCK 609 ** ename:VK_FORMAT_BC5_UNORM_BLOCK 610 ** ename:VK_FORMAT_BC5_SNORM_BLOCK 611 ** ename:VK_FORMAT_BC6H_UFLOAT_BLOCK 612 ** ename:VK_FORMAT_BC6H_SFLOAT_BLOCK 613 ** ename:VK_FORMAT_BC7_UNORM_BLOCK 614 ** ename:VK_FORMAT_BC7_SRGB_BLOCK 615+ 616To query for additional properties, or if the feature is not enabled, 617flink:vkGetPhysicalDeviceFormatProperties and 618flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for 619supported properties of individual formats as normal. 620 621 * [[features-occlusionQueryPrecise]] pname:occlusionQueryPrecise specifies 622 whether occlusion queries returning actual sample counts are supported. 623 Occlusion queries are created in a sname:VkQueryPool by specifying the 624 pname:queryType of ename:VK_QUERY_TYPE_OCCLUSION in the 625 slink:VkQueryPoolCreateInfo structure which is passed to 626 fname:vkCreateQueryPool. 627 If this feature is enabled, queries of this type can: enable 628 ename:VK_QUERY_CONTROL_PRECISE_BIT in the pname:flags parameter to 629 fname:vkCmdBeginQuery. 630 If this feature is not supported, the implementation supports only 631 boolean occlusion queries. 632 When any samples are passed, boolean queries will return a non-zero 633 result value, otherwise a result value of zero is returned. 634 When this feature is enabled and ename:VK_QUERY_CONTROL_PRECISE_BIT is 635 set, occlusion queries will report the actual number of samples passed. 636 * [[features-pipelineStatisticsQuery]] pname:pipelineStatisticsQuery 637 specifies whether the pipeline statistics queries are supported. 638 If this feature is not enabled, queries of type 639 ename:VK_QUERY_TYPE_PIPELINE_STATISTICS cannot: be created, and none of 640 the elink:VkQueryPipelineStatisticFlagBits bits can: be set in the 641 pname:pipelineStatistics member of the slink:VkQueryPoolCreateInfo 642 structure. 643 * [[features-vertexPipelineStoresAndAtomics]] 644 pname:vertexPipelineStoresAndAtomics specifies whether storage buffers 645 and images support stores and atomic operations in the vertex, 646 tessellation, and geometry shader stages. 647 If this feature is not enabled, all storage image, storage texel buffer, 648 and storage buffer variables used by these stages in shader modules 649 must: be decorated with the code:NonWritable decoration (or the 650 code:readonly memory qualifier in GLSL). 651 * [[features-fragmentStoresAndAtomics]] pname:fragmentStoresAndAtomics 652 specifies whether storage buffers and images support stores and atomic 653 operations in the fragment shader stage. 654 If this feature is not enabled, all storage image, storage texel buffer, 655 and storage buffer variables used by the fragment stage in shader 656 modules must: be decorated with the code:NonWritable decoration (or the 657 code:readonly memory qualifier in GLSL). 658 * [[features-shaderTessellationAndGeometryPointSize]] 659 pname:shaderTessellationAndGeometryPointSize specifies whether the 660 code:PointSize built-in decoration is available in the tessellation 661 control, tessellation evaluation, and geometry shader stages. 662 If this feature is not enabled, members decorated with the 663 code:PointSize built-in decoration must: not be read from or written to 664 and all points written from a tessellation or geometry shader will have 665 a size of 1.0. 666 This also specifies whether shader modules can: declare the 667 code:TessellationPointSize capability for tessellation control and 668 evaluation shaders, or if the shader modules can: declare the 669 code:GeometryPointSize capability for geometry shaders. 670 An implementation supporting this feature must: also support one or both 671 of the <<features-tessellationShader,pname:tessellationShader>> or 672 <<features-geometryShader,pname:geometryShader>> features. 673 * [[features-shaderImageGatherExtended]] pname:shaderImageGatherExtended 674 specifies whether the extended set of image gather instructions are 675 available in shader code. 676 If this feature is not enabled, the code:OpImage*Gather instructions do 677 not support the code:Offset and code:ConstOffsets operands. 678 This also specifies whether shader modules can: declare the 679 code:ImageGatherExtended capability. 680 * [[features-shaderStorageImageExtendedFormats]] 681 pname:shaderStorageImageExtendedFormats specifies whether all the 682 "`storage image extended formats`" below are supported; if this feature 683 is supported, then the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT must: 684 be supported in pname:optimalTilingFeatures for the following formats: 685+ 686 ** ename:VK_FORMAT_R16G16_SFLOAT 687 ** ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32 688 ** ename:VK_FORMAT_R16_SFLOAT 689 ** ename:VK_FORMAT_R16G16B16A16_UNORM 690 ** ename:VK_FORMAT_A2B10G10R10_UNORM_PACK32 691 ** ename:VK_FORMAT_R16G16_UNORM 692 ** ename:VK_FORMAT_R8G8_UNORM 693 ** ename:VK_FORMAT_R16_UNORM 694 ** ename:VK_FORMAT_R8_UNORM 695 ** ename:VK_FORMAT_R16G16B16A16_SNORM 696 ** ename:VK_FORMAT_R16G16_SNORM 697 ** ename:VK_FORMAT_R8G8_SNORM 698 ** ename:VK_FORMAT_R16_SNORM 699 ** ename:VK_FORMAT_R8_SNORM 700 ** ename:VK_FORMAT_R16G16_SINT 701 ** ename:VK_FORMAT_R8G8_SINT 702 ** ename:VK_FORMAT_R16_SINT 703 ** ename:VK_FORMAT_R8_SINT 704 ** ename:VK_FORMAT_A2B10G10R10_UINT_PACK32 705 ** ename:VK_FORMAT_R16G16_UINT 706 ** ename:VK_FORMAT_R8G8_UINT 707 ** ename:VK_FORMAT_R16_UINT 708 ** ename:VK_FORMAT_R8_UINT 709+ 710[NOTE] 711.Note 712==== 713pname:shaderStorageImageExtendedFormats feature only adds a guarantee of 714format support, which is specified for the whole physical device. 715Therefore enabling or disabling the feature via flink:vkCreateDevice has no 716practical effect. 717 718To query for additional properties, or if the feature is not supported, 719flink:vkGetPhysicalDeviceFormatProperties and 720flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for 721supported properties of individual formats, as usual rules allow. 722 723ename:VK_FORMAT_R32G32_UINT, ename:VK_FORMAT_R32G32_SINT, and 724ename:VK_FORMAT_R32G32_SFLOAT from code:StorageImageExtendedFormats SPIR-V 725capability, are already covered by core Vulkan 726<<formats-mandatory-features-32bit,mandatory format support>>. 727==== 728 729 * [[features-shaderStorageImageMultisample]] 730 pname:shaderStorageImageMultisample specifies whether multisampled 731 storage images are supported. 732 If this feature is not enabled, images that are created with a 733 pname:usage that includes ename:VK_IMAGE_USAGE_STORAGE_BIT must: be 734 created with pname:samples equal to ename:VK_SAMPLE_COUNT_1_BIT. 735 This also specifies whether shader modules can: declare the 736 code:StorageImageMultisample and code:ImageMSArray capabilities. 737 * [[features-shaderStorageImageReadWithoutFormat]] 738 pname:shaderStorageImageReadWithoutFormat specifies whether storage 739 images require a format qualifier to be specified when reading. 740ifdef::VK_KHR_format_feature_flags2[] 741 pname:shaderStorageImageReadWithoutFormat applies only to formats listed 742 in the <<formats-without-shader-storage-format,storage without format>> 743 list. 744endif::VK_KHR_format_feature_flags2[] 745 * [[features-shaderStorageImageWriteWithoutFormat]] 746 pname:shaderStorageImageWriteWithoutFormat specifies whether storage 747 images require a format qualifier to be specified when writing. 748ifdef::VK_KHR_format_feature_flags2[] 749 pname:shaderStorageImageWriteWithoutFormat applies only to formats 750 listed in the <<formats-without-shader-storage-format,storage without 751 format>> list. 752endif::VK_KHR_format_feature_flags2[] 753 * [[features-shaderUniformBufferArrayDynamicIndexing]] 754 pname:shaderUniformBufferArrayDynamicIndexing specifies whether arrays 755 of uniform buffers can: be indexed by _dynamically uniform_ integer 756 expressions in shader code. 757 If this feature is not enabled, resources with a descriptor type of 758 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 759 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: be indexed only by 760 constant integral expressions when aggregated into arrays in shader 761 code. 762 This also specifies whether shader modules can: declare the 763 code:UniformBufferArrayDynamicIndexing capability. 764 * [[features-shaderSampledImageArrayDynamicIndexing]] 765 pname:shaderSampledImageArrayDynamicIndexing specifies whether arrays of 766 samplers or sampled images can: be indexed by dynamically uniform 767 integer expressions in shader code. 768 If this feature is not enabled, resources with a descriptor type of 769 ename:VK_DESCRIPTOR_TYPE_SAMPLER, 770 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or 771 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: be indexed only by constant 772 integral expressions when aggregated into arrays in shader code. 773 This also specifies whether shader modules can: declare the 774 code:SampledImageArrayDynamicIndexing capability. 775 * [[features-shaderStorageBufferArrayDynamicIndexing]] 776 pname:shaderStorageBufferArrayDynamicIndexing specifies whether arrays 777 of storage buffers can: be indexed by dynamically uniform integer 778 expressions in shader code. 779 If this feature is not enabled, resources with a descriptor type of 780 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 781 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: be indexed only by 782 constant integral expressions when aggregated into arrays in shader 783 code. 784 This also specifies whether shader modules can: declare the 785 code:StorageBufferArrayDynamicIndexing capability. 786 * [[features-shaderStorageImageArrayDynamicIndexing]] 787 pname:shaderStorageImageArrayDynamicIndexing specifies whether arrays of 788 storage images can: be indexed by dynamically uniform integer 789 expressions in shader code. 790 If this feature is not enabled, resources with a descriptor type of 791 ename:VK_DESCRIPTOR_TYPE_STORAGE_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:StorageImageArrayDynamicIndexing capability. 795 * [[features-shaderClipDistance]] pname:shaderClipDistance specifies 796 whether clip distances are supported in shader code. 797 If this feature is not enabled, any members decorated with the 798 code:ClipDistance built-in decoration must: not be read from or written 799 to in shader modules. 800 This also specifies whether shader modules can: declare the 801 code:ClipDistance capability. 802 * [[features-shaderCullDistance]] pname:shaderCullDistance specifies 803 whether cull distances are supported in shader code. 804 If this feature is not enabled, any members decorated with the 805 code:CullDistance built-in decoration must: not be read from or written 806 to in shader modules. 807 This also specifies whether shader modules can: declare the 808 code:CullDistance capability. 809 * [[features-shaderFloat64]] pname:shaderFloat64 specifies whether 64-bit 810 floats (doubles) are supported in shader code. 811 If this feature is not enabled, 64-bit floating-point types must: not be 812 used in shader code. 813 This also specifies whether shader modules can: declare the code:Float64 814 capability. 815 Declaring and using 64-bit floats is enabled for all storage classes 816 that SPIR-V allows with the code:Float64 capability. 817 * [[features-shaderInt64]] pname:shaderInt64 specifies whether 64-bit 818 integers (signed and unsigned) are supported in shader code. 819 If this feature is not enabled, 64-bit integer types must: not be used 820 in shader code. 821 This also specifies whether shader modules can: declare the code:Int64 822 capability. 823 Declaring and using 64-bit integers is enabled for all storage classes 824 that SPIR-V allows with the code:Int64 capability. 825 * [[features-shaderInt16]] pname:shaderInt16 specifies whether 16-bit 826 integers (signed and unsigned) are supported in shader code. 827 If this feature is not enabled, 16-bit integer types must: not be used 828 in shader code. 829 This also specifies whether shader modules can: declare the code:Int16 830 capability. 831 However, this only enables a subset of the storage classes that SPIR-V 832 allows for the code:Int16 SPIR-V capability: Declaring and using 16-bit 833 integers in the code:Private, 834ifndef::VK_KHR_workgroup_memory_explicit_layout[] 835 code:Workgroup, 836endif::VK_KHR_workgroup_memory_explicit_layout[] 837ifdef::VK_KHR_workgroup_memory_explicit_layout[] 838 code:Workgroup (for non-Block variables), 839endif::VK_KHR_workgroup_memory_explicit_layout[] 840 and code:Function storage classes is enabled, while declaring them in 841 the interface storage classes (e.g., code:UniformConstant, code:Uniform, 842 code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is 843 not enabled. 844 * [[features-shaderResourceResidency]] pname:shaderResourceResidency 845 specifies whether image operations that return resource residency 846 information are supported in shader code. 847 If this feature is not enabled, the code:OpImageSparse* instructions 848 must: not be used in shader code. 849 This also specifies whether shader modules can: declare the 850 code:SparseResidency capability. 851 The feature requires at least one of the ptext:sparseResidency* features 852 to be supported. 853 * [[features-shaderResourceMinLod]] pname:shaderResourceMinLod specifies 854 whether image operations specifying the minimum resource LOD are 855 supported in shader code. 856 If this feature is not enabled, the code:MinLod image operand must: not 857 be used in shader code. 858 This also specifies whether shader modules can: declare the code:MinLod 859 capability. 860 * [[features-sparseBinding]] pname:sparseBinding specifies whether 861 resource memory can: be managed at opaque sparse block level instead of 862 at the object level. 863 If this feature is not enabled, resource memory must: be bound only on a 864 per-object basis using the fname:vkBindBufferMemory and 865 fname:vkBindImageMemory commands. 866 In this case, buffers and images must: not be created with 867 ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and 868 ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in the pname:flags member 869 of the slink:VkBufferCreateInfo and slink:VkImageCreateInfo structures, 870 respectively. 871 Otherwise resource memory can: be managed as described in 872 <<sparsememory-sparseresourcefeatures,Sparse Resource Features>>. 873 * [[features-sparseResidencyBuffer]] pname:sparseResidencyBuffer specifies 874 whether the device can: access partially resident buffers. 875 If this feature is not enabled, buffers must: not be created with 876 ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags 877 member of the slink:VkBufferCreateInfo structure. 878 * [[features-sparseResidencyImage2D]] pname:sparseResidencyImage2D 879 specifies whether the device can: access partially resident 2D images 880 with 1 sample per pixel. 881 If this feature is not enabled, images with an pname:imageType of 882 ename:VK_IMAGE_TYPE_2D and pname:samples set to 883 ename:VK_SAMPLE_COUNT_1_BIT must: not be created with 884 ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member 885 of the slink:VkImageCreateInfo structure. 886 * [[features-sparseResidencyImage3D]] pname:sparseResidencyImage3D 887 specifies whether the device can: access partially resident 3D images. 888 If this feature is not enabled, images with an pname:imageType of 889 ename:VK_IMAGE_TYPE_3D must: not be created with 890 ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member 891 of the slink:VkImageCreateInfo structure. 892 * [[features-sparseResidency2Samples]] pname:sparseResidency2Samples 893 specifies whether the physical device can: access partially resident 2D 894 images with 2 samples per pixel. 895 If this feature is not enabled, images with an pname:imageType of 896 ename:VK_IMAGE_TYPE_2D and pname:samples set to 897 ename:VK_SAMPLE_COUNT_2_BIT must: not be created with 898 ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member 899 of the slink:VkImageCreateInfo structure. 900 * [[features-sparseResidency4Samples]] pname:sparseResidency4Samples 901 specifies whether the physical device can: access partially resident 2D 902 images with 4 samples per pixel. 903 If this feature is not enabled, images with an pname:imageType of 904 ename:VK_IMAGE_TYPE_2D and pname:samples set to 905 ename:VK_SAMPLE_COUNT_4_BIT must: not be created with 906 ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member 907 of the slink:VkImageCreateInfo structure. 908 * [[features-sparseResidency8Samples]] pname:sparseResidency8Samples 909 specifies whether the physical device can: access partially resident 2D 910 images with 8 samples per pixel. 911 If this feature is not enabled, images with an pname:imageType of 912 ename:VK_IMAGE_TYPE_2D and pname:samples set to 913 ename:VK_SAMPLE_COUNT_8_BIT 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. 916 * [[features-sparseResidency16Samples]] pname:sparseResidency16Samples 917 specifies whether the physical device can: access partially resident 2D 918 images with 16 samples per pixel. 919 If this feature is not enabled, images with an pname:imageType of 920 ename:VK_IMAGE_TYPE_2D and pname:samples set to 921 ename:VK_SAMPLE_COUNT_16_BIT must: not be created with 922 ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT set in the pname:flags member 923 of the slink:VkImageCreateInfo structure. 924 * [[features-sparseResidencyAliased]] pname:sparseResidencyAliased 925 specifies whether the physical device can: correctly access data aliased 926 into multiple locations. 927 If this feature is not enabled, the 928 ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT and 929 ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT enum values must: not be used 930 in pname:flags members of the slink:VkBufferCreateInfo and 931 slink:VkImageCreateInfo structures, respectively. 932 * [[features-variableMultisampleRate]] pname:variableMultisampleRate 933 specifies whether all pipelines that will be bound to a command buffer 934 during a <<renderpass-noattachments, subpass which uses no attachments>> 935 must: have the same value for 936 slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples. 937 If set to ename:VK_TRUE, the implementation supports variable 938 multisample rates in a subpass which uses no attachments. 939 If set to ename:VK_FALSE, then all pipelines bound in such a subpass 940 must: have the same multisample rate. 941 This has no effect in situations where a subpass uses any attachments. 942 * [[features-inheritedQueries]] pname:inheritedQueries specifies whether a 943 secondary command buffer may: be executed while a query is active. 944 945include::{generated}/validity/structs/VkPhysicalDeviceFeatures.txt[] 946-- 947 948ifdef::VK_VERSION_1_2[] 949[open,refpage='VkPhysicalDeviceVulkan11Features',desc='Structure describing the Vulkan 1.1 features that can be supported by an implementation',type='structs'] 950-- 951The sname:VkPhysicalDeviceVulkan11Features structure is defined as: 952 953include::{generated}/api/structs/VkPhysicalDeviceVulkan11Features.txt[] 954 955This structure describes the following features: 956 957 * pname:sType is the type of this structure. 958 * pname:pNext is `NULL` or a pointer to a structure extending this 959 structure. 960 961:anchor-prefix: 962include::{chapters}/features.txt[tag=VK_KHR_16bit_storage-features] 963include::{chapters}/features.txt[tag=VK_KHR_multiview-features] 964include::{chapters}/features.txt[tag=VK_KHR_variable_pointers-features] 965include::{chapters}/features.txt[tag=VK_KHR_protected_memory-features] 966include::{chapters}/features.txt[tag=VK_KHR_sampler_ycbcr_conversion-features] 967include::{chapters}/features.txt[tag=VK_KHR_shader_draw_parameters-features] 968 969:refpage: VkPhysicalDeviceVulkan11Features 970include::{chapters}/features.txt[tag=features] 971 972include::{generated}/validity/structs/VkPhysicalDeviceVulkan11Features.txt[] 973-- 974 975[open,refpage='VkPhysicalDeviceVulkan12Features',desc='Structure describing the Vulkan 1.2 features that can be supported by an implementation',type='structs'] 976-- 977The sname:VkPhysicalDeviceVulkan12Features structure is defined as: 978 979include::{generated}/api/structs/VkPhysicalDeviceVulkan12Features.txt[] 980 981This structure describes the following features: 982 983 * pname:sType is the type of this structure. 984 * pname:pNext is `NULL` or a pointer to a structure extending this 985 structure. 986 987:anchor-prefix: 988 * [[features-samplerMirrorClampToEdge]] pname:samplerMirrorClampToEdge 989 indicates whether the implementation supports the 990 ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode. 991 If this feature is not enabled, the 992 ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode 993 must: not be used. 994 * [[features-drawIndirectCount]] pname:drawIndirectCount indicates whether 995 the implementation supports the flink:vkCmdDrawIndirectCount and 996 flink:vkCmdDrawIndexedIndirectCount functions. 997 If this feature is not enabled, these functions must: not be used. 998include::{chapters}/features.txt[tag=VK_KHR_8bit_storage-features] 999include::{chapters}/features.txt[tag=VK_KHR_shader_atomic_int64-features] 1000include::{chapters}/features.txt[tag=VK_KHR_shader_float16_int8-features] 1001 * [[features-descriptorIndexing]] pname:descriptorIndexing indicates 1002 whether the implementation supports the minimum set of descriptor 1003 indexing features as described in the <<features-requirements,Feature 1004 Requirements>> section. 1005 Enabling the pname:descriptorIndexing member when flink:vkCreateDevice 1006 is called does not imply the other minimum descriptor indexing features 1007 are also enabled. 1008 Those other descriptor indexing features must: be enabled individually 1009 as needed by the application. 1010include::{chapters}/features.txt[tag=VK_EXT_descriptor_indexing-features] 1011 * [[features-samplerFilterMinmax]] pname:samplerFilterMinmax indicates 1012 whether the implementation supports a minimum set of required formats 1013 supporting min/max filtering as defined by the 1014 <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,pname:filterMinmaxSingleComponentFormats>> 1015 property minimum requirements. 1016 If this feature is not enabled, then no slink:VkSamplerCreateInfo 1017 pname:pNext chain can include a slink:VkSamplerReductionModeCreateInfo 1018 structure. 1019include::{chapters}/features.txt[tag=VK_EXT_scalar_block_layout-features] 1020include::{chapters}/features.txt[tag=VK_KHR_imageless_framebuffer-features] 1021include::{chapters}/features.txt[tag=VK_KHR_uniform_buffer_standard_layout-features] 1022include::{chapters}/features.txt[tag=VK_KHR_shader_subgroup_extended_types-features] 1023include::{chapters}/features.txt[tag=VK_KHR_separate_depth_stencil_layouts-features] 1024include::{chapters}/features.txt[tag=VK_EXT_host_query_reset-features] 1025include::{chapters}/features.txt[tag=VK_KHR_timeline_semaphore-features] 1026include::{chapters}/features.txt[tag=VK_EXT_buffer_device_address-features] 1027include::{chapters}/features.txt[tag=VK_KHR_vulkan_memory_model-features] 1028 * [[features-shaderOutputViewportIndex]] pname:shaderOutputViewportIndex 1029 indicates whether the implementation supports the 1030 code:ShaderViewportIndex SPIR-V capability enabling variables decorated 1031 with the code:ViewportIndex built-in to be exported from vertex or 1032 tessellation evaluation shaders. 1033 If this feature is not enabled, the code:ViewportIndex built-in 1034 decoration must: not be used on outputs in vertex or tessellation 1035 evaluation shaders. 1036 * [[features-shaderOutputLayer]] pname:shaderOutputLayer indicates whether 1037 the implementation supports the code:ShaderLayer SPIR-V capability 1038 enabling variables decorated with the code:Layer built-in to be exported 1039 from vertex or tessellation evaluation shaders. 1040 If this feature is not enabled, the code:Layer built-in decoration must: 1041 not be used on outputs in vertex or tessellation evaluation shaders. 1042 * [[features-subgroupBroadcastDynamicId]] If 1043 pname:subgroupBroadcastDynamicId is ename:VK_TRUE, the "`Id`" operand of 1044 code:OpGroupNonUniformBroadcast can: be dynamically uniform within a 1045 subgroup, and the "`Index`" operand of 1046 code:OpGroupNonUniformQuadBroadcast can: be dynamically uniform within 1047 the derivative group. 1048 If it is ename:VK_FALSE, these operands must: be constants. 1049 1050:refpage: VkPhysicalDeviceVulkan12Features 1051include::{chapters}/features.txt[tag=features] 1052 1053include::{generated}/validity/structs/VkPhysicalDeviceVulkan12Features.txt[] 1054-- 1055endif::VK_VERSION_1_2[] 1056 1057ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[] 1058[open,refpage='VkPhysicalDeviceVariablePointersFeatures',desc='Structure describing variable pointers features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointersFeaturesKHR VkPhysicalDeviceVariablePointerFeaturesKHR'] 1059-- 1060The sname:VkPhysicalDeviceVariablePointersFeatures structure is defined as: 1061 1062include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeatures.txt[] 1063 1064ifdef::VK_VERSION_1_1[] 1065include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeatures.txt[] 1066endif::VK_VERSION_1_1[] 1067 1068ifdef::VK_KHR_variable_pointers[] 1069or the equivalent 1070 1071include::{generated}/api/structs/VkPhysicalDeviceVariablePointersFeaturesKHR.txt[] 1072 1073include::{generated}/api/structs/VkPhysicalDeviceVariablePointerFeaturesKHR.txt[] 1074endif::VK_KHR_variable_pointers[] 1075 1076This structure describes the following features: 1077 1078 * pname:sType is the type of this structure. 1079 * pname:pNext is `NULL` or a pointer to a structure extending this 1080 structure. 1081 1082// Must have preceding whitespace 1083ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1084ifndef::VK_VERSION_1_2[:anchor-prefix:] 1085// tag::VK_KHR_variable_pointers-features[] 1086 * [[{anchor-prefix}features-variablePointersStorageBuffer]] 1087 pname:variablePointersStorageBuffer specifies whether the implementation 1088 supports the SPIR-V code:VariablePointersStorageBuffer capability. 1089 When this feature is not enabled, shader modules must: not declare the 1090 `SPV_KHR_variable_pointers` extension or the 1091 code:VariablePointersStorageBuffer capability. 1092 * [[{anchor-prefix}features-variablePointers]] pname:variablePointers 1093 specifies whether the implementation supports the SPIR-V 1094 code:VariablePointers capability. 1095 When this feature is not enabled, shader modules must: not declare the 1096 code:VariablePointers capability. 1097// end::VK_KHR_variable_pointers-features[] 1098 1099:refpage: VkPhysicalDeviceVariablePointersFeatures 1100include::{chapters}/features.txt[tag=features] 1101 1102.Valid Usage 1103**** 1104 * [[VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431]] 1105 If pname:variablePointers is enabled then 1106 pname:variablePointersStorageBuffer must: also be enabled 1107**** 1108 1109include::{generated}/validity/structs/VkPhysicalDeviceVariablePointersFeatures.txt[] 1110-- 1111endif::VK_VERSION_1_1,VK_KHR_variable_pointers[] 1112 1113ifdef::VK_VERSION_1_1,VK_KHR_multiview[] 1114[open,refpage='VkPhysicalDeviceMultiviewFeatures',desc='Structure describing multiview features that can be supported by an implementation',type='structs'] 1115-- 1116The sname:VkPhysicalDeviceMultiviewFeatures structure is defined as: 1117 1118include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeatures.txt[] 1119 1120ifdef::VK_KHR_multiview[] 1121or the equivalent 1122 1123include::{generated}/api/structs/VkPhysicalDeviceMultiviewFeaturesKHR.txt[] 1124endif::VK_KHR_multiview[] 1125 1126This structure describes the following features: 1127 1128 * pname:sType is the type of this structure. 1129 * pname:pNext is `NULL` or a pointer to a structure extending this 1130 structure. 1131 1132// Must have preceding whitespace 1133ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1134ifndef::VK_VERSION_1_2[:anchor-prefix:] 1135// tag::VK_KHR_multiview-features[] 1136 * [[{anchor-prefix}features-multiview]] pname:multiview specifies whether 1137 the implementation supports multiview rendering within a render pass. 1138 If this feature is not enabled, the view mask of each subpass must: 1139 always be zero. 1140 * [[{anchor-prefix}features-multiview-gs]] pname:multiviewGeometryShader 1141 specifies whether the implementation supports multiview rendering within 1142 a render pass, with <<geometry,geometry shaders>>. 1143 If this feature is not enabled, then a pipeline compiled against a 1144 subpass with a non-zero view mask must: not include a geometry shader. 1145 * [[{anchor-prefix}features-multiview-tess]] 1146 pname:multiviewTessellationShader specifies whether the implementation 1147 supports multiview rendering within a render pass, with 1148 <<tessellation,tessellation shaders>>. 1149 If this feature is not enabled, then a pipeline compiled against a 1150 subpass with a non-zero view mask must: not include any tessellation 1151 shaders. 1152// end::VK_KHR_multiview-features[] 1153 1154:refpage: VkPhysicalDeviceMultiviewFeatures 1155include::{chapters}/features.txt[tag=features] 1156 1157.Valid Usage 1158**** 1159 * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580]] 1160 If pname:multiviewGeometryShader is enabled then pname:multiview must: 1161 also be enabled 1162 * [[VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581]] 1163 If pname:multiviewTessellationShader is enabled then pname:multiview 1164 must: also be enabled 1165**** 1166 1167include::{generated}/validity/structs/VkPhysicalDeviceMultiviewFeatures.txt[] 1168-- 1169endif::VK_VERSION_1_1,VK_KHR_multiview[] 1170 1171ifdef::VK_EXT_shader_atomic_float[] 1172[open,refpage='VkPhysicalDeviceShaderAtomicFloatFeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float',type='structs'] 1173-- 1174The slink:VkPhysicalDeviceShaderAtomicFloatFeaturesEXT structure is defined 1175as: 1176 1177include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.txt[] 1178 1179This structure describes the following features: 1180 1181 * pname:sType is the type of this structure. 1182 * pname:pNext is `NULL` or a pointer to a structure extending this 1183 structure. 1184 1185// tag::VK_EXT_shader_atomic_float-features[] 1186 * [[features-shaderBufferFloat32Atomics]] pname:shaderBufferFloat32Atomics 1187 indicates whether shaders can: perform 32-bit floating-point load, store 1188 and exchange atomic operations on storage buffers. 1189 * [[features-shaderBufferFloat32AtomicAdd]] 1190 pname:shaderBufferFloat32AtomicAdd indicates whether shaders can: 1191 perform 32-bit floating-point add atomic operations on storage buffers. 1192 * [[features-shaderBufferFloat64Atomics]] pname:shaderBufferFloat64Atomics 1193 indicates whether shaders can: perform 64-bit floating-point load, store 1194 and exchange atomic operations on storage buffers. 1195 * [[features-shaderBufferFloat64AtomicAdd]] 1196 pname:shaderBufferFloat64AtomicAdd indicates whether shaders can: 1197 perform 64-bit floating-point add atomic operations on storage buffers. 1198 * [[features-shaderSharedFloat32Atomics]] pname:shaderSharedFloat32Atomics 1199 indicates whether shaders can: perform 32-bit floating-point load, store 1200 and exchange atomic operations on shared memory. 1201 * [[features-shaderSharedFloat32AtomicAdd]] 1202 pname:shaderSharedFloat32AtomicAdd indicates whether shaders can: 1203 perform 32-bit floating-point add atomic operations on shared memory. 1204 * [[features-shaderSharedFloat64Atomics]] pname:shaderSharedFloat64Atomics 1205 indicates whether shaders can: perform 64-bit floating-point load, store 1206 and exchange atomic operations on shared memory. 1207 * [[features-shaderSharedFloat64AtomicAdd]] 1208 pname:shaderSharedFloat64AtomicAdd indicates whether shaders can: 1209 perform 64-bit floating-point add atomic operations on shared memory. 1210 * [[features-shaderImageFloat32Atomics]] pname:shaderImageFloat32Atomics 1211 indicates whether shaders can: perform 32-bit floating-point load, store 1212 and exchange atomic image operations. 1213 * [[features-shaderImageFloat32AtomicAdd]] 1214 pname:shaderImageFloat32AtomicAdd indicates whether shaders can: perform 1215 32-bit floating-point add atomic image operations. 1216 * [[features-sparseImageFloat32Atomics]] pname:sparseImageFloat32Atomics 1217 indicates whether 32-bit floating-point load, store and exchange atomic 1218 operations can: be used on sparse images. 1219 * [[features-sparseImageFloat32AtomicAdd]] 1220 pname:sparseImageFloat32AtomicAdd indicates whether 32-bit 1221 floating-point add atomic operations can: be used on sparse images. 1222// end::VK_EXT_shader_atomic_float-features[] 1223 1224:refpage: VkPhysicalDeviceShaderAtomicFloatFeaturesEXT 1225include::{chapters}/features.txt[tag=features] 1226 1227include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.txt[] 1228-- 1229endif::VK_EXT_shader_atomic_float[] 1230 1231ifdef::VK_EXT_shader_atomic_float2[] 1232[open,refpage='VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_atomic_float2',type='structs'] 1233-- 1234The slink:VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT structure is defined 1235as: 1236 1237include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.txt[] 1238 1239This structure describes the following features: 1240 1241 * pname:sType is the type of this structure. 1242 * pname:pNext is `NULL` or a pointer to a structure extending this 1243 structure. 1244 1245// tag::VK_EXT_shader_atomic_float2-features[] 1246 * [[features-shaderBufferFloat16Atomics]] pname:shaderBufferFloat16Atomics 1247 indicates whether shaders can: perform 16-bit floating-point load, 1248 store, and exchange atomic operations on storage buffers. 1249 * [[features-shaderBufferFloat16AtomicAdd]] 1250 pname:shaderBufferFloat16AtomicAdd indicates whether shaders can: 1251 perform 16-bit floating-point add atomic operations on storage buffers. 1252 * [[features-shaderBufferFloat16AtomicMinMax]] 1253 pname:shaderBufferFloat16AtomicMinMax indicates whether shaders can: 1254 perform 16-bit floating-point min and max atomic operations on storage 1255 buffers. 1256 * [[features-shaderBufferFloat32AtomicMinMax]] 1257 pname:shaderBufferFloat32AtomicMinMax indicates whether shaders can: 1258 perform 32-bit floating-point min and max atomic operations on storage 1259 buffers. 1260 * [[features-shaderBufferFloat64AtomicMinMax]] 1261 pname:shaderBufferFloat64AtomicMinMax indicates whether shaders can: 1262 perform 64-bit floating-point min and max atomic operations on storage 1263 buffers. 1264 * [[features-shaderSharedFloat16Atomics]] pname:shaderSharedFloat16Atomics 1265 indicates whether shaders can: perform 16-bit floating-point load, store 1266 and exchange atomic operations on shared memory. 1267 * [[features-shaderSharedFloat16AtomicAdd]] 1268 pname:shaderSharedFloat16AtomicAdd indicates whether shaders can: 1269 perform 16-bit floating-point add atomic operations on shared memory. 1270 * [[features-shaderSharedFloat16AtomicMinMax]] 1271 pname:shaderSharedFloat16AtomicMinMax indicates whether shaders can: 1272 perform 16-bit floating-point min and max atomic operations on shared 1273 memory. 1274 * [[features-shaderSharedFloat32AtomicMinMax]] 1275 pname:shaderSharedFloat32AtomicMinMax indicates whether shaders can: 1276 perform 32-bit floating-point min and max atomic operations on shared 1277 memory. 1278 * [[features-shaderSharedFloat64AtomicMinMax]] 1279 pname:shaderSharedFloat64AtomicMinMax indicates whether shaders can: 1280 perform 64-bit floating-point min and max atomic operations on shared 1281 memory. 1282 * [[features-shaderImageFloat32AtomicMinMax]] 1283 pname:shaderImageFloat32AtomicMinMax indicates whether shaders can: 1284 perform 32-bit floating-point min and max atomic image operations. 1285 * [[features-sparseImageFloat32AtomicMinMax]] 1286 pname:sparseImageFloat32AtomicMinMax indicates whether 32-bit 1287 floating-point min and max atomic operations can: be used on sparse 1288 images. 1289// end::VK_EXT_shader_atomic_float2-features[] 1290 1291:refpage: VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT 1292include::{chapters}/features.txt[tag=features] 1293 1294include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.txt[] 1295-- 1296endif::VK_EXT_shader_atomic_float2[] 1297 1298ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[] 1299[open,refpage='VkPhysicalDeviceShaderAtomicInt64Features',desc='Structure describing features supported by VK_KHR_shader_atomic_int64',type='structs',alias='VkPhysicalDeviceShaderAtomicInt64FeaturesKHR'] 1300-- 1301The slink:VkPhysicalDeviceShaderAtomicInt64Features structure is defined as: 1302 1303include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64Features.txt[] 1304 1305ifdef::VK_KHR_shader_atomic_int64[] 1306or the equivalent 1307 1308include::{generated}/api/structs/VkPhysicalDeviceShaderAtomicInt64FeaturesKHR.txt[] 1309endif::VK_KHR_shader_atomic_int64[] 1310 1311This structure describes the following features: 1312 1313 * pname:sType is the type of this structure. 1314 * pname:pNext is `NULL` or a pointer to a structure extending this 1315 structure. 1316 1317// Must have preceding whitespace 1318ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1319ifndef::VK_VERSION_1_2[:anchor-prefix:] 1320// tag::VK_KHR_shader_atomic_int64-features[] 1321 * [[{anchor-prefix}features-shaderBufferInt64Atomics]] 1322 pname:shaderBufferInt64Atomics indicates whether shaders can: perform 1323 64-bit unsigned and signed integer atomic operations on buffers. 1324 * [[{anchor-prefix}features-shaderSharedInt64Atomics]] 1325 pname:shaderSharedInt64Atomics indicates whether shaders can: perform 1326 64-bit unsigned and signed integer atomic operations on shared memory. 1327// end::VK_KHR_shader_atomic_int64-features[] 1328 1329:refpage: VkPhysicalDeviceShaderAtomicInt64Features 1330include::{chapters}/features.txt[tag=features] 1331 1332include::{generated}/validity/structs/VkPhysicalDeviceShaderAtomicInt64Features.txt[] 1333-- 1334endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[] 1335 1336ifdef::VK_EXT_shader_image_atomic_int64[] 1337[open,refpage='VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT',desc='Structure describing features supported by VK_EXT_shader_image_atomic_int64',type='structs'] 1338-- 1339The slink:VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT structure is 1340defined as: 1341 1342include::{generated}/api/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.txt[] 1343 1344This structure describes the following features: 1345 1346 * pname:sType is the type of this structure. 1347 * pname:pNext is `NULL` or a pointer to a structure extending this 1348 structure. 1349 * [[features-shaderImageInt64Atomics]] pname:shaderImageInt64Atomics 1350 indicates whether shaders can: support 64-bit unsigned and signed 1351 integer atomic operations on images. 1352 * [[features-sparseImageInt64Atomics]] pname:sparseImageInt64Atomics 1353 indicates whether 64-bit integer atomics can: be used on sparse images. 1354 1355:refpage: VkPhysicalDeviceShaderAtomicInt64FeaturesEXT 1356include::{chapters}/features.txt[tag=features] 1357 1358include::{generated}/validity/structs/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.txt[] 1359-- 1360endif::VK_EXT_shader_image_atomic_int64[] 1361 1362ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[] 1363[open,refpage='VkPhysicalDevice8BitStorageFeatures',desc='Structure describing features supported by VK_KHR_8bit_storage',type='structs',alias='VkPhysicalDevice8BitStorageFeaturesKHR'] 1364-- 1365The slink:VkPhysicalDevice8BitStorageFeatures structure is defined as: 1366 1367include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeatures.txt[] 1368 1369ifdef::VK_KHR_8bit_storage[] 1370or the equivalent 1371 1372include::{generated}/api/structs/VkPhysicalDevice8BitStorageFeaturesKHR.txt[] 1373endif::VK_KHR_8bit_storage[] 1374 1375This structure describes the following features: 1376 1377 * pname:sType is the type of this structure. 1378 * pname:pNext is `NULL` or a pointer to a structure extending this 1379 structure. 1380 1381// Must have preceding whitespace 1382ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1383ifndef::VK_VERSION_1_2[:anchor-prefix:] 1384// tag::VK_KHR_8bit_storage-features[] 1385 * [[{anchor-prefix}features-storageBuffer8BitAccess]] 1386 pname:storageBuffer8BitAccess indicates whether objects in the 1387 code:StorageBuffer, 1388ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,] 1389ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 1390 or code:PhysicalStorageBuffer 1391endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 1392 storage class with the code:Block decoration can: have 8-bit integer 1393 members. 1394 If this feature is not enabled, 8-bit integer members must: not be used 1395 in such objects. 1396 This also indicates whether shader modules can: declare the 1397 code:StorageBuffer8BitAccess capability. 1398 * [[{anchor-prefix}features-uniformAndStorageBuffer8BitAccess]] 1399 pname:uniformAndStorageBuffer8BitAccess indicates whether objects in the 1400 code:Uniform storage class with the code:Block decoration can: have 1401 8-bit integer members. 1402 If this feature is not enabled, 8-bit integer members must: not be used 1403 in such objects. 1404 This also indicates whether shader modules can: declare the 1405 code:UniformAndStorageBuffer8BitAccess capability. 1406 * [[{anchor-prefix}features-storagePushConstant8]] 1407 pname:storagePushConstant8 indicates whether objects in the 1408 code:PushConstant storage class can: have 8-bit integer members. 1409 If this feature is not enabled, 8-bit integer members must: not be used 1410 in such objects. 1411 This also indicates whether shader modules can: declare the 1412 code:StoragePushConstant8 capability. 1413// end::VK_KHR_8bit_storage-features[] 1414 1415:refpage: VkPhysicalDevice8BitStorageFeatures 1416include::{chapters}/features.txt[tag=features] 1417 1418include::{generated}/validity/structs/VkPhysicalDevice8BitStorageFeatures.txt[] 1419-- 1420endif::VK_VERSION_1_2,VK_KHR_8bit_storage[] 1421 1422ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[] 1423[open,refpage='VkPhysicalDevice16BitStorageFeatures',desc='Structure describing features supported by VK_KHR_16bit_storage',type='structs'] 1424-- 1425The slink:VkPhysicalDevice16BitStorageFeatures structure is defined as: 1426 1427include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeatures.txt[] 1428 1429ifdef::VK_KHR_16bit_storage[] 1430or the equivalent 1431 1432include::{generated}/api/structs/VkPhysicalDevice16BitStorageFeaturesKHR.txt[] 1433endif::VK_KHR_16bit_storage[] 1434 1435This structure describes the following features: 1436 1437 * pname:sType is the type of this structure. 1438 * pname:pNext is `NULL` or a pointer to a structure extending this 1439 structure. 1440 1441// Must have preceding whitespace 1442ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1443ifndef::VK_VERSION_1_2[:anchor-prefix:] 1444// tag::VK_KHR_16bit_storage-features[] 1445 * [[{anchor-prefix}features-storageBuffer16BitAccess]] 1446 pname:storageBuffer16BitAccess specifies whether objects in the 1447 code:StorageBuffer, 1448ifdef::VK_KHR_ray_tracing_pipeline[code:ShaderRecordBufferKHR,] 1449ifdef::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 1450 or code:PhysicalStorageBuffer 1451endif::VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address[] 1452 storage class with the code:Block decoration can: have 16-bit integer 1453 and 16-bit floating-point members. 1454 If this feature is not enabled, 16-bit integer or 16-bit floating-point 1455 members must: not be used in such objects. 1456 This also specifies whether shader modules can: declare the 1457 code:StorageBuffer16BitAccess capability. 1458 * [[{anchor-prefix}features-uniformAndStorageBuffer16BitAccess]] 1459 pname:uniformAndStorageBuffer16BitAccess specifies whether objects in 1460 the code:Uniform storage class with the code:Block decoration can: have 1461 16-bit integer and 16-bit floating-point members. 1462 If this feature is not enabled, 16-bit integer or 16-bit floating-point 1463 members must: not be used in such objects. 1464 This also specifies whether shader modules can: declare the 1465 code:UniformAndStorageBuffer16BitAccess capability. 1466 * [[{anchor-prefix}features-storagePushConstant16]] 1467 pname:storagePushConstant16 specifies whether objects in the 1468 code:PushConstant storage class can: have 16-bit integer and 16-bit 1469 floating-point members. 1470 If this feature is not enabled, 16-bit integer or floating-point members 1471 must: not be used in such objects. 1472 This also specifies whether shader modules can: declare the 1473 code:StoragePushConstant16 capability. 1474 * [[{anchor-prefix}features-storageInputOutput16]] 1475 pname:storageInputOutput16 specifies whether objects in the code:Input 1476 and code:Output storage classes can: have 16-bit integer and 16-bit 1477 floating-point members. 1478 If this feature is not enabled, 16-bit integer or 16-bit floating-point 1479 members must: not be used in such objects. 1480 This also specifies whether shader modules can: declare the 1481 code:StorageInputOutput16 capability. 1482// end::VK_KHR_16bit_storage-features[] 1483 1484:refpage: VkPhysicalDevice16BitStorageFeatures 1485include::{chapters}/features.txt[tag=features] 1486 1487include::{generated}/validity/structs/VkPhysicalDevice16BitStorageFeatures.txt[] 1488-- 1489endif::VK_VERSION_1_1,VK_KHR_16bit_storage[] 1490 1491ifdef::VK_VERSION_1_2,VK_KHR_shader_float16_int8[] 1492[open,refpage='VkPhysicalDeviceShaderFloat16Int8Features',desc='Structure describing features supported by VK_KHR_shader_float16_int8',type='structs',alias='VkPhysicalDeviceShaderFloat16Int8FeaturesKHR VkPhysicalDeviceFloat16Int8FeaturesKHR'] 1493-- 1494The sname:VkPhysicalDeviceShaderFloat16Int8Features structure is defined as: 1495 1496include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8Features.txt[] 1497 1498ifdef::VK_KHR_shader_float16_int8[] 1499or the equivalent 1500 1501include::{generated}/api/structs/VkPhysicalDeviceShaderFloat16Int8FeaturesKHR.txt[] 1502 1503include::{generated}/api/structs/VkPhysicalDeviceFloat16Int8FeaturesKHR.txt[] 1504endif::VK_KHR_shader_float16_int8[] 1505 1506This structure describes the following features: 1507 1508 * pname:sType is the type of this structure. 1509 * pname:pNext is `NULL` or a pointer to a structure extending this 1510 structure. 1511 1512// Must have preceding whitespace 1513ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1514ifndef::VK_VERSION_1_2[:anchor-prefix:] 1515// tag::VK_KHR_shader_float16_int8-features[] 1516 * [[{anchor-prefix}features-shaderFloat16]] pname:shaderFloat16 indicates 1517 whether 16-bit floats (halfs) are supported in shader code. 1518 This also indicates whether shader modules can: declare the code:Float16 1519 capability. 1520 However, this only enables a subset of the storage classes that SPIR-V 1521 allows for the code:Float16 SPIR-V capability: Declaring and using 1522 16-bit floats in the code:Private, 1523ifndef::VK_KHR_workgroup_memory_explicit_layout[] 1524 code:Workgroup, 1525endif::VK_KHR_workgroup_memory_explicit_layout[] 1526ifdef::VK_KHR_workgroup_memory_explicit_layout[] 1527 code:Workgroup (for non-Block variables), 1528endif::VK_KHR_workgroup_memory_explicit_layout[] 1529 and code:Function storage classes is enabled, while declaring them in 1530 the interface storage classes (e.g., code:UniformConstant, code:Uniform, 1531 code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is 1532 not enabled. 1533 * [[{anchor-prefix}features-shaderInt8]] pname:shaderInt8 indicates 1534 whether 8-bit integers (signed and unsigned) are supported in shader 1535 code. 1536 This also indicates whether shader modules can: declare the code:Int8 1537 capability. 1538 However, this only enables a subset of the storage classes that SPIR-V 1539 allows for the code:Int8 SPIR-V capability: Declaring and using 8-bit 1540 integers in the code:Private, 1541ifndef::VK_KHR_workgroup_memory_explicit_layout[] 1542 code:Workgroup, 1543endif::VK_KHR_workgroup_memory_explicit_layout[] 1544ifdef::VK_KHR_workgroup_memory_explicit_layout[] 1545 code:Workgroup (for non-Block variables), 1546endif::VK_KHR_workgroup_memory_explicit_layout[] 1547 and code:Function storage classes is enabled, while declaring them in 1548 the interface storage classes (e.g., code:UniformConstant, code:Uniform, 1549 code:StorageBuffer, code:Input, code:Output, and code:PushConstant) is 1550 not enabled. 1551// end::VK_KHR_shader_float16_int8-features[] 1552 1553:refpage: VkPhysicalDeviceShaderFloat16Int8Features 1554include::{chapters}/features.txt[tag=features] 1555 1556include::{generated}/validity/structs/VkPhysicalDeviceShaderFloat16Int8Features.txt[] 1557-- 1558endif::VK_VERSION_1_2,VK_KHR_shader_float16_int8[] 1559 1560ifdef::VK_KHR_shader_clock[] 1561[open,refpage='VkPhysicalDeviceShaderClockFeaturesKHR',desc='Structure describing features supported by VK_KHR_shader_clock',type='structs'] 1562-- 1563The slink:VkPhysicalDeviceShaderClockFeaturesKHR structure is defined as: 1564 1565include::{generated}/api/structs/VkPhysicalDeviceShaderClockFeaturesKHR.txt[] 1566 1567This structure describes the following features: 1568 1569 * pname:sType is the type of this structure. 1570 * pname:pNext is `NULL` or a pointer to a structure extending this 1571 structure. 1572 * [[features-shaderSubgroupClock]] pname:shaderSubgroupClock indicates 1573 whether shaders can: perform code:Subgroup scoped clock reads. 1574 * [[features-shaderDeviceClock]] pname:shaderDeviceClock indicates whether 1575 shaders can: perform code:Device scoped clock reads. 1576 1577:refpage: VkPhysicalDeviceShaderClockFeaturesKHR 1578include::{chapters}/features.txt[tag=features] 1579 1580include::{generated}/validity/structs/VkPhysicalDeviceShaderClockFeaturesKHR.txt[] 1581-- 1582endif::VK_KHR_shader_clock[] 1583 1584ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1585[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeatures',desc='Structure describing {YCbCr} conversion features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR'] 1586-- 1587The sname:VkPhysicalDeviceSamplerYcbcrConversionFeatures structure is 1588defined as: 1589 1590include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.txt[] 1591 1592ifdef::VK_KHR_sampler_ycbcr_conversion[] 1593or the equivalent 1594 1595include::{generated}/api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.txt[] 1596endif::VK_KHR_sampler_ycbcr_conversion[] 1597 1598This structure describes the following feature: 1599 1600 * pname:sType is the type of this structure. 1601 * pname:pNext is `NULL` or a pointer to a structure extending this 1602 structure. 1603 1604// Must have preceding whitespace 1605ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1606ifndef::VK_VERSION_1_2[:anchor-prefix:] 1607// tag::VK_KHR_sampler_ycbcr_conversion-features[] 1608 * [[{anchor-prefix}features-samplerYcbcrConversion]] 1609 pname:samplerYcbcrConversion specifies whether the implementation 1610 supports <<samplers-YCbCr-conversion,sampler {YCbCr} conversion>>. 1611 If pname:samplerYcbcrConversion is ename:VK_FALSE, sampler {YCbCr} 1612 conversion is not supported, and samplers using sampler {YCbCr} 1613 conversion must: not be used. 1614// end::VK_KHR_sampler_ycbcr_conversion-features[] 1615 1616:refpage: VkPhysicalDeviceSamplerYcbcrConversionFeatures 1617include::{chapters}/features.txt[tag=features] 1618 1619include::{generated}/validity/structs/VkPhysicalDeviceSamplerYcbcrConversionFeatures.txt[] 1620-- 1621endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] 1622 1623ifdef::VK_VERSION_1_1[] 1624[open,refpage='VkPhysicalDeviceProtectedMemoryFeatures',desc='Structure describing protected memory features that can be supported by an implementation',type='structs'] 1625-- 1626The sname:VkPhysicalDeviceProtectedMemoryFeatures structure is defined as: 1627 1628include::{generated}/api/structs/VkPhysicalDeviceProtectedMemoryFeatures.txt[] 1629 1630This structure describes the following feature: 1631 1632 * pname:sType is the type of this structure. 1633 * pname:pNext is `NULL` or a pointer to a structure extending this 1634 structure. 1635 1636// Must have preceding whitespace 1637ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1638ifndef::VK_VERSION_1_2[:anchor-prefix:] 1639// tag::VK_KHR_protected_memory-features[] 1640 * [[{anchor-prefix}features-protectedMemory]] pname:protectedMemory 1641 specifies whether protected memory is supported. 1642// end::VK_KHR_protected_memory-features[] 1643 1644:refpage: VkPhysicalDeviceProtectedMemoryFeatures 1645include::{chapters}/features.txt[tag=features] 1646 1647include::{generated}/validity/structs/VkPhysicalDeviceProtectedMemoryFeatures.txt[] 1648-- 1649endif::VK_VERSION_1_1[] 1650 1651ifdef::VK_EXT_blend_operation_advanced[] 1652[open,refpage='VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',desc='Structure describing advanced blending features that can be supported by an implementation',type='structs'] 1653-- 1654The sname:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT structure is 1655defined as: 1656 1657include::{generated}/api/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[] 1658 1659This structure describes the following feature: 1660 1661 * pname:sType is the type of this structure. 1662 * pname:pNext is `NULL` or a pointer to a structure extending this 1663 structure. 1664 * [[features-advancedBlendCoherentOperations]] 1665 pname:advancedBlendCoherentOperations specifies whether blending using 1666 <<framebuffer-blend-advanced,advanced blend operations>> is guaranteed 1667 to execute atomically and in <<drawing-primitive-order, primitive 1668 order>>. 1669 If this is ename:VK_TRUE, 1670 ename:VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT is treated the 1671 same as ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, and advanced blending 1672 needs no additional synchronization over basic blending. 1673 If this is ename:VK_FALSE, then memory dependencies are required to 1674 guarantee order between two advanced blending operations that occur on 1675 the same sample. 1676 1677:refpage: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT 1678include::{chapters}/features.txt[tag=features] 1679 1680include::{generated}/validity/structs/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.txt[] 1681-- 1682endif::VK_EXT_blend_operation_advanced[] 1683 1684ifdef::VK_EXT_conditional_rendering[] 1685[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'] 1686-- 1687The sname:VkPhysicalDeviceConditionalRenderingFeaturesEXT structure is 1688defined as: 1689 1690include::{generated}/api/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[] 1691 1692This structure describes the following features: 1693 1694 * pname:sType is the type of this structure. 1695 * pname:pNext is `NULL` or a pointer to a structure extending this 1696 structure. 1697 * [[features-conditionalRendering]] pname:conditionalRendering specifies 1698 whether conditional rendering is supported. 1699 * [[features-inheritedConditionalRendering]] 1700 pname:inheritedConditionalRendering specifies whether a secondary 1701 command buffer can: be executed while conditional rendering is active in 1702 the primary command buffer. 1703 1704:refpage: VkPhysicalDeviceConditionalRenderingFeaturesEXT 1705include::{chapters}/features.txt[tag=features] 1706 1707include::{generated}/validity/structs/VkPhysicalDeviceConditionalRenderingFeaturesEXT.txt[] 1708-- 1709endif::VK_EXT_conditional_rendering[] 1710 1711ifdef::VK_VERSION_1_1[] 1712[open,refpage='VkPhysicalDeviceShaderDrawParametersFeatures',desc='Structure describing shader draw parameter features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceShaderDrawParameterFeatures'] 1713-- 1714The sname:VkPhysicalDeviceShaderDrawParametersFeatures structure is defined 1715as: 1716 1717include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[] 1718 1719include::{generated}/api/structs/VkPhysicalDeviceShaderDrawParameterFeatures.txt[] 1720 1721This structure describes the following feature: 1722 1723 * pname:sType is the type of this structure. 1724 * pname:pNext is `NULL` or a pointer to a structure extending this 1725 structure. 1726 1727// Must have preceding whitespace 1728ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1729ifndef::VK_VERSION_1_2[:anchor-prefix:] 1730// tag::VK_KHR_shader_draw_parameters-features[] 1731 * [[{anchor-prefix}features-shaderDrawParameters]] 1732 pname:shaderDrawParameters specifies whether the implementation supports 1733 the SPIR-V code:DrawParameters capability. 1734 When this feature is not enabled, shader modules must: not declare the 1735 `SPV_KHR_shader_draw_parameters` extension or the code:DrawParameters 1736 capability. 1737// end::VK_KHR_shader_draw_parameters-features[] 1738 1739:refpage: VkPhysicalDeviceShaderDrawParametersFeatures 1740include::{chapters}/features.txt[tag=features] 1741 1742include::{generated}/validity/structs/VkPhysicalDeviceShaderDrawParametersFeatures.txt[] 1743-- 1744endif::VK_VERSION_1_1[] 1745 1746ifdef::VK_NV_mesh_shader[] 1747[open,refpage='VkPhysicalDeviceMeshShaderFeaturesNV',desc='Structure describing mesh shading features that can be supported by an implementation',type='structs'] 1748-- 1749The sname:VkPhysicalDeviceMeshShaderFeaturesNV structure is defined as: 1750 1751include::{generated}/api/structs/VkPhysicalDeviceMeshShaderFeaturesNV.txt[] 1752 1753This structure describes the following features: 1754 1755 * pname:sType is the type of this structure. 1756 * pname:pNext is `NULL` or a pointer to a structure extending this 1757 structure. 1758 * [[features-taskShader]] pname:taskShader indicates whether the task 1759 shader stage is supported. 1760 * [[features-meshShader]] pname:meshShader indicates whether the mesh 1761 shader stage is supported. 1762 1763:refpage: VkPhysicalDeviceMeshShaderFeaturesNV 1764include::{chapters}/features.txt[tag=features] 1765 1766include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderFeaturesNV.txt[] 1767-- 1768endif::VK_NV_mesh_shader[] 1769 1770ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 1771[open,refpage='VkPhysicalDeviceDescriptorIndexingFeatures',desc='Structure describing descriptor indexing features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceDescriptorIndexingFeaturesEXT'] 1772-- 1773The sname:VkPhysicalDeviceDescriptorIndexingFeatures structure is defined 1774as: 1775 1776include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeatures.txt[] 1777 1778ifdef::VK_EXT_descriptor_indexing[] 1779or the equivalent 1780 1781include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingFeaturesEXT.txt[] 1782endif::VK_EXT_descriptor_indexing[] 1783 1784This structure describes the following features: 1785 1786 * pname:sType is the type of this structure. 1787 * pname:pNext is `NULL` or a pointer to a structure extending this 1788 structure. 1789 1790// Must have preceding whitespace 1791ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1792ifndef::VK_VERSION_1_2[:anchor-prefix:] 1793// tag::VK_EXT_descriptor_indexing-features[] 1794 * [[{anchor-prefix}features-shaderInputAttachmentArrayDynamicIndexing]] 1795 pname:shaderInputAttachmentArrayDynamicIndexing indicates whether arrays 1796 of input attachments can: be indexed by dynamically uniform integer 1797 expressions in shader code. 1798 If this feature is not enabled, resources with a descriptor type of 1799 ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: be indexed only by 1800 constant integral expressions when aggregated into arrays in shader 1801 code. 1802 This also indicates whether shader modules can: declare the 1803 code:InputAttachmentArrayDynamicIndexing capability. 1804 * [[{anchor-prefix}features-shaderUniformTexelBufferArrayDynamicIndexing]] 1805 pname:shaderUniformTexelBufferArrayDynamicIndexing indicates whether 1806 arrays of uniform texel buffers can: be indexed by dynamically uniform 1807 integer expressions in shader code. 1808 If this feature is not enabled, resources with a descriptor type of 1809 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: be indexed only by 1810 constant integral expressions when aggregated into arrays in shader 1811 code. 1812 This also indicates whether shader modules can: declare the 1813 code:UniformTexelBufferArrayDynamicIndexing capability. 1814 * [[{anchor-prefix}features-shaderStorageTexelBufferArrayDynamicIndexing]] 1815 pname:shaderStorageTexelBufferArrayDynamicIndexing indicates whether 1816 arrays of storage texel buffers can: be indexed by dynamically uniform 1817 integer expressions in shader code. 1818 If this feature is not enabled, resources with a descriptor type of 1819 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: be indexed only by 1820 constant integral expressions when aggregated into arrays in shader 1821 code. 1822 This also indicates whether shader modules can: declare the 1823 code:StorageTexelBufferArrayDynamicIndexing capability. 1824 * [[{anchor-prefix}features-shaderUniformBufferArrayNonUniformIndexing]] 1825 pname:shaderUniformBufferArrayNonUniformIndexing indicates whether 1826 arrays of uniform buffers can: be indexed by non-uniform integer 1827 expressions in shader code. 1828 If this feature is not enabled, resources with a descriptor type of 1829 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 1830 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must: not be indexed by 1831 non-uniform integer expressions when aggregated into arrays in shader 1832 code. 1833 This also indicates whether shader modules can: declare the 1834 code:UniformBufferArrayNonUniformIndexing capability. 1835 * [[{anchor-prefix}features-shaderSampledImageArrayNonUniformIndexing]] 1836 pname:shaderSampledImageArrayNonUniformIndexing indicates whether arrays 1837 of samplers or sampled images can: be indexed by non-uniform integer 1838 expressions in shader code. 1839 If this feature is not enabled, resources with a descriptor type of 1840 ename:VK_DESCRIPTOR_TYPE_SAMPLER, 1841 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or 1842 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must: not be indexed by 1843 non-uniform integer expressions when aggregated into arrays in shader 1844 code. 1845 This also indicates whether shader modules can: declare the 1846 code:SampledImageArrayNonUniformIndexing capability. 1847 * [[{anchor-prefix}features-shaderStorageBufferArrayNonUniformIndexing]] 1848 pname:shaderStorageBufferArrayNonUniformIndexing indicates whether 1849 arrays of storage buffers can: be indexed by non-uniform integer 1850 expressions in shader code. 1851 If this feature is not enabled, resources with a descriptor type of 1852 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 1853 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must: not be indexed by 1854 non-uniform integer expressions when aggregated into arrays in shader 1855 code. 1856 This also indicates whether shader modules can: declare the 1857 code:StorageBufferArrayNonUniformIndexing capability. 1858 * [[{anchor-prefix}features-shaderStorageImageArrayNonUniformIndexing]] 1859 pname:shaderStorageImageArrayNonUniformIndexing indicates whether arrays 1860 of storage images can: be indexed by non-uniform integer expressions in 1861 shader code. 1862 If this feature is not enabled, resources with a descriptor type of 1863 ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must: not be indexed by 1864 non-uniform integer expressions when aggregated into arrays in shader 1865 code. 1866 This also indicates whether shader modules can: declare the 1867 code:StorageImageArrayNonUniformIndexing capability. 1868 * [[{anchor-prefix}features-shaderInputAttachmentArrayNonUniformIndexing]] 1869 pname:shaderInputAttachmentArrayNonUniformIndexing indicates whether 1870 arrays of input attachments can: be indexed by non-uniform integer 1871 expressions in shader code. 1872 If this feature is not enabled, resources with a descriptor type of 1873 ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must: not be indexed by 1874 non-uniform integer expressions when aggregated into arrays in shader 1875 code. 1876 This also indicates whether shader modules can: declare the 1877 code:InputAttachmentArrayNonUniformIndexing capability. 1878 * [[{anchor-prefix}features-shaderUniformTexelBufferArrayNonUniformIndexing]] 1879 pname:shaderUniformTexelBufferArrayNonUniformIndexing indicates whether 1880 arrays of uniform texel buffers can: be indexed by non-uniform integer 1881 expressions in shader code. 1882 If this feature is not enabled, resources with a descriptor type of 1883 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must: not be indexed by 1884 non-uniform integer expressions when aggregated into arrays in shader 1885 code. 1886 This also indicates whether shader modules can: declare the 1887 code:UniformTexelBufferArrayNonUniformIndexing capability. 1888 * [[{anchor-prefix}features-shaderStorageTexelBufferArrayNonUniformIndexing]] 1889 pname:shaderStorageTexelBufferArrayNonUniformIndexing indicates whether 1890 arrays of storage texel buffers can: be indexed by non-uniform integer 1891 expressions in shader code. 1892 If this feature is not enabled, resources with a descriptor type of 1893 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must: not be indexed by 1894 non-uniform integer expressions when aggregated into arrays in shader 1895 code. 1896 This also indicates whether shader modules can: declare the 1897 code:StorageTexelBufferArrayNonUniformIndexing capability. 1898 * [[{anchor-prefix}features-descriptorBindingUniformBufferUpdateAfterBind]] 1899 pname:descriptorBindingUniformBufferUpdateAfterBind indicates whether 1900 the implementation supports updating uniform buffer descriptors after a 1901 set is bound. 1902 If this feature is not enabled, 1903 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1904 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER. 1905 * [[{anchor-prefix}features-descriptorBindingSampledImageUpdateAfterBind]] 1906 pname:descriptorBindingSampledImageUpdateAfterBind indicates whether the 1907 implementation supports updating sampled image descriptors after a set 1908 is bound. 1909 If this feature is not enabled, 1910 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1911 ename:VK_DESCRIPTOR_TYPE_SAMPLER, 1912 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or 1913 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE. 1914 * [[{anchor-prefix}features-descriptorBindingStorageImageUpdateAfterBind]] 1915 pname:descriptorBindingStorageImageUpdateAfterBind indicates whether the 1916 implementation supports updating storage image descriptors after a set 1917 is bound. 1918 If this feature is not enabled, 1919 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1920 ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE. 1921 * [[{anchor-prefix}features-descriptorBindingStorageBufferUpdateAfterBind]] 1922 pname:descriptorBindingStorageBufferUpdateAfterBind indicates whether 1923 the implementation supports updating storage buffer descriptors after a 1924 set is bound. 1925 If this feature is not enabled, 1926 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1927 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER. 1928 * [[{anchor-prefix}features-descriptorBindingUniformTexelBufferUpdateAfterBind]] 1929 pname:descriptorBindingUniformTexelBufferUpdateAfterBind indicates 1930 whether the implementation supports updating uniform texel buffer 1931 descriptors after a set is bound. 1932 If this feature is not enabled, 1933 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1934 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER. 1935 * [[{anchor-prefix}features-descriptorBindingStorageTexelBufferUpdateAfterBind]] 1936 pname:descriptorBindingStorageTexelBufferUpdateAfterBind indicates 1937 whether the implementation supports updating storage texel buffer 1938 descriptors after a set is bound. 1939 If this feature is not enabled, 1940 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 1941 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER. 1942 * [[{anchor-prefix}features-descriptorBindingUpdateUnusedWhilePending]] 1943 pname:descriptorBindingUpdateUnusedWhilePending indicates whether the 1944 implementation supports updating descriptors while the set is in use. 1945 If this feature is not enabled, 1946 ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT must: not be 1947 used. 1948 * [[{anchor-prefix}features-descriptorBindingPartiallyBound]] 1949 pname:descriptorBindingPartiallyBound indicates whether the 1950 implementation supports statically using a descriptor set binding in 1951 which some descriptors are not valid. 1952 If this feature is not enabled, 1953 ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT must: not be used. 1954 * [[{anchor-prefix}features-descriptorBindingVariableDescriptorCount]] 1955 pname:descriptorBindingVariableDescriptorCount indicates whether the 1956 implementation supports descriptor sets with a variable-sized last 1957 binding. 1958 If this feature is not enabled, 1959 ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT must: not be 1960 used. 1961 * [[{anchor-prefix}features-runtimeDescriptorArray]] 1962 pname:runtimeDescriptorArray indicates whether the implementation 1963 supports the SPIR-V code:RuntimeDescriptorArray capability. 1964 If this feature is not enabled, descriptors must: not be declared in 1965 runtime arrays. 1966// end::VK_EXT_descriptor_indexing-features[] 1967 1968:refpage: VkPhysicalDeviceDescriptorIndexingFeatures 1969include::{chapters}/features.txt[tag=features] 1970 1971include::{generated}/validity/structs/VkPhysicalDeviceDescriptorIndexingFeatures.txt[] 1972-- 1973endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 1974 1975ifdef::VK_EXT_vertex_attribute_divisor[] 1976[open,refpage='VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT',desc='Structure describing if fetching of vertex attribute may be repeated for instanced rendering',type='structs'] 1977-- 1978The sname:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT structure is 1979defined as: 1980 1981include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.txt[] 1982 1983This structure describes the following features: 1984 1985 * pname:sType is the type of this structure. 1986 * pname:pNext is `NULL` or a pointer to a structure extending this 1987 structure. 1988 * [[features-vertexAttributeInstanceRateDivisor]] 1989 pname:vertexAttributeInstanceRateDivisor specifies whether vertex 1990 attribute fetching may be repeated in case of instanced rendering. 1991 * [[features-vertexAttributeInstanceRateZeroDivisor]] 1992 pname:vertexAttributeInstanceRateZeroDivisor specifies whether a zero 1993 value for sname:VkVertexInputBindingDivisorDescriptionEXT::pname:divisor 1994 is supported. 1995 1996:refpage: VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT 1997include::{chapters}/features.txt[tag=features] 1998 1999include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT.txt[] 2000-- 2001endif::VK_EXT_vertex_attribute_divisor[] 2002 2003ifdef::VK_EXT_astc_decode_mode[] 2004[open,refpage='VkPhysicalDeviceASTCDecodeFeaturesEXT',desc='Structure describing ASTC decode mode features',type='structs'] 2005-- 2006The sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is defined as: 2007 2008include::{generated}/api/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[] 2009 2010This structure describes the following feature: 2011 2012 * pname:sType is the type of this structure. 2013 * pname:pNext is `NULL` or a pointer to a structure extending this 2014 structure. 2015 * [[features-astc-decodeModeSharedExponent]] 2016 pname:decodeModeSharedExponent indicates whether the implementation 2017 supports decoding ASTC compressed formats to 2018 ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision. 2019 2020:refpage: VkPhysicalDeviceASTCDecodeFeaturesEXT 2021include::{chapters}/features.txt[tag=features] 2022 2023include::{generated}/validity/structs/VkPhysicalDeviceASTCDecodeFeaturesEXT.txt[] 2024-- 2025endif::VK_EXT_astc_decode_mode[] 2026 2027ifdef::VK_EXT_transform_feedback[] 2028[open,refpage='VkPhysicalDeviceTransformFeedbackFeaturesEXT',desc='Structure describing transform feedback features that can be supported by an implementation',type='structs'] 2029-- 2030The sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT structure is defined 2031as: 2032 2033include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[] 2034 2035This structure describes the following features: 2036 2037 * pname:sType is the type of this structure. 2038 * pname:pNext is `NULL` or a pointer to a structure extending this 2039 structure. 2040 * [[features-transformFeedback]] pname:transformFeedback indicates whether 2041 the implementation supports transform feedback and shader modules can: 2042 declare the code:TransformFeedback capability. 2043 * [[features-geometryStreams]] pname:geometryStreams indicates whether the 2044 implementation supports the code:GeometryStreams SPIR-V capability. 2045 2046:refpage: VkPhysicalDeviceTransformFeedbackFeaturesEXT 2047include::{chapters}/features.txt[tag=features] 2048 2049include::{generated}/validity/structs/VkPhysicalDeviceTransformFeedbackFeaturesEXT.txt[] 2050-- 2051endif::VK_EXT_transform_feedback[] 2052 2053ifdef::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[] 2054[open,refpage='VkPhysicalDeviceVulkanMemoryModelFeatures',desc='Structure describing features supported by the memory model',type='structs'] 2055-- 2056The sname:VkPhysicalDeviceVulkanMemoryModelFeatures structure is defined as: 2057 2058include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.txt[] 2059 2060ifdef::VK_KHR_vulkan_memory_model[] 2061or the equivalent 2062 2063include::{generated}/api/structs/VkPhysicalDeviceVulkanMemoryModelFeaturesKHR.txt[] 2064endif::VK_KHR_vulkan_memory_model[] 2065 2066This structure describes the following features: 2067 2068 * pname:sType is the type of this structure. 2069 * pname:pNext is `NULL` or a pointer to a structure extending this 2070 structure. 2071 2072// Must have preceding whitespace 2073ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2074ifndef::VK_VERSION_1_2[:anchor-prefix:] 2075// tag::VK_KHR_vulkan_memory_model-features[] 2076 * [[{anchor-prefix}features-vulkanMemoryModel]] pname:vulkanMemoryModel 2077 indicates whether the Vulkan Memory Model is supported, as defined in 2078 <<memory-model,Vulkan Memory Model>>. 2079 This also indicates whether shader modules can: declare the 2080 code:VulkanMemoryModel capability. 2081 * [[{anchor-prefix}features-vulkanMemoryModelDeviceScope]] 2082 pname:vulkanMemoryModelDeviceScope indicates whether the Vulkan Memory 2083 Model can use code:Device scope synchronization. 2084 This also indicates whether shader modules can: declare the 2085 code:VulkanMemoryModelDeviceScope capability. 2086 * [[{anchor-prefix}features-vulkanMemoryModelAvailabilityVisibilityChains]] 2087 pname:vulkanMemoryModelAvailabilityVisibilityChains indicates whether 2088 the Vulkan Memory Model can use <<memory-model-availability-visibility, 2089 availability and visibility chains>> with more than one element. 2090// end::VK_KHR_vulkan_memory_model-features[] 2091 2092:refpage: VkPhysicalDeviceVulkanMemoryModelFeaturesKHR 2093include::{chapters}/features.txt[tag=features] 2094 2095include::{generated}/validity/structs/VkPhysicalDeviceVulkanMemoryModelFeatures.txt[] 2096-- 2097endif::VK_VERSION_1_2,VK_KHR_vulkan_memory_model[] 2098 2099ifdef::VK_EXT_inline_uniform_block[] 2100[open,refpage='VkPhysicalDeviceInlineUniformBlockFeaturesEXT',desc='Structure describing inline uniform block features that can be supported by an implementation',type='structs'] 2101-- 2102The sname:VkPhysicalDeviceInlineUniformBlockFeaturesEXT structure is defined 2103as: 2104 2105include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.txt[] 2106 2107This structure describes the following features: 2108 2109 * pname:sType is the type of this structure. 2110 * pname:pNext is `NULL` or a pointer to a structure extending this 2111 structure. 2112 * [[features-inlineUniformBlock]] pname:inlineUniformBlock indicates 2113 whether the implementation supports inline uniform block descriptors. 2114 If this feature is not enabled, 2115 ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT must: not be used. 2116 * [[features-descriptorBindingInlineUniformBlockUpdateAfterBind]] 2117 pname:descriptorBindingInlineUniformBlockUpdateAfterBind 2118ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2119 is ename:VK_FALSE and reserved for future use. 2120endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2121ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2122 indicates whether the implementation supports updating inline uniform 2123 block descriptors after a set is bound. 2124 If this feature is not enabled, 2125 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 2126 ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT. 2127endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2128 2129:refpage: VkPhysicalDeviceInlineUniformBlockFeaturesEXT 2130include::{chapters}/features.txt[tag=features] 2131 2132include::{generated}/validity/structs/VkPhysicalDeviceInlineUniformBlockFeaturesEXT.txt[] 2133-- 2134endif::VK_EXT_inline_uniform_block[] 2135 2136ifdef::VK_NV_representative_fragment_test[] 2137[open,refpage='VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV',desc='Structure describing the representative fragment test features that can be supported by an implementation',type='structs'] 2138-- 2139The sname:VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV structure is 2140defined as: 2141 2142include::{generated}/api/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.txt[] 2143 2144This structure describes the following feature: 2145 2146 * pname:sType is the type of this structure. 2147 * pname:pNext is `NULL` or a pointer to a structure extending this 2148 structure. 2149 * [[features-representativeFragmentTest]] pname:representativeFragmentTest 2150 indicates whether the implementation supports the representative 2151 fragment test. 2152 See <<fragops-rep-frag-test, Representative Fragment Test>>. 2153 2154:refpage: VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV 2155include::{chapters}/features.txt[tag=features] 2156 2157include::{generated}/validity/structs/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.txt[] 2158-- 2159endif::VK_NV_representative_fragment_test[] 2160 2161ifdef::VK_NV_scissor_exclusive[] 2162[open,refpage='VkPhysicalDeviceExclusiveScissorFeaturesNV',desc='Structure describing exclusive scissor features that can be supported by an implementation',type='structs'] 2163-- 2164The sname:VkPhysicalDeviceExclusiveScissorFeaturesNV structure is defined 2165as: 2166 2167include::{generated}/api/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.txt[] 2168 2169This structure describes the following feature: 2170 2171 * pname:sType is the type of this structure. 2172 * pname:pNext is `NULL` or a pointer to a structure extending this 2173 structure. 2174 * [[features-exclusiveScissor]] pname:exclusiveScissor indicates that the 2175 implementation supports the exclusive scissor test. 2176 2177See <<fragops-exclusive-scissor,Exclusive Scissor Test>> for more 2178information. 2179 2180:refpage: VkPhysicalDeviceExclusiveScissorFeaturesNV 2181include::{chapters}/features.txt[tag=features] 2182 2183include::{generated}/validity/structs/VkPhysicalDeviceExclusiveScissorFeaturesNV.txt[] 2184-- 2185endif::VK_NV_scissor_exclusive[] 2186 2187ifdef::VK_NV_corner_sampled_image[] 2188[open,refpage='VkPhysicalDeviceCornerSampledImageFeaturesNV',desc='Structure describing corner sampled image features that can be supported by an implementation',type='structs'] 2189-- 2190The sname:VkPhysicalDeviceCornerSampledImageFeaturesNV structure is defined 2191as: 2192 2193include::{generated}/api/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.txt[] 2194 2195This structure describes the following feature: 2196 2197 * pname:sType is the type of this structure. 2198 * pname:pNext is `NULL` or a pointer to a structure extending this 2199 structure. 2200 * [[features-cornersampledimage]] pname:cornerSampledImage specifies 2201 whether images can be created with a 2202 slink:VkImageCreateInfo::pname:flags containing 2203 ename:VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV. 2204 See <<resources-images-corner-sampled,Corner-Sampled Images>>. 2205 2206:refpage: VkPhysicalDeviceCornerSampledImageFeaturesNV 2207include::{chapters}/features.txt[tag=features] 2208 2209include::{generated}/validity/structs/VkPhysicalDeviceCornerSampledImageFeaturesNV.txt[] 2210-- 2211endif::VK_NV_corner_sampled_image[] 2212 2213ifdef::VK_NV_compute_shader_derivatives[] 2214[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesNV',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs'] 2215-- 2216The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure is 2217defined as: 2218 2219include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.txt[] 2220 2221This structure describes the following features: 2222 2223 * pname:sType is the type of this structure. 2224 * pname:pNext is `NULL` or a pointer to a structure extending this 2225 structure. 2226 * [[features-computeDerivativeGroupQuads]] 2227 pname:computeDerivativeGroupQuads indicates that the implementation 2228 supports the code:ComputeDerivativeGroupQuadsNV SPIR-V capability. 2229 * [[features-computeDerivativeGroupLinear]] 2230 pname:computeDerivativeGroupLinear indicates that the implementation 2231 supports the code:ComputeDerivativeGroupLinearNV SPIR-V capability. 2232 2233See <<shaders-scope-quad, Quad shader scope>> for more information. 2234 2235:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures. 2236include::{chapters}/features.txt[tag=features] 2237 2238include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.txt[] 2239-- 2240endif::VK_NV_compute_shader_derivatives[] 2241 2242ifdef::VK_NV_fragment_shader_barycentric[] 2243[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs'] 2244-- 2245The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV structure is 2246defined as: 2247 2248include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[] 2249 2250This structure describes the following feature: 2251 2252 * pname:sType is the type of this structure. 2253 * pname:pNext is `NULL` or a pointer to a structure extending this 2254 structure. 2255 * [[features-fragmentShaderBarycentric]] pname:fragmentShaderBarycentric 2256 indicates that the implementation supports the code:BaryCoordNV and 2257 code:BaryCoordNoPerspNV SPIR-V fragment shader built-ins and supports 2258 the code:PerVertexNV SPIR-V decoration on fragment shader input 2259 variables. 2260 2261See <<primsrast-barycentric,Barycentric Interpolation>> for more 2262information. 2263 2264:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV 2265include::{chapters}/features.txt[tag=features] 2266 2267include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[] 2268-- 2269endif::VK_NV_fragment_shader_barycentric[] 2270 2271ifdef::VK_NV_shader_image_footprint[] 2272[open,refpage='VkPhysicalDeviceShaderImageFootprintFeaturesNV',desc='Structure describing shader image footprint features that can be supported by an implementation',type='structs'] 2273-- 2274The sname:VkPhysicalDeviceShaderImageFootprintFeaturesNV structure is 2275defined as: 2276 2277include::{generated}/api/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.txt[] 2278 2279This structure describes the following feature: 2280 2281 * pname:sType is the type of this structure. 2282 * pname:pNext is `NULL` or a pointer to a structure extending this 2283 structure. 2284 * [[features-imageFootprint]] pname:imageFootprint specifies whether the 2285 implementation supports the code:ImageFootprintNV SPIR-V capability. 2286 2287See <<textures-footprint,Texel Footprint Evaluation>> for more information. 2288 2289:refpage: VkPhysicalDeviceShaderImageFootprintFeaturesNV 2290include::{chapters}/features.txt[tag=features] 2291 2292include::{generated}/validity/structs/VkPhysicalDeviceShaderImageFootprintFeaturesNV.txt[] 2293-- 2294endif::VK_NV_shader_image_footprint[] 2295 2296ifdef::VK_NV_shading_rate_image[] 2297[open,refpage='VkPhysicalDeviceShadingRateImageFeaturesNV',desc='Structure describing shading rate image features that can be supported by an implementation',type='structs'] 2298-- 2299The sname:VkPhysicalDeviceShadingRateImageFeaturesNV structure is defined 2300as: 2301 2302include::{generated}/api/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.txt[] 2303 2304This structure describes the following features: 2305 2306 * pname:sType is the type of this structure. 2307 * pname:pNext is `NULL` or a pointer to a structure extending this 2308 structure. 2309 * [[features-shadingRateImage]] pname:shadingRateImage indicates that the 2310 implementation supports the use of a shading rate image to derive an 2311 effective shading rate for fragment processing. 2312 It also indicates that the implementation supports the 2313 code:ShadingRateNV SPIR-V execution mode. 2314 * [[features-shadingRateCoarseSampleOrder]] 2315 pname:shadingRateCoarseSampleOrder indicates that the implementation 2316 supports a user-configurable ordering of coverage samples in fragments 2317 larger than one pixel. 2318 2319See <<primsrast-shading-rate-image, Shading Rate Image>> for more 2320information. 2321 2322:refpage: VkPhysicalDeviceShadingRateImageFeaturesNV 2323include::{chapters}/features.txt[tag=features] 2324 2325include::{generated}/validity/structs/VkPhysicalDeviceShadingRateImageFeaturesNV.txt[] 2326-- 2327endif::VK_NV_shading_rate_image[] 2328 2329ifdef::VK_EXT_fragment_density_map[] 2330[open,refpage='VkPhysicalDeviceFragmentDensityMapFeaturesEXT',desc='Structure describing fragment density map features that can be supported by an implementation',type='structs'] 2331-- 2332The sname:VkPhysicalDeviceFragmentDensityMapFeaturesEXT structure is defined 2333as: 2334 2335include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.txt[] 2336 2337This structure describes the following features: 2338 2339 * pname:sType is the type of this structure. 2340 * pname:pNext is `NULL` or a pointer to a structure extending this 2341 structure. 2342 * [[features-fragmentDensityMap]] pname:fragmentDensityMap specifies 2343 whether the implementation supports render passes with a fragment 2344 density map attachment. 2345 If this feature is not enabled and the pname:pNext chain of 2346 slink:VkRenderPassCreateInfo includes a 2347 slink:VkRenderPassFragmentDensityMapCreateInfoEXT structure, 2348 pname:fragmentDensityMapAttachment must: be ename:VK_ATTACHMENT_UNUSED. 2349 * [[features-fragmentDensityMapDynamic]] pname:fragmentDensityMapDynamic 2350 specifies whether the implementation supports dynamic fragment density 2351 map image views. 2352 If this feature is not enabled, 2353 ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT must: 2354 not be included in slink:VkImageViewCreateInfo::pname:flags. 2355 * [[features-fragmentDensityMapNonSubsampledImages]] 2356 pname:fragmentDensityMapNonSubsampledImages specifies whether the 2357 implementation supports regular non-subsampled image attachments with 2358 fragment density map render passes. 2359 If this feature is not enabled, render passes with a 2360 <<renderpass-fragmentdensitymapattachment,fragment density map 2361 attachment>> must: only have <<samplers-subsamplesampler,subsampled 2362 attachments>> bound. 2363 2364:refpage: VkPhysicalDeviceFragmentDensityMapFeaturesEXT 2365include::{chapters}/features.txt[tag=features] 2366 2367include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.txt[] 2368-- 2369endif::VK_EXT_fragment_density_map[] 2370 2371ifdef::VK_EXT_fragment_density_map2[] 2372[open,refpage='VkPhysicalDeviceFragmentDensityMap2FeaturesEXT',desc='Structure describing additional fragment density map features that can be supported by an implementation',type='structs'] 2373-- 2374The sname:VkPhysicalDeviceFragmentDensityMap2FeaturesEXT structure is 2375defined as: 2376 2377include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.txt[] 2378 2379This structure describes the following features: 2380 2381 * pname:sType is the type of this structure. 2382 * pname:pNext is `NULL` or a pointer to a structure extending this 2383 structure. 2384 * [[features-fragmentDensityMapDeferred]] pname:fragmentDensityMapDeferred 2385 specifies whether the implementation supports deferred reads of fragment 2386 density map image views. 2387 If this feature is not enabled, 2388 ename:VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT must: 2389 not be included in sname:VkImageViewCreateInfo::pname:flags. 2390 2391:refpage: VkPhysicalDeviceFragmentDensityMap2FeaturesEXT 2392include::{chapters}/features.txt[tag=features] 2393 2394include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.txt[] 2395-- 2396endif::VK_EXT_fragment_density_map2[] 2397 2398ifdef::VK_HUAWEI_invocation_mask[] 2399[open,refpage='VkPhysicalDeviceInvocationMaskFeaturesHUAWEI',desc='Structure describing invocation mask features that can be supported by an implementation',type='structs'] 2400-- 2401The sname:VkPhysicalDeviceInvocationMaskFeaturesHUAWEI structure is defined 2402as: 2403 2404include::{generated}/api/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.txt[] 2405 2406This structure describes the following features: 2407 2408 * pname:sType is the type of this structure. 2409 * pname:pNext is `NULL` or a pointer to a structure extending this 2410 structure. 2411 * [[features-invocationMask]] pname:invocationMask indicates that the 2412 implementation supports the use of an invocation mask image to optimize 2413 the ray dispatch. 2414 2415:refpage: VkPhysicalDeviceInvocationMaskFeaturesHUAWEI 2416include::{chapters}/features.txt[tag=features] 2417 2418include::{generated}/validity/structs/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.txt[] 2419-- 2420endif::VK_HUAWEI_invocation_mask[] 2421 2422ifdef::VK_VERSION_1_2,VK_EXT_scalar_block_layout[] 2423[open,refpage='VkPhysicalDeviceScalarBlockLayoutFeatures',desc='Structure indicating support for scalar block layouts',type='structs',alias='VkPhysicalDeviceScalarBlockLayoutFeaturesEXT'] 2424-- 2425The sname:VkPhysicalDeviceScalarBlockLayoutFeatures structure is defined as: 2426 2427include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.txt[] 2428 2429ifdef::VK_EXT_scalar_block_layout[] 2430or the equivalent 2431 2432include::{generated}/api/structs/VkPhysicalDeviceScalarBlockLayoutFeaturesEXT.txt[] 2433endif::VK_EXT_scalar_block_layout[] 2434 2435This structure describes the following feature: 2436 2437 * pname:sType is the type of this structure. 2438 * pname:pNext is `NULL` or a pointer to a structure extending this 2439 structure. 2440 2441// Must have preceding whitespace 2442ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2443ifndef::VK_VERSION_1_2[:anchor-prefix:] 2444// tag::VK_EXT_scalar_block_layout-features[] 2445 * [[{anchor-prefix}features-scalarBlockLayout]] pname:scalarBlockLayout 2446 indicates that the implementation supports the layout of resource blocks 2447 in shaders using <<interfaces-alignment-requirements, scalar 2448 alignment>>. 2449// end::VK_EXT_scalar_block_layout-features[] 2450 2451:refpage: VkPhysicalDeviceScalarBlockLayoutFeatures 2452include::{chapters}/features.txt[tag=features] 2453 2454include::{generated}/validity/structs/VkPhysicalDeviceScalarBlockLayoutFeatures.txt[] 2455-- 2456endif::VK_VERSION_1_2,VK_EXT_scalar_block_layout[] 2457 2458ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[] 2459[open,refpage='VkPhysicalDeviceUniformBufferStandardLayoutFeatures',desc='Structure indicating support for std430-like packing in uniform buffers',type='structs',alias='VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR'] 2460-- 2461The sname:VkPhysicalDeviceUniformBufferStandardLayoutFeatures structure is 2462defined as: 2463 2464include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.txt[] 2465 2466ifdef::VK_KHR_uniform_buffer_standard_layout[] 2467or the equivalent 2468 2469include::{generated}/api/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR.txt[] 2470endif::VK_KHR_uniform_buffer_standard_layout[] 2471 2472This structure describes the following feature: 2473 2474 * pname:sType is the type of this structure. 2475 * pname:pNext is `NULL` or a pointer to a structure extending this 2476 structure. 2477 2478// Must have preceding whitespace 2479ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2480ifndef::VK_VERSION_1_2[:anchor-prefix:] 2481// tag::VK_KHR_uniform_buffer_standard_layout-features[] 2482 * [[{anchor-prefix}features-uniformBufferStandardLayout]] 2483 pname:uniformBufferStandardLayout indicates that the implementation 2484 supports the same layouts for uniform buffers as for storage and other 2485 kinds of buffers. 2486 See <<interfaces-resources-standard-layout,Standard Buffer Layout>>. 2487// end::VK_KHR_uniform_buffer_standard_layout-features[] 2488 2489:refpage: VkPhysicalDeviceUniformBufferStandardLayoutFeatures 2490include::{chapters}/features.txt[tag=features] 2491 2492include::{generated}/validity/structs/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.txt[] 2493-- 2494endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[] 2495 2496ifdef::VK_EXT_depth_clip_enable[] 2497[open,refpage='VkPhysicalDeviceDepthClipEnableFeaturesEXT',desc='Structure indicating support for explicit enable of depth clip',type='structs'] 2498-- 2499The sname:VkPhysicalDeviceDepthClipEnableFeaturesEXT structure is defined 2500as: 2501 2502include::{generated}/api/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.txt[] 2503 2504This structure describes the following feature: 2505 2506 * pname:sType is the type of this structure. 2507 * pname:pNext is `NULL` or a pointer to a structure extending this 2508 structure. 2509 * [[features-depthClipEnable]] pname:depthClipEnable indicates that the 2510 implementation supports setting the depth clipping operation explicitly 2511 via the slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT 2512 pipeline state. 2513 Otherwise depth clipping is only enabled when 2514 slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is 2515 set to ename:VK_FALSE. 2516 2517:refpage: VkPhysicalDeviceDepthClipEnableFeaturesEXT 2518include::{chapters}/features.txt[tag=features] 2519 2520include::{generated}/validity/structs/VkPhysicalDeviceDepthClipEnableFeaturesEXT.txt[] 2521-- 2522endif::VK_EXT_depth_clip_enable[] 2523 2524ifdef::VK_EXT_memory_priority[] 2525[open,refpage='VkPhysicalDeviceMemoryPriorityFeaturesEXT',desc='Structure describing memory priority features that can be supported by an implementation',type='structs'] 2526-- 2527The sname:VkPhysicalDeviceMemoryPriorityFeaturesEXT structure is defined as: 2528 2529include::{generated}/api/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.txt[] 2530 2531This structure describes the following feature: 2532 2533 * pname:sType is the type of this structure. 2534 * pname:pNext is `NULL` or a pointer to a structure extending this 2535 structure. 2536 * [[features-memoryPriority]] pname:memoryPriority indicates that the 2537 implementation supports memory priorities specified at memory allocation 2538 time via slink:VkMemoryPriorityAllocateInfoEXT. 2539 2540:refpage: VkPhysicalDeviceMemoryPriorityFeaturesEXT 2541include::{chapters}/features.txt[tag=features] 2542 2543include::{generated}/validity/structs/VkPhysicalDeviceMemoryPriorityFeaturesEXT.txt[] 2544-- 2545endif::VK_EXT_memory_priority[] 2546 2547ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[] 2548[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeatures',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferDeviceAddressFeaturesKHR'] 2549-- 2550The sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure is defined 2551as: 2552 2553include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.txt[] 2554 2555ifdef::VK_KHR_buffer_device_address[] 2556or the equivalent 2557 2558include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesKHR.txt[] 2559endif::VK_KHR_buffer_device_address[] 2560 2561This structure describes the following features: 2562 2563 * pname:sType is the type of this structure. 2564 * pname:pNext is `NULL` or a pointer to a structure extending this 2565 structure. 2566 2567// Must have preceding whitespace 2568ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2569ifndef::VK_VERSION_1_2[:anchor-prefix:] 2570// tag::VK_EXT_buffer_device_address-features[] 2571 * [[{anchor-prefix}features-bufferDeviceAddress]] 2572 pname:bufferDeviceAddress indicates that the implementation supports 2573 accessing buffer memory in shaders as storage buffers via an address 2574 queried from flink:vkGetBufferDeviceAddress. 2575 * [[{anchor-prefix}features-bufferDeviceAddressCaptureReplay]] 2576 pname:bufferDeviceAddressCaptureReplay indicates that the implementation 2577 supports saving and reusing buffer and device addresses, e.g. for trace 2578 capture and replay. 2579 * [[{anchor-prefix}features-bufferDeviceAddressMultiDevice]] 2580 pname:bufferDeviceAddressMultiDevice indicates that the implementation 2581 supports the pname:bufferDeviceAddress 2582ifndef::VK_KHR_ray_tracing_pipeline+VK_KHR_ray_query[feature] 2583ifdef::VK_KHR_ray_tracing_pipeline[] 2584ifndef::VK_KHR_ray_query[] 2585 and pname:rayTracingPipeline features 2586endif::VK_KHR_ray_query[] 2587ifdef::VK_KHR_ray_query[] 2588 , pname:rayTracingPipeline and pname:rayQuery features 2589endif::VK_KHR_ray_query[] 2590endif::VK_KHR_ray_tracing_pipeline[] 2591ifndef::VK_KHR_ray_tracing_pipeline[] 2592ifdef::VK_KHR_ray_query[] 2593 and pname:rayQuery features 2594endif::VK_KHR_ray_query[] 2595endif::VK_KHR_ray_tracing_pipeline[] 2596 for logical devices created with multiple physical devices. 2597 If this feature is not supported, buffer 2598ifdef::VK_KHR_acceleration_structure[] 2599 and acceleration structure 2600endif::VK_KHR_acceleration_structure[] 2601 addresses must: not be queried on a logical device created with more 2602 than one physical device. 2603// end::VK_EXT_buffer_device_address-features[] 2604 2605[NOTE] 2606.Note 2607==== 2608pname:bufferDeviceAddressMultiDevice exists to allow certain legacy 2609platforms to be able to support pname:bufferDeviceAddress without needing to 2610support shared GPU virtual addresses for multi-device configurations. 2611==== 2612 2613See flink:vkGetBufferDeviceAddress for more information. 2614 2615:refpage: VkPhysicalDeviceBufferDeviceAddressFeatures 2616include::{chapters}/features.txt[tag=features] 2617 2618include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeatures.txt[] 2619-- 2620endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[] 2621 2622ifdef::VK_EXT_buffer_device_address[] 2623[open,refpage='VkPhysicalDeviceBufferDeviceAddressFeaturesEXT',desc='Structure describing buffer address features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceBufferAddressFeaturesEXT'] 2624-- 2625The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure is 2626defined as: 2627 2628include::{generated}/api/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[] 2629 2630include::{generated}/api/structs/VkPhysicalDeviceBufferAddressFeaturesEXT.txt[] 2631 2632This structure describes the following features: 2633 2634 * pname:sType is the type of this structure. 2635 * pname:pNext is `NULL` or a pointer to a structure extending this 2636 structure. 2637 * [[features-bufferDeviceAddressEXT]] pname:bufferDeviceAddress indicates 2638 that the implementation supports accessing buffer memory in shaders as 2639 storage buffers via an address queried from 2640 flink:vkGetBufferDeviceAddressEXT. 2641 * [[features-bufferDeviceAddressCaptureReplayEXT]] 2642 pname:bufferDeviceAddressCaptureReplay indicates that the implementation 2643 supports saving and reusing buffer addresses, e.g. for trace capture and 2644 replay. 2645 * [[features-bufferDeviceAddressMultiDeviceEXT]] 2646 pname:bufferDeviceAddressMultiDevice indicates that the implementation 2647 supports the pname:bufferDeviceAddress feature for logical devices 2648 created with multiple physical devices. 2649 If this feature is not supported, buffer addresses must: not be queried 2650 on a logical device created with more than one physical device. 2651 2652:refpage: VkPhysicalDeviceBufferDeviceAddressFeaturesEXT 2653include::{chapters}/features.txt[tag=features] 2654 2655ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[] 2656[NOTE] 2657.Note 2658==== 2659The sname:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT structure has the 2660same members as the sname:VkPhysicalDeviceBufferDeviceAddressFeatures 2661structure, but the functionality indicated by the members is expressed 2662differently. 2663The features indicated by the 2664sname:VkPhysicalDeviceBufferDeviceAddressFeatures structure requires 2665additional flags to be passed at memory allocation time, and the capture and 2666replay mechanism is built around opaque capture addresses for buffer and 2667memory objects. 2668==== 2669endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[] 2670 2671include::{generated}/validity/structs/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.txt[] 2672-- 2673endif::VK_EXT_buffer_device_address[] 2674 2675ifdef::VK_NV_dedicated_allocation_image_aliasing[] 2676[open,refpage='VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',desc='Structure describing dedicated allocation image aliasing features that can be supported by an implementation',type='structs'] 2677-- 2678The sname:VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 2679structure is defined as: 2680 2681include::{generated}/api/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[] 2682 2683This structure describes the following feature: 2684 2685 * pname:sType is the type of this structure. 2686 * pname:pNext is `NULL` or a pointer to a structure extending this 2687 structure. 2688 * [[features-dedicatedAllocationImageAliasing]] 2689 pname:dedicatedAllocationImageAliasing indicates that the implementation 2690 supports aliasing of compatible image objects on a dedicated allocation. 2691 2692:refpage: VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV 2693include::{chapters}/features.txt[tag=features] 2694 2695include::{generated}/validity/structs/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.txt[] 2696-- 2697endif::VK_NV_dedicated_allocation_image_aliasing[] 2698 2699ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[] 2700[open,refpage='VkPhysicalDeviceImagelessFramebufferFeatures',desc='Structure indicating support for imageless framebuffers',type='structs',alias='VkPhysicalDeviceImagelessFramebufferFeaturesKHR'] 2701-- 2702The sname:VkPhysicalDeviceImagelessFramebufferFeatures structure is defined 2703as: 2704 2705include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeatures.txt[] 2706 2707ifdef::VK_KHR_imageless_framebuffer[] 2708or the equivalent 2709 2710include::{generated}/api/structs/VkPhysicalDeviceImagelessFramebufferFeaturesKHR.txt[] 2711endif::VK_KHR_imageless_framebuffer[] 2712 2713This structure describes the following feature: 2714 2715 * pname:sType is the type of this structure. 2716 * pname:pNext is `NULL` or a pointer to a structure extending this 2717 structure. 2718 2719// Must have preceding whitespace 2720ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2721ifndef::VK_VERSION_1_2[:anchor-prefix:] 2722// tag::VK_KHR_imageless_framebuffer-features[] 2723 * [[{anchor-prefix}features-imagelessFramebuffer]] 2724 pname:imagelessFramebuffer indicates that the implementation supports 2725 specifying the image view for attachments at render pass begin time via 2726 slink:VkRenderPassAttachmentBeginInfo. 2727// end::VK_KHR_imageless_framebuffer-features[] 2728 2729:refpage: VkPhysicalDeviceImagelessFramebufferFeatures 2730include::{chapters}/features.txt[tag=features] 2731 2732include::{generated}/validity/structs/VkPhysicalDeviceImagelessFramebufferFeatures.txt[] 2733-- 2734endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[] 2735 2736ifdef::VK_EXT_fragment_shader_interlock[] 2737[open,refpage='VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT',desc='Structure describing fragment shader interlock features that can be supported by an implementation',type='structs'] 2738-- 2739The sname:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT structure is 2740defined as: 2741 2742include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.txt[] 2743 2744This structure describes the following features: 2745 2746 * pname:sType is the type of this structure. 2747 * pname:pNext is `NULL` or a pointer to a structure extending this 2748 structure. 2749 * [[features-fragmentShaderSampleInterlock]] 2750 pname:fragmentShaderSampleInterlock indicates that the implementation 2751 supports the code:FragmentShaderSampleInterlockEXT SPIR-V capability. 2752 * [[features-fragmentShaderPixelInterlock]] 2753 pname:fragmentShaderPixelInterlock indicates that the implementation 2754 supports the code:FragmentShaderPixelInterlockEXT SPIR-V capability. 2755 * [[features-fragmentShaderShadingRateInterlock]] 2756 pname:fragmentShaderShadingRateInterlock indicates that the 2757 implementation supports the code:FragmentShaderShadingRateInterlockEXT 2758 SPIR-V capability. 2759 2760:refpage: VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT 2761include::{chapters}/features.txt[tag=features] 2762 2763include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.txt[] 2764-- 2765endif::VK_EXT_fragment_shader_interlock[] 2766 2767ifdef::VK_NV_cooperative_matrix[] 2768[open,refpage='VkPhysicalDeviceCooperativeMatrixFeaturesNV',desc='Structure describing cooperative matrix features that can be supported by an implementation',type='structs'] 2769-- 2770The sname:VkPhysicalDeviceCooperativeMatrixFeaturesNV structure is defined 2771as: 2772 2773include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.txt[] 2774 2775This structure describes the following features: 2776 2777 * pname:sType is the type of this structure. 2778 * pname:pNext is `NULL` or a pointer to a structure extending this 2779 structure. 2780 * [[features-cooperativeMatrix]] pname:cooperativeMatrix indicates that 2781 the implementation supports the code:CooperativeMatrixNV SPIR-V 2782 capability. 2783 * [[features-cooperativeMatrixRobustBufferAccess]] 2784 pname:cooperativeMatrixRobustBufferAccess indicates that the 2785 implementation supports robust buffer access for SPIR-V 2786 code:OpCooperativeMatrixLoadNV and code:OpCooperativeMatrixStoreNV 2787 instructions. 2788 2789:refpage: VkPhysicalDeviceCooperativeMatrixFeaturesNV 2790include::{chapters}/features.txt[tag=features] 2791 2792include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixFeaturesNV.txt[] 2793-- 2794endif::VK_NV_cooperative_matrix[] 2795 2796ifdef::VK_EXT_ycbcr_image_arrays[] 2797[open,refpage='VkPhysicalDeviceYcbcrImageArraysFeaturesEXT',desc='Structure describing extended {YCbCr} image creation features that can be supported by an implementation',type='structs'] 2798-- 2799The sname:VkPhysicalDeviceYcbcrImageArraysFeaturesEXT structure is defined 2800as: 2801 2802include::{generated}/api/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.txt[] 2803 2804This structure describes the following feature: 2805 2806 * pname:sType is the type of this structure. 2807 * pname:pNext is `NULL` or a pointer to a structure extending this 2808 structure. 2809 * [[features-ycbcrImageArrays]] pname:ycbcrImageArrays indicates that the 2810 implementation supports creating images with a format that requires 2811 <<formats-requiring-sampler-ycbcr-conversion, {YCbCr} conversion>> and 2812 has multiple array layers. 2813 2814:refpage: VkPhysicalDeviceYcbcrImageArraysFeaturesEXT 2815include::{chapters}/features.txt[tag=features] 2816 2817include::{generated}/validity/structs/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.txt[] 2818-- 2819endif::VK_EXT_ycbcr_image_arrays[] 2820 2821ifdef::VK_VERSION_1_1[] 2822ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[] 2823[open,refpage='VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures',desc='Structure describing the extended types subgroups support feature for an implementation',type='structs',alias='VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR'] 2824-- 2825The sname:VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures structure is 2826defined as: 2827 2828include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.txt[] 2829 2830ifdef::VK_KHR_shader_subgroup_extended_types[] 2831or the equivalent 2832 2833include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR.txt[] 2834endif::VK_KHR_shader_subgroup_extended_types[] 2835 2836This structure describes the following feature: 2837 2838 * pname:sType is the type of this structure. 2839 * pname:pNext is `NULL` or a pointer to a structure extending this 2840 structure. 2841 2842// Must have preceding whitespace 2843ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2844ifndef::VK_VERSION_1_2[:anchor-prefix:] 2845// tag::VK_KHR_shader_subgroup_extended_types-features[] 2846 * [[{anchor-prefix}features-subgroup-extended-types]] 2847 pname:shaderSubgroupExtendedTypes is a boolean specifying whether 2848 subgroup operations can use 8-bit integer, 16-bit integer, 64-bit 2849 integer, 16-bit floating-point, and vectors of these types in 2850 <<shaders-group-operations,group operations>> with 2851 <<shaders-scope-subgroup, subgroup scope>>, if the implementation 2852 supports the types. 2853// end::VK_KHR_shader_subgroup_extended_types-features[] 2854 2855:refpage: VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures 2856include::{chapters}/features.txt[tag=features] 2857 2858include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.txt[] 2859-- 2860endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[] 2861endif::VK_VERSION_1_1[] 2862 2863ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[] 2864[open,refpage='VkPhysicalDeviceHostQueryResetFeatures',desc='Structure describing whether queries can be reset from the host',type='structs',alias='VkPhysicalDeviceHostQueryResetFeaturesEXT'] 2865-- 2866The sname:VkPhysicalDeviceHostQueryResetFeatures structure is defined as: 2867 2868include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeatures.txt[] 2869 2870ifdef::VK_EXT_host_query_reset[] 2871or the equivalent 2872 2873include::{generated}/api/structs/VkPhysicalDeviceHostQueryResetFeaturesEXT.txt[] 2874endif::VK_EXT_host_query_reset[] 2875 2876This structure describes the following feature: 2877 2878 * pname:sType is the type of this structure. 2879 * pname:pNext is `NULL` or a pointer to a structure extending this 2880 structure. 2881 2882// Must have preceding whitespace 2883ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2884ifndef::VK_VERSION_1_2[:anchor-prefix:] 2885// tag::VK_EXT_host_query_reset-features[] 2886 * [[{anchor-prefix}features-hostQueryReset]] pname:hostQueryReset 2887 indicates that the implementation supports resetting queries from the 2888 host with flink:vkResetQueryPool. 2889// end::VK_EXT_host_query_reset-features[] 2890 2891:refpage: VkPhysicalDeviceHostQueryResetFeatures 2892include::{chapters}/features.txt[tag=features] 2893 2894include::{generated}/validity/structs/VkPhysicalDeviceHostQueryResetFeatures.txt[] 2895-- 2896endif::VK_VERSION_1_2,VK_EXT_host_query_reset[] 2897 2898ifdef::VK_INTEL_shader_integer_functions2[] 2899[open,refpage='VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',desc='Structure describing shader integer functions that can be supported by an implementation',type='structs'] 2900-- 2901The sname:VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL structure is 2902defined as: 2903 2904include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.txt[] 2905 2906This structure describes the following feature: 2907 2908 * pname:sType is the type of this structure. 2909 * pname:pNext is `NULL` or a pointer to a structure extending this 2910 structure. 2911 * [[features-shaderIntegerFunctions2]] pname:shaderIntegerFunctions2 2912 indicates that the implementation supports the 2913 code:IntegerFunctions2INTEL SPIR-V capability. 2914 2915:refpage: VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTELfeatures. 2916include::{chapters}/features.txt[tag=features] 2917 2918include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.txt[] 2919-- 2920endif::VK_INTEL_shader_integer_functions2[] 2921 2922ifdef::VK_NV_coverage_reduction_mode[] 2923[open,refpage='VkPhysicalDeviceCoverageReductionModeFeaturesNV',desc='Structure describing the coverage reduction mode features that can be supported by an implementation',type='structs'] 2924-- 2925The sname:VkPhysicalDeviceCoverageReductionModeFeaturesNV structure is 2926defined as: 2927 2928include::{generated}/api/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[] 2929 2930This structure describes the following feature: 2931 2932 * pname:sType is the type of this structure. 2933 * pname:pNext is `NULL` or a pointer to a structure extending this 2934 structure. 2935 * [[features-coverageReductionMode]] pname:coverageReductionMode indicates 2936 whether the implementation supports coverage reduction modes. 2937 See <<fragops-coverage-reduction, Coverage Reduction>>. 2938 2939:refpage: VkPhysicalDeviceCoverageReductionModeFeaturesNV 2940include::{chapters}/features.txt[tag=features] 2941 2942include::{generated}/validity/structs/VkPhysicalDeviceCoverageReductionModeFeaturesNV.txt[] 2943-- 2944endif::VK_NV_coverage_reduction_mode[] 2945 2946ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 2947[open,refpage='VkPhysicalDeviceTimelineSemaphoreFeatures',desc='Structure describing timeline semaphore features that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTimelineSemaphoreFeaturesKHR'] 2948-- 2949The sname:VkPhysicalDeviceTimelineSemaphoreFeatures structure is defined as: 2950 2951include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.txt[] 2952 2953ifdef::VK_KHR_timeline_semaphore[] 2954or the equivalent 2955 2956include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreFeaturesKHR.txt[] 2957endif::VK_KHR_timeline_semaphore[] 2958 2959This structure describes the following feature: 2960 2961 * pname:sType is the type of this structure. 2962 * pname:pNext is `NULL` or a pointer to a structure extending this 2963 structure. 2964 2965// Must have preceding whitespace 2966ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2967ifndef::VK_VERSION_1_2[:anchor-prefix:] 2968// tag::VK_KHR_timeline_semaphore-features[] 2969 * [[{anchor-prefix}features-timelineSemaphore]] pname:timelineSemaphore 2970 indicates whether semaphores created with a elink:VkSemaphoreType of 2971 ename:VK_SEMAPHORE_TYPE_TIMELINE are supported. 2972// end::VK_KHR_timeline_semaphore-features[] 2973 2974:refpage: VkPhysicalDeviceTimelineSemaphoreFeatures 2975include::{chapters}/features.txt[tag=features] 2976 2977include::{generated}/validity/structs/VkPhysicalDeviceTimelineSemaphoreFeatures.txt[] 2978-- 2979endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 2980 2981ifdef::VK_EXT_index_type_uint8[] 2982[open,refpage='VkPhysicalDeviceIndexTypeUint8FeaturesEXT',desc='Structure describing whether uint8 index type can be used',type='structs'] 2983-- 2984The sname:VkPhysicalDeviceIndexTypeUint8FeaturesEXT structure is defined as: 2985 2986include::{generated}/api/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.txt[] 2987 2988This structure describes the following feature: 2989 2990 * pname:sType is the type of this structure. 2991 * pname:pNext is `NULL` or a pointer to a structure extending this 2992 structure. 2993 * [[features-indexTypeUint8]] pname:indexTypeUint8 indicates that 2994 ename:VK_INDEX_TYPE_UINT8_EXT can be used with 2995 flink:vkCmdBindIndexBuffer. 2996 2997:refpage: VkPhysicalDeviceIndexTypeUint8FeaturesEXT 2998include::{chapters}/features.txt[tag=features] 2999 3000include::{generated}/validity/structs/VkPhysicalDeviceIndexTypeUint8FeaturesEXT.txt[] 3001-- 3002endif::VK_EXT_index_type_uint8[] 3003 3004ifdef::VK_EXT_primitive_topology_list_restart[] 3005[open,refpage='VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',desc='Structure describing whether list type primitives can support primitive restart',type='structs'] 3006-- 3007The sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure 3008is defined as: 3009 3010include::{generated}/api/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.txt[] 3011 3012The members of the 3013sname:VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT structure 3014describe the following features: 3015 3016 * pname:sType is the type of this structure. 3017 * pname:pNext is `NULL` or a pointer to a structure extending this 3018 structure. 3019 * [[features-primitiveTopologyListRestart]] 3020 pname:primitiveTopologyListRestart indicates that list type primitives, 3021 ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, 3022 ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, 3023 ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 3024 ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY and 3025 ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, can: use the 3026 primitive restart index value in index buffers. 3027 * [[features-primitiveTopologyPatchListRestart]] 3028 pname:primitiveTopologyPatchListRestart indicates that the 3029 ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology can: use the primitive 3030 restart index value in index buffers. 3031 3032:refpage: VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT 3033include::{chapters}/features.txt[tag=features] 3034 3035include::{generated}/validity/structs/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.txt[] 3036-- 3037endif::VK_EXT_primitive_topology_list_restart[] 3038 3039ifdef::VK_NV_shader_sm_builtins[] 3040[open,refpage='VkPhysicalDeviceShaderSMBuiltinsFeaturesNV',desc='Structure describing the shader SM Builtins features that can be supported by an implementation',type='structs'] 3041-- 3042The sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is defined 3043as: 3044 3045include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[] 3046 3047This structure describes the following feature: 3048 3049 * pname:sType is the type of this structure. 3050 * pname:pNext is `NULL` or a pointer to a structure extending this 3051 structure. 3052 * [[features-shaderSMBuiltins]] pname:shaderSMBuiltins indicates whether 3053 the implementation supports the SPIR-V code:ShaderSMBuiltinsNV 3054 capability. 3055 3056:refpage: VkPhysicalDeviceShaderSMBuiltinsFeaturesNV 3057include::{chapters}/features.txt[tag=features] 3058 3059include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[] 3060-- 3061endif::VK_NV_shader_sm_builtins[] 3062 3063ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] 3064[open,refpage='VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures',desc='Structure describing whether the implementation can do depth and stencil image barriers separately',type='structs',alias='VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR'] 3065-- 3066The sname:VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures structure is 3067defined as: 3068 3069include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.txt[] 3070 3071ifdef::VK_KHR_separate_depth_stencil_layouts[] 3072or the equivalent 3073 3074include::{generated}/api/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR.txt[] 3075endif::VK_KHR_separate_depth_stencil_layouts[] 3076 3077This structure describes the following feature: 3078 3079 * pname:sType is the type of this structure. 3080 * pname:pNext is `NULL` or a pointer to a structure extending this 3081 structure. 3082 3083// Must have preceding whitespace 3084ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 3085ifndef::VK_VERSION_1_2[:anchor-prefix:] 3086// tag::VK_KHR_separate_depth_stencil_layouts-features[] 3087 * [[{anchor-prefix}features-separateDepthStencilLayouts]] 3088 pname:separateDepthStencilLayouts indicates whether the implementation 3089 supports a sname:VkImageMemoryBarrier for a depth/stencil image with 3090 only one of ename:VK_IMAGE_ASPECT_DEPTH_BIT or 3091 ename:VK_IMAGE_ASPECT_STENCIL_BIT set, and whether 3092 ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, 3093 ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, 3094 ename:VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or 3095 ename:VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used. 3096// end::VK_KHR_separate_depth_stencil_layouts-features[] 3097 3098:refpage: VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures 3099include::{chapters}/features.txt[tag=features] 3100 3101include::{generated}/validity/structs/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.txt[] 3102-- 3103endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] 3104 3105ifdef::VK_KHR_pipeline_executable_properties[] 3106[open,refpage='VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR',desc='Structure describing whether pipeline executable properties are available',type='structs'] 3107-- 3108The sname:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR structure 3109is defined as: 3110 3111include::{generated}/api/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.txt[] 3112 3113This structure describes the following feature: 3114 3115 * pname:sType is the type of this structure. 3116 * pname:pNext is `NULL` or a pointer to a structure extending this 3117 structure. 3118 * [[features-pipelineExecutableInfo]] pname:pipelineExecutableInfo 3119 indicates that the implementation supports reporting properties and 3120 statistics about the pipeline executables associated with a compiled 3121 pipeline. 3122 3123:refpage: VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR 3124include::{chapters}/features.txt[tag=features] 3125 3126include::{generated}/validity/structs/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.txt[] 3127-- 3128endif::VK_KHR_pipeline_executable_properties[] 3129 3130ifdef::VK_EXT_shader_demote_to_helper_invocation[] 3131[open,refpage='VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',desc='Structure describing the shader demote to helper invocations features that can be supported by an implementation',type='structs'] 3132-- 3133The sname:VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT 3134structure is defined as: 3135 3136include::{generated}/api/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[] 3137 3138This structure describes the following feature: 3139 3140 * pname:sType is the type of this structure. 3141 * pname:pNext is `NULL` or a pointer to a structure extending this 3142 structure. 3143 * [[features-shaderDemoteToHelperInvocation]] 3144 pname:shaderDemoteToHelperInvocation indicates whether the 3145 implementation supports the SPIR-V code:DemoteToHelperInvocationEXT 3146 capability. 3147 3148:refpage: VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT 3149include::{chapters}/features.txt[tag=features] 3150 3151include::{generated}/validity/structs/VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT.txt[] 3152-- 3153endif::VK_EXT_shader_demote_to_helper_invocation[] 3154 3155ifdef::VK_EXT_texel_buffer_alignment[] 3156[open,refpage='VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT',desc='Structure describing the texel buffer alignment features that can be supported by an implementation',type='structs'] 3157-- 3158The sname:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure is 3159defined as: 3160 3161include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[] 3162 3163This structure describes the following feature: 3164 3165 * pname:sType is the type of this structure. 3166 * pname:pNext is `NULL` or a pointer to a structure extending this 3167 structure. 3168 * [[features-texelBufferAlignment]] pname:texelBufferAlignment indicates 3169 whether the implementation uses more specific alignment requirements 3170 advertised in slink:VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT 3171 rather than 3172 slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment. 3173 3174:refpage: VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT 3175include::{chapters}/features.txt[tag=features] 3176 3177include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.txt[] 3178-- 3179endif::VK_EXT_texel_buffer_alignment[] 3180 3181ifdef::VK_EXT_texture_compression_astc_hdr[] 3182[open,refpage='VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',desc='Structure describing ASTC HDR features that can be supported by an implementation',type='structs'] 3183-- 3184The sname:VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT structure is 3185defined as: 3186 3187include::{generated}/api/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.txt[] 3188 3189This structure describes the following feature: 3190 3191 * pname:sType is the type of this structure. 3192 * pname:pNext is `NULL` or a pointer to a structure extending this 3193 structure. 3194 * [[features-textureCompressionASTC_HDR]] pname:textureCompressionASTC_HDR 3195 indicates whether all of the ASTC HDR compressed texture formats are 3196 supported. 3197 If this feature is enabled, then the 3198 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, 3199 ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT and 3200 ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT features must: 3201 be supported in pname:optimalTilingFeatures for the following formats: 3202+ 3203 ** ename:VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT 3204 ** ename:VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT 3205 ** ename:VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT 3206 ** ename:VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT 3207 ** ename:VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT 3208 ** ename:VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT 3209 ** ename:VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT 3210 ** ename:VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT 3211 ** ename:VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT 3212 ** ename:VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT 3213 ** ename:VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT 3214 ** ename:VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT 3215 ** ename:VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT 3216 ** ename:VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT 3217+ 3218To query for additional properties, or if the feature is not enabled, 3219flink:vkGetPhysicalDeviceFormatProperties and 3220flink:vkGetPhysicalDeviceImageFormatProperties can: be used to check for 3221supported properties of individual formats as normal. 3222 3223:refpage: VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT 3224include::{chapters}/features.txt[tag=features] 3225 3226include::{generated}/validity/structs/VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT.txt[] 3227-- 3228endif::VK_EXT_texture_compression_astc_hdr[] 3229 3230ifdef::VK_EXT_line_rasterization[] 3231[open,refpage='VkPhysicalDeviceLineRasterizationFeaturesEXT',desc='Structure describing the line rasterization features that can be supported by an implementation',type='structs'] 3232-- 3233The sname:VkPhysicalDeviceLineRasterizationFeaturesEXT structure is defined 3234as: 3235 3236include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.txt[] 3237 3238This structure describes the following features: 3239 3240 * pname:sType is the type of this structure. 3241 * pname:pNext is `NULL` or a pointer to a structure extending this 3242 structure. 3243 * [[features-rectangularLines]] pname:rectangularLines indicates whether 3244 the implementation supports <<primsrast-lines,rectangular line 3245 rasterization>>. 3246 * [[features-bresenhamLines]] pname:bresenhamLines indicates whether the 3247 implementation supports <<primsrast-lines-bresenham,Bresenham-style line 3248 rasterization>>. 3249 * [[features-smoothLines]] pname:smoothLines indicates whether the 3250 implementation supports <<primsrast-lines-smooth,smooth line 3251 rasterization>>. 3252 * [[features-stippledRectangularLines]] pname:stippledRectangularLines 3253 indicates whether the implementation supports 3254 <<primsrast-lines-stipple,stippled line rasterization>> with 3255 ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT lines, or with 3256 ename:VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT lines if 3257 slink:VkPhysicalDeviceLimits::pname:strictLines is ename:VK_TRUE. 3258 * [[features-stippledBresenhamLines]] pname:stippledBresenhamLines 3259 indicates whether the implementation supports 3260 <<primsrast-lines-stipple,stippled line rasterization>> with 3261 ename:VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT lines. 3262 * [[features-stippledSmoothLines]] pname:stippledSmoothLines indicates 3263 whether the implementation supports <<primsrast-lines-stipple,stippled 3264 line rasterization>> with 3265 ename:VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT lines. 3266 3267:refpage: VkPhysicalDeviceLineRasterizationFeaturesEXT 3268include::{chapters}/features.txt[tag=features] 3269 3270include::{generated}/validity/structs/VkPhysicalDeviceLineRasterizationFeaturesEXT.txt[] 3271-- 3272endif::VK_EXT_line_rasterization[] 3273 3274ifdef::VK_EXT_subgroup_size_control[] 3275[open,refpage='VkPhysicalDeviceSubgroupSizeControlFeaturesEXT',desc='Structure describing the subgroup size control features that can be supported by an implementation',type='structs'] 3276-- 3277The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure is 3278defined as: 3279 3280include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.txt[] 3281 3282This structure describes the following features: 3283 3284 * pname:sType is the type of this structure. 3285 * pname:pNext is `NULL` or a pointer to a structure extending this 3286 structure. 3287 * [[features-subgroupSizeControl]] pname:subgroupSizeControl indicates 3288 whether the implementation supports controlling shader subgroup sizes 3289 via the 3290 ename:VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT 3291 flag and the 3292 slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT structure. 3293 * [[features-computeFullSubgroups]] pname:computeFullSubgroups indicates 3294 whether the implementation supports requiring full subgroups in compute 3295 shaders via the 3296 ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT 3297 flag. 3298 3299:refpage: VkPhysicalDeviceSubgroupSizeControlFeaturesEXT 3300include::{chapters}/features.txt[tag=features] 3301 3302[NOTE] 3303.Note 3304==== 3305The sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure was added 3306in version 2 of the `apiext:VK_EXT_subgroup_size_control` extension. 3307Version 1 implementations of this extension will not fill out the features 3308structure but applications may assume that both pname:subgroupSizeControl 3309and pname:computeFullSubgroups are supported if the extension is supported. 3310(See also the <<features-requirements, Feature Requirements>> section.) 3311Applications are advised to add a 3312sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure to the 3313pname:pNext chain of slink:VkDeviceCreateInfo to enable the features 3314regardless of the version of the extension supported by the implementation. 3315If the implementation only supports version 1, it will safely ignore the 3316sname:VkPhysicalDeviceSubgroupSizeControlFeaturesEXT structure. 3317==== 3318 3319include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlFeaturesEXT.txt[] 3320-- 3321endif::VK_EXT_subgroup_size_control[] 3322 3323ifdef::VK_AMD_device_coherent_memory[] 3324[open,refpage='VkPhysicalDeviceCoherentMemoryFeaturesAMD',desc='Structure describing whether device coherent memory can be supported by an implementation',type='structs'] 3325-- 3326The sname:VkPhysicalDeviceCoherentMemoryFeaturesAMD structure is defined as: 3327 3328include::{generated}/api/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[] 3329 3330This structure describes the following feature: 3331 3332 * pname:sType is the type of this structure. 3333 * pname:pNext is `NULL` or a pointer to a structure extending this 3334 structure. 3335 * [[features-deviceCoherentMemory]] pname:deviceCoherentMemory indicates 3336 that the implementation supports <<VkMemoryPropertyFlagBits,device 3337 coherent memory>>. 3338 3339:refpage: VkPhysicalDeviceCoherentMemoryFeaturesAMD 3340include::{chapters}/features.txt[tag=features] 3341 3342include::{generated}/validity/structs/VkPhysicalDeviceCoherentMemoryFeaturesAMD.txt[] 3343-- 3344endif::VK_AMD_device_coherent_memory[] 3345 3346ifdef::VK_KHR_acceleration_structure[] 3347[open,refpage='VkPhysicalDeviceAccelerationStructureFeaturesKHR',desc='Structure describing the acceleration structure features that can be supported by an implementation',type='structs'] 3348-- 3349The sname:VkPhysicalDeviceAccelerationStructureFeaturesKHR structure is 3350defined as: 3351 3352include::{generated}/api/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.txt[] 3353 3354This structure describes the following features: 3355 3356 * pname:sType is the type of this structure. 3357 * pname:pNext is `NULL` or a pointer to a structure extending this 3358 structure. 3359 * [[features-accelerationStructure]] pname:accelerationStructure indicates 3360 whether the implementation supports the acceleration structure 3361 functionality. 3362 See <<acceleration-structure,Acceleration Structures>>. 3363 * [[features-accelerationStructureCaptureReplay]] 3364 pname:accelerationStructureCaptureReplay indicates whether the 3365 implementation supports saving and reusing acceleration structure device 3366 addresses, e.g. for trace capture and replay. 3367 * [[features-accelerationStructureIndirectBuild]] 3368 pname:accelerationStructureIndirectBuild indicates whether the 3369 implementation supports indirect acceleration structure build commands, 3370 e.g. flink:vkCmdBuildAccelerationStructuresIndirectKHR. 3371 * [[features-accelerationStructureHostCommands]] 3372 pname:accelerationStructureHostCommands indicates whether the 3373 implementation supports host side acceleration structure commands, e.g. 3374 flink:vkBuildAccelerationStructuresKHR, 3375 flink:vkCopyAccelerationStructureKHR, 3376 flink:vkCopyAccelerationStructureToMemoryKHR, 3377 flink:vkCopyMemoryToAccelerationStructureKHR, 3378 flink:vkWriteAccelerationStructuresPropertiesKHR. 3379 * [[features-descriptorBindingAccelerationStructureUpdateAfterBind]] 3380 pname:descriptorBindingAccelerationStructureUpdateAfterBind indicates 3381 whether the implementation supports updating acceleration structure 3382 descriptors after a set is bound. 3383 If this feature is not enabled, 3384 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must: not be used with 3385 ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR. 3386 3387:refpage: VkPhysicalDeviceAccelerationStructureFeaturesKHR 3388include::{chapters}/features.txt[tag=features] 3389 3390include::{generated}/validity/structs/VkPhysicalDeviceAccelerationStructureFeaturesKHR.txt[] 3391-- 3392endif::VK_KHR_acceleration_structure[] 3393 3394ifdef::VK_KHR_ray_tracing_pipeline[] 3395[open,refpage='VkPhysicalDeviceRayTracingPipelineFeaturesKHR',desc='Structure describing the ray tracing features that can be supported by an implementation',type='structs'] 3396-- 3397The sname:VkPhysicalDeviceRayTracingPipelineFeaturesKHR structure is defined 3398as: 3399 3400include::{generated}/api/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.txt[] 3401 3402This structure describes the following features: 3403 3404 * pname:sType is the type of this structure. 3405 * pname:pNext is `NULL` or a pointer to a structure extending this 3406 structure. 3407 * [[features-rayTracingPipeline]] pname:rayTracingPipeline indicates 3408 whether the implementation supports the ray tracing pipeline 3409 functionality. 3410 See <<ray-tracing,Ray Tracing>>. 3411 * [[features-rayTracingPipelineShaderGroupHandleCaptureReplay]] 3412 pname:rayTracingPipelineShaderGroupHandleCaptureReplay indicates whether 3413 the implementation supports saving and reusing shader group handles, 3414 e.g. for trace capture and replay. 3415 * [[features-rayTracingPipelineShaderGroupHandleCaptureReplayMixed]] 3416 pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed indicates 3417 whether the implementation supports reuse of shader group handles being 3418 arbitrarily mixed with creation of non-reused shader group handles. 3419 If this is ename:VK_FALSE, all reused shader group handles must: be 3420 specified before any non-reused handles may: be created. 3421 * [[features-rayTracingPipelineTraceRaysIndirect]] 3422 pname:rayTracingPipelineTraceRaysIndirect indicates whether the 3423 implementation supports indirect ray tracing commands, e.g. 3424 flink:vkCmdTraceRaysIndirectKHR. 3425 * [[features-rayTraversalPrimitiveCulling]] 3426 pname:rayTraversalPrimitiveCulling indicates whether the implementation 3427 supports <<ray-traversal-culling-primitive, primitive culling during ray 3428 traversal>>. 3429 3430:refpage: VkPhysicalDeviceRayTracingPipelineFeaturesKHR 3431include::{chapters}/features.txt[tag=features] 3432 3433.Valid Usage 3434**** 3435 * [[VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575]] 3436 If pname:rayTracingPipelineShaderGroupHandleCaptureReplayMixed is 3437 ename:VK_TRUE, pname:rayTracingPipelineShaderGroupHandleCaptureReplay 3438 must: also be ename:VK_TRUE 3439**** 3440 3441include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.txt[] 3442-- 3443endif::VK_KHR_ray_tracing_pipeline[] 3444 3445ifdef::VK_KHR_ray_query[] 3446[open,refpage='VkPhysicalDeviceRayQueryFeaturesKHR',desc='Structure describing the ray query features that can be supported by an implementation',type='structs'] 3447-- 3448The sname:VkPhysicalDeviceRayQueryFeaturesKHR structure is defined as: 3449 3450include::{generated}/api/structs/VkPhysicalDeviceRayQueryFeaturesKHR.txt[] 3451 3452This structure describes the following feature: 3453 3454 * pname:sType is the type of this structure. 3455 * pname:pNext is `NULL` or a pointer to a structure extending this 3456 structure. 3457 * [[features-rayQuery]] pname:rayQuery indicates whether the 3458 implementation supports ray query (code:OpRayQueryProceedKHR) 3459 functionality. 3460 3461:refpage: VkPhysicalDeviceRayQueryFeaturesKHR 3462include::{chapters}/features.txt[tag=features] 3463 3464include::{generated}/validity/structs/VkPhysicalDeviceRayQueryFeaturesKHR.txt[] 3465-- 3466endif::VK_KHR_ray_query[] 3467 3468ifdef::VK_EXT_extended_dynamic_state[] 3469[open,refpage='VkPhysicalDeviceExtendedDynamicStateFeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs'] 3470-- 3471The sname:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure is 3472defined as: 3473 3474include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.txt[] 3475 3476This structure describes the following feature: 3477 3478 * pname:sType is the type of this structure. 3479 * pname:pNext is `NULL` or a pointer to a structure extending this 3480 structure. 3481 * [[features-extendedDynamicState]] pname:extendedDynamicState indicates 3482 that the implementation supports the following dynamic states: 3483 ** ename:VK_DYNAMIC_STATE_CULL_MODE_EXT 3484 ** ename:VK_DYNAMIC_STATE_FRONT_FACE_EXT 3485 ** ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT 3486 ** ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT 3487 ** ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT 3488 ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT 3489 ** ename:VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT 3490 ** ename:VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT 3491 ** ename:VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT 3492 ** ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT 3493 ** ename:VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT 3494 ** ename:VK_DYNAMIC_STATE_STENCIL_OP_EXT 3495 3496:refpage: VkPhysicalDeviceExtendedDynamicStateFeaturesEXT 3497include::{chapters}/features.txt[tag=features] 3498 3499include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.txt[] 3500-- 3501endif::VK_EXT_extended_dynamic_state[] 3502 3503ifdef::VK_EXT_extended_dynamic_state2[] 3504[open,refpage='VkPhysicalDeviceExtendedDynamicState2FeaturesEXT',desc='Structure describing what extended dynamic state can be used',type='structs'] 3505-- 3506The sname:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure is 3507defined as: 3508 3509include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.txt[] 3510 3511This structure describes the following features: 3512 3513 * pname:sType is the type of this structure. 3514 * pname:pNext is `NULL` or a pointer to a structure extending this 3515 structure. 3516 * [[features-extendedDynamicState2]] pname:extendedDynamicState2 indicates 3517 that the implementation supports the following dynamic states: 3518 ** ename:VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT 3519 ** ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT 3520 ** ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT 3521 * [[features-extendedDynamicState2LogicOp]] 3522 pname:extendedDynamicState2LogicOp indicates that the implementation 3523 supports the following dynamic state: 3524 ** ename:VK_DYNAMIC_STATE_LOGIC_OP_EXT 3525 * [[features-extendedDynamicState2PatchControlPoints]] 3526 pname:extendedDynamicState2PatchControlPoints indicates that the 3527 implementation supports the following dynamic state: 3528 ** ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT 3529 3530:refpage: VkPhysicalDeviceExtendedDynamicState2FeaturesEXT 3531include::{chapters}/features.txt[tag=features] 3532 3533include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.txt[] 3534-- 3535endif::VK_EXT_extended_dynamic_state2[] 3536 3537ifdef::VK_NV_device_generated_commands[] 3538[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV',desc='Structure describing the device-generated commands features that can be supported by an implementation',type='structs'] 3539-- 3540The sname:VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV structure is 3541defined as: 3542 3543include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.txt[] 3544 3545This structure describes the following feature: 3546 3547 * pname:sType is the type of this structure. 3548 * pname:pNext is `NULL` or a pointer to a structure extending this 3549 structure. 3550 * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands 3551 indicates whether the implementation supports functionality to generate 3552 commands on the device. 3553 See <<device-generated-commands,Device-Generated Commands>>. 3554 3555:refpage: VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV 3556include::{chapters}/features.txt[tag=features] 3557 3558include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.txt[] 3559-- 3560endif::VK_NV_device_generated_commands[] 3561 3562ifdef::VK_NV_device_diagnostics_config[] 3563[open,refpage='VkPhysicalDeviceDiagnosticsConfigFeaturesNV',desc='Structure describing the device-generated diagnostic configuration features that can be supported by an implementation',type='structs'] 3564-- 3565The sname:VkPhysicalDeviceDiagnosticsConfigFeaturesNV structure is defined 3566as: 3567 3568include::{generated}/api/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.txt[] 3569 3570This structure describes the following feature: 3571 3572 * pname:sType is the type of this structure. 3573 * pname:pNext is `NULL` or a pointer to a structure extending this 3574 structure. 3575 * [[features-diagnosticsConfig]] pname:diagnosticsConfig indicates whether 3576 the implementation supports the ability to configure diagnostic tools. 3577 3578:refpage: VkPhysicalDeviceDiagnosticsConfigFeaturesNV 3579include::{chapters}/features.txt[tag=features] 3580 3581include::{generated}/validity/structs/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.txt[] 3582-- 3583endif::VK_NV_device_diagnostics_config[] 3584 3585ifdef::VK_EXT_device_memory_report[] 3586[open,refpage='VkPhysicalDeviceDeviceMemoryReportFeaturesEXT',desc='Structure describing whether device memory report callback can be supported by an implementation',type='structs'] 3587-- 3588The sname:VkPhysicalDeviceDeviceMemoryReportFeaturesEXT structure is defined 3589as: 3590 3591include::{generated}/api/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.txt[] 3592 3593This structure describes the following feature: 3594 3595 * pname:sType is the type of this structure. 3596 * pname:pNext is `NULL` or a pointer to a structure extending this 3597 structure. 3598 * [[features-deviceMemoryReport]] pname:deviceMemoryReport indicates 3599 whether the implementation supports the ability to register device 3600 memory report callbacks. 3601 3602:refpage: VkPhysicalDeviceDeviceMemoryReportFeaturesEXT 3603include::{chapters}/features.txt[tag=features] 3604 3605include::{generated}/validity/structs/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.txt[] 3606-- 3607endif::VK_EXT_device_memory_report[] 3608 3609ifdef::VK_EXT_global_priority_query[] 3610[open,refpage='VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT',desc='Structure describing whether global priority query can be supported by an implementation',type='structs'] 3611-- 3612The sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT structure is 3613defined as: 3614 3615include::{generated}/api/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.txt[] 3616 3617The members of the sname:VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT 3618structure describe the following features: 3619 3620 * pname:sType is the type of this structure. 3621 * pname:pNext is `NULL` or a pointer to a structure extending this 3622 structure. 3623 * [[features-globalPriorityQuery]] pname:globalPriorityQuery indicates 3624 whether the implementation supports the ability to query global queue 3625 priorities. 3626 3627:refpage: VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT 3628include::{chapters}/features.txt[tag=features] 3629 3630include::{generated}/validity/structs/VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT.txt[] 3631-- 3632endif::VK_EXT_global_priority_query[] 3633 3634ifdef::VK_EXT_pipeline_creation_cache_control[] 3635[open,refpage='VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT',desc='Structure describing whether pipeline cache control can be supported by an implementation',type='structs'] 3636-- 3637The sname:VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT structure 3638is defined as: 3639 3640include::{generated}/api/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.txt[] 3641 3642This structure describes the following feature: 3643 3644 * pname:sType is the type of this structure. 3645 * pname:pNext is `NULL` or a pointer to a structure extending this 3646 structure. 3647 * [[features-pipelineCreationCacheControl]] 3648 pname:pipelineCreationCacheControl indicates that the implementation 3649 supports: 3650 ** The following can: be used in stext:Vk*PipelineCreateInfo::pname:flags: 3651 *** ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT 3652 *** ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT 3653 ** The following can: be used in 3654 slink:VkPipelineCacheCreateInfo::pname:flags: 3655 *** ename:VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT 3656 3657:refpage: VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT 3658include::{chapters}/features.txt[tag=features] 3659 3660include::{generated}/validity/structs/VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT.txt[] 3661-- 3662endif::VK_EXT_pipeline_creation_cache_control[] 3663 3664ifdef::VK_KHR_zero_initialize_workgroup_memory[] 3665[open,refpage='VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',desc='Structure describing support for zero initialization of workgroup memory by an implementation',type='structs'] 3666-- 3667The sname:VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR structure 3668is defined as: 3669 3670include::{generated}/api/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.txt[] 3671 3672This structure describes the following feature: 3673 3674 * pname:sType is the type of this structure. 3675 * pname:pNext is `NULL` or a pointer to a structure extending this 3676 structure. 3677 * [[features-shaderZeroInitializeWorkgroupMemory]] 3678 pname:shaderZeroInitializeWorkgroupMemory specifies whether the 3679 implementation supports initializing a variable in Workgroup storage 3680 class. 3681 3682:refpage: VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR 3683include::{chapters}/features.txt[tag=features] 3684 3685include::{generated}/validity/structs/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR.txt[] 3686-- 3687endif::VK_KHR_zero_initialize_workgroup_memory[] 3688 3689ifdef::VK_EXT_private_data[] 3690[open,refpage='VkPhysicalDevicePrivateDataFeaturesEXT',desc='Structure specifying physical device support',type='structs'] 3691-- 3692 3693The sname:VkPhysicalDevicePrivateDataFeaturesEXT structure is defined as: 3694 3695include::{generated}/api/structs/VkPhysicalDevicePrivateDataFeaturesEXT.txt[] 3696 3697This structure describes the following feature: 3698 3699 * pname:sType is the type of this structure. 3700 * pname:pNext is `NULL` or a pointer to a structure extending this 3701 structure. 3702 * [[features-privateData]] pname:privateData indicates whether the 3703 implementation supports private data. 3704 See <<private-data, Private Data>>. 3705 3706:refpage: VkPhysicalDevicePrivateDataFeaturesEXT 3707include::{chapters}/features.txt[tag=features] 3708 3709include::{generated}/validity/structs/VkPhysicalDevicePrivateDataFeaturesEXT.txt[] 3710-- 3711endif::VK_EXT_private_data[] 3712 3713ifdef::VK_KHR_shader_subgroup_uniform_control_flow[] 3714[open,refpage='VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',desc='Structure describing support for shader subgroup uniform control flow by an implementation',type='structs'] 3715-- 3716The sname:VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR 3717structure is defined as: 3718 3719include::{generated}/api/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.txt[] 3720 3721This structure describes the following feature: 3722 3723 * pname:sType is the type of this structure. 3724 * pname:pNext is `NULL` or a pointer to a structure extending this 3725 structure. 3726 * [[features-shaderSubgroupUniformControlFlow]] 3727 pname:shaderSubgroupUniformControlFlow specifies whether the 3728 implementation supports the shader execution mode 3729 code:SubgroupUniformControlFlowKHR 3730 3731:refpage: VkPhysicalDevicePrivateDataFeaturesEXT 3732include::{chapters}/features.txt[tag=features] 3733 3734include::{generated}/validity/structs/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.txt[] 3735-- 3736endif::VK_KHR_shader_subgroup_uniform_control_flow[] 3737 3738ifdef::VK_EXT_robustness2[] 3739[open,refpage='VkPhysicalDeviceRobustness2FeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs'] 3740-- 3741The sname:VkPhysicalDeviceRobustness2FeaturesEXT structure is defined as: 3742 3743include::{generated}/api/structs/VkPhysicalDeviceRobustness2FeaturesEXT.txt[] 3744 3745This structure describes the following features: 3746 3747 * pname:sType is the type of this structure. 3748 * pname:pNext is `NULL` or a pointer to a structure extending this 3749 structure. 3750 * [[features-robustBufferAccess2]] pname:robustBufferAccess2 indicates 3751 whether buffer accesses are tightly bounds-checked against the range of 3752 the descriptor. 3753 Uniform buffers must: be bounds-checked to the range of the descriptor, 3754 where the range is rounded up to a multiple of 3755 <<limits-robustUniformBufferAccessSizeAlignment,robustUniformBufferAccessSizeAlignment>>. 3756 Storage buffers must: be bounds-checked to the range of the descriptor, 3757 where the range is rounded up to a multiple of 3758 <<limits-robustStorageBufferAccessSizeAlignment,robustStorageBufferAccessSizeAlignment>>. 3759 Out of bounds buffer loads will return zero values, and formatted loads 3760 will have [eq]#(0,0,1)# values inserted for missing G, B, or A 3761 components based on the format. 3762 * [[features-robustImageAccess2]] pname:robustImageAccess2 indicates 3763 whether image accesses are tightly bounds-checked against the dimensions 3764 of the image view. 3765 Out of bounds image loads will return zero values, with [eq]#(0,0,1)# 3766 values <<textures-conversion-to-rgba,inserted for missing G, B, or A 3767 components>> based on the format. 3768 * [[features-nullDescriptor]] pname:nullDescriptor indicates whether 3769 descriptors can: be written with a dlink:VK_NULL_HANDLE resource or 3770 view, which are considered valid to access and act as if the descriptor 3771 were bound to nothing. 3772 3773:refpage: VkPhysicalDeviceRobustness2FeaturesEXT 3774include::{chapters}/features.txt[tag=features] 3775 3776.Valid Usage 3777**** 3778 * [[VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000]] 3779 If pname:robustBufferAccess2 is enabled then 3780 <<features-robustBufferAccess, pname:robustBufferAccess>> must: also be 3781 enabled 3782**** 3783 3784include::{generated}/validity/structs/VkPhysicalDeviceRobustness2FeaturesEXT.txt[] 3785-- 3786endif::VK_EXT_robustness2[] 3787 3788ifndef::VK_EXT_robustness2[] 3789[[features-nullDescriptor]] nullDescriptor support requires the 3790`apiext:VK_EXT_robustness2` extension. 3791endif::VK_EXT_robustness2[] 3792 3793ifdef::VK_EXT_image_robustness[] 3794[open,refpage='VkPhysicalDeviceImageRobustnessFeaturesEXT',desc='Structure describing the out-of-bounds behavior for an implementation',type='structs'] 3795-- 3796The sname:VkPhysicalDeviceImageRobustnessFeaturesEXT structure is defined 3797as: 3798 3799include::{generated}/api/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.txt[] 3800 3801This structure describes the following feature: 3802 3803 * pname:sType is the type of this structure. 3804 * pname:pNext is `NULL` or a pointer to a structure extending this 3805 structure. 3806 * [[features-robustImageAccess]] pname:robustImageAccess indicates whether 3807 image accesses are tightly bounds-checked against the dimensions of the 3808 image view. 3809 <<textures-input-validation,Invalid texels>> resulting from out of 3810 bounds image loads will be replaced as described in 3811 <<textures-texel-replacement,Texel Replacement>>, with either 3812 [eq]#(0,0,1)# or [eq]#(0,0,0)# values inserted for missing G, B, or A 3813 components based on the format. 3814 3815:refpage: VkPhysicalDeviceImageRobustnessFeaturesEXT 3816include::{chapters}/features.txt[tag=features] 3817 3818include::{generated}/validity/structs/VkPhysicalDeviceImageRobustnessFeaturesEXT.txt[] 3819-- 3820endif::VK_EXT_image_robustness[] 3821 3822ifdef::VK_KHR_shader_terminate_invocation[] 3823[open,refpage='VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR',desc='Structure describing support for the SPIR-V code:SPV_KHR_terminate_invocation extension',type='structs'] 3824-- 3825The sname:VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR structure is 3826defined as: 3827 3828include::{generated}/api/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.txt[] 3829 3830This structure describes the following feature: 3831 3832 * pname:sType is the type of this structure. 3833 * pname:pNext is `NULL` or a pointer to a structure extending this 3834 structure. 3835 * [[features-shaderTerminateInvocation]] pname:shaderTerminateInvocation 3836 specifies whether the implementation supports SPIR-V modules that use 3837 the `SPV_KHR_terminate_invocation` extension. 3838 3839:refpage: VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR 3840include::{chapters}/features.txt[tag=features] 3841 3842include::{generated}/validity/structs/VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR.txt[] 3843-- 3844endif::VK_KHR_shader_terminate_invocation[] 3845 3846ifdef::VK_EXT_custom_border_color[] 3847[open,refpage='VkPhysicalDeviceCustomBorderColorFeaturesEXT',desc='Structure describing whether custom border colors can be supported by an implementation',type='structs'] 3848-- 3849The sname:VkPhysicalDeviceCustomBorderColorFeaturesEXT structure is defined 3850as: 3851 3852include::{generated}/api/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.txt[] 3853 3854This structure describes the following features: 3855 3856 * pname:sType is the type of this structure. 3857 * pname:pNext is `NULL` or a pointer to a structure extending this 3858 structure. 3859 * [[features-customBorderColors]] pname:customBorderColors indicates that 3860 the implementation supports providing a pname:borderColor value with one 3861 of the following values at sampler creation time: 3862 ** ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT 3863 ** ename:VK_BORDER_COLOR_INT_CUSTOM_EXT 3864 * [[features-customBorderColorWithoutFormat]] 3865 pname:customBorderColorWithoutFormat indicates that explicit formats are 3866 not required for custom border colors and the value of the pname:format 3867 member of the slink:VkSamplerCustomBorderColorCreateInfoEXT structure 3868 may: be ename:VK_FORMAT_UNDEFINED. 3869 If this feature bit is not set, applications must: provide the 3870 elink:VkFormat of the image view(s) being sampled by this sampler in the 3871 pname:format member of the slink:VkSamplerCustomBorderColorCreateInfoEXT 3872 structure. 3873 3874:refpage: VkPhysicalDeviceCustomBorderColorFeaturesEXT 3875include::{chapters}/features.txt[tag=features] 3876 3877include::{generated}/validity/structs/VkPhysicalDeviceCustomBorderColorFeaturesEXT.txt[] 3878-- 3879endif::VK_EXT_custom_border_color[] 3880 3881ifdef::VK_EXT_border_color_swizzle[] 3882[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'] 3883-- 3884The sname:VkPhysicalDeviceBorderColorSwizzleFeaturesEXT structure is defined 3885as: 3886 3887include::{generated}/api/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.txt[] 3888 3889This structure describes the following features: 3890 3891 * pname:sType is the type of this structure. 3892 * pname:pNext is `NULL` or a pointer to a structure extending this 3893 structure. 3894 * [[features-borderColorSwizzle]] pname:borderColorSwizzle indicates that 3895 defined values are returned by sampled image operations when used with a 3896 sampler that uses a ename:VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, 3897 ename:VK_BORDER_COLOR_INT_OPAQUE_BLACK, 3898 ename:VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, or 3899 ename:VK_BORDER_COLOR_INT_CUSTOM_EXT pname:borderColor and an image view 3900 that uses a non-<<resources-image-views-identity-mappings,identity 3901 component mapping>>, when either pname:borderColorSwizzleFromImage is 3902 enabled or the slink:VkSamplerBorderColorComponentMappingCreateInfoEXT 3903 is specified. 3904 * [[features-borderColorSwizzleFromImage]] 3905 pname:borderColorSwizzleFromImage indicates that the implementation will 3906 return the correct border color values from sampled image operations 3907 under the conditions expressed above, without the application having to 3908 specify the border color component mapping when creating the sampler 3909 object. 3910 If this feature bit is not set, applications can: chain a 3911 slink:VkSamplerBorderColorComponentMappingCreateInfoEXT structure when 3912 creating samplers for use with image views that do not have an 3913 <<resources-image-views-identity-mappings,identity swizzle>> and, when 3914 those samplers are combined with image views using the same component 3915 mapping, sampled image operations that use opaque black or custom border 3916 colors will return the correct border color values. 3917 3918:refpage: VkPhysicalDeviceBorderColorSwizzleFeaturesEXT 3919include::{chapters}/features.txt[tag=features] 3920 3921include::{generated}/validity/structs/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.txt[] 3922-- 3923endif::VK_EXT_border_color_swizzle[] 3924 3925ifdef::VK_KHR_portability_subset[] 3926[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'] 3927-- 3928The sname:VkPhysicalDevicePortabilitySubsetFeaturesKHR structure is defined 3929as: 3930 3931include::{generated}/api/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.txt[] 3932 3933This structure describes the following features: 3934 3935 * pname:sType is the type of this structure. 3936 * pname:pNext is `NULL` or a pointer to a structure extending this 3937 structure. 3938 * [[features-constantAlphaColorBlendFactors]] 3939 pname:constantAlphaColorBlendFactors indicates whether this 3940 implementation supports constant _alpha_ <<framebuffer-blendfactors>> 3941 used as source or destination _color_ <<framebuffer-blending>>. 3942 * [[features-events]] pname:events indicates whether this implementation 3943 supports synchronization using <<synchronization-events>>. 3944 * [[features-imageViewFormatReinterpretation]] 3945 pname:imageViewFormatReinterpretation indicates whether this 3946 implementation supports a sname:VkImageView being created with a texel 3947 format containing a different number of components, or a different 3948 number of bits in each component, than the texel format of the 3949 underlying sname:VkImage. 3950 * [[features-imageViewFormatSwizzle]] pname:imageViewFormatSwizzle 3951 indicates whether this implementation supports remapping format 3952 components using slink:VkImageViewCreateInfo::pname:components. 3953 * [[features-imageView2DOn3DImage]] pname:imageView2DOn3DImage indicates 3954 whether this implementation supports a sname:VkImage being created with 3955 the ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT flag set, permitting a 3956 2D or 2D array image view to be created on a 3D sname:VkImage. 3957 * [[features-multisampleArrayImage]] pname:multisampleArrayImage indicates 3958 whether this implementation supports a sname:VkImage being created as a 3959 2D array with multiple samples per texel. 3960 * [[features-mutableComparisonSamplers]] pname:mutableComparisonSamplers 3961 indicates whether this implementation allows descriptors with comparison 3962 samplers to be <<descriptorsets-updates, updated>>. 3963 * [[features-pointPolygons]] pname:pointPolygons indicates whether this 3964 implementation supports <<primsrast>> using a _point_ 3965 <<primsrast-polygonmode>>. 3966 * [[features-samplerMipLodBias]] pname:samplerMipLodBias indicates whether 3967 this implementation supports setting a <<samplers-mipLodBias, mipmap LOD 3968 bias value>> when <<samplers, creating a sampler>>. 3969 * [[features-separateStencilMaskRef]] pname:separateStencilMaskRef 3970 indicates whether this implementation supports separate front and back 3971 <<fragops-stencil>> reference values. 3972 * [[features-shaderSampleRateInterpolationFunctions]] 3973 pname:shaderSampleRateInterpolationFunctions indicates whether this 3974 implementation supports fragment shaders which use the 3975 <<spirvenv-capabilities-table-InterpolationFunction, 3976 code:InterpolationFunction>> capability and the extended instructions 3977 `InterpolateAtCentroid`, `InterpolateAtOffset`, and 3978 `InterpolateAtSample` from the `GLSL.std.450` extended instruction set. 3979 This member is only meaningful if the 3980 <<features-sampleRateShading,sampleRateShading>> feature is supported. 3981 * [[features-tessellationIsolines]] pname:tessellationIsolines indicates 3982 whether this implementation supports 3983 <<tessellation-isoline-tessellation, isoline output>> from the 3984 <<tessellation>> stage of a graphics pipeline. 3985 This member is only meaningful if 3986 <<features-tessellationShader,tessellation shaders>> are supported. 3987 * [[features-tessellationPointMode]] pname:tessellationPointMode indicates 3988 whether this implementation supports <<tessellation-point-mode, point 3989 output>> from the <<tessellation>> stage of a graphics pipeline. 3990 This member is only meaningful if 3991 <<features-tessellationShader,tessellation shaders>> are supported. 3992 * [[features-triangleFans]] pname:triangleFans indicates whether this 3993 implementation supports <<drawing-triangle-fans>> primitive topology. 3994 * [[features-vertexAttributeAccessBeyondStride]] 3995 pname:vertexAttributeAccessBeyondStride indicates whether this 3996 implementation supports accessing a vertex input attribute beyond the 3997 stride of the corresponding vertex input binding. 3998 3999:refpage: VkPhysicalDevicePortabilitySubsetFeaturesKHR 4000include::{chapters}/features.txt[tag=features] 4001 4002include::{generated}/validity/structs/VkPhysicalDevicePortabilitySubsetFeaturesKHR.txt[] 4003-- 4004endif::VK_KHR_portability_subset[] 4005 4006ifdef::VK_KHR_performance_query[] 4007include::{chapters}/VK_KHR_performance_query/features.txt[] 4008endif::VK_KHR_performance_query[] 4009 4010ifdef::VK_EXT_4444_formats[] 4011[open,refpage='VkPhysicalDevice4444FormatsFeaturesEXT',desc='Structure describing additional 4444 formats supported by an implementation',type='structs'] 4012-- 4013The sname:VkPhysicalDevice4444FormatsFeaturesEXT structure is defined as: 4014 4015include::{generated}/api/structs/VkPhysicalDevice4444FormatsFeaturesEXT.txt[] 4016 4017This structure describes the following features: 4018 4019 * pname:sType is the type of this structure. 4020 * pname:pNext is `NULL` or a pointer to a structure extending this 4021 structure. 4022 * [[features-formatA4R4G4B4]] pname:formatA4R4G4B4 indicates that the 4023 implementation must: support using a elink:VkFormat of 4024 ename:VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT with at least the following 4025 elink:VkFormatFeatureFlagBits: 4026 ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 4027 ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT 4028 ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 4029 * [[features-formatA4B4G4R4]] pname:formatA4B4G4R4 indicates that the 4030 implementation must: support using a elink:VkFormat of 4031 ename:VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT with at least the following 4032 elink:VkFormatFeatureFlagBits: 4033 ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT 4034 ** ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT 4035 ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT 4036 4037:refpage: VkPhysicalDevice4444FormatsFeaturesEXT 4038include::{chapters}/features.txt[tag=features] 4039 4040include::{generated}/validity/structs/VkPhysicalDevice4444FormatsFeaturesEXT.txt[] 4041-- 4042endif::VK_EXT_4444_formats[] 4043 4044ifdef::VK_VALVE_mutable_descriptor_type[] 4045[open,refpage='VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE',desc='Structure describing whether the mutable descriptor type is supported',type='structs'] 4046-- 4047The sname:VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE structure is 4048defined as: 4049 4050include::{generated}/api/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.txt[] 4051 4052This structure describes the following feature: 4053 4054 * pname:sType is the type of this structure. 4055 * pname:pNext is `NULL` or a pointer to a structure extending this 4056 structure. 4057 * [[features-mutableDescriptorType]] pname:mutableDescriptorType indicates 4058 that the implementation must: support using the elink:VkDescriptorType 4059 of ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE with at least the following 4060 descriptor types, where any combination of the types must: be supported: 4061 ** ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 4062 ** ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE 4063 ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER 4064 ** ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER 4065 ** ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER 4066 ** ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER 4067 4068 * Additionally, pname:mutableDescriptorType indicates that: 4069ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4070 ** Non-uniform descriptor indexing must: be supported if all descriptor 4071 types in a slink:VkMutableDescriptorTypeListVALVE for 4072 ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE have the corresponding 4073 non-uniform indexing features enabled in 4074 slink:VkPhysicalDeviceDescriptorIndexingFeatures. 4075 ** ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT with 4076 pname:descriptorType of ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE relaxes 4077 the list of required descriptor types to the descriptor types which 4078 have the corresponding update-after-bind feature enabled in 4079 slink:VkPhysicalDeviceDescriptorIndexingFeatures. 4080endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4081 ** Dynamically uniform descriptor indexing must: be supported if all 4082 descriptor types in a slink:VkMutableDescriptorTypeListVALVE for 4083 ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE have the corresponding dynamic 4084 indexing features enabled. 4085 ** ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE must: be 4086 supported. 4087 ** ename:VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE must: be supported. 4088 4089:refpage: VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE 4090include::{chapters}/features.txt[tag=features] 4091 4092include::{generated}/validity/structs/VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE.txt[] 4093-- 4094endif::VK_VALVE_mutable_descriptor_type[] 4095 4096ifdef::VK_EXT_depth_clip_control[] 4097 4098[open,refpage='VkPhysicalDeviceDepthClipControlFeaturesEXT',desc='Structure describing additional depth clip control supported by an implementation',type='structs'] 4099-- 4100The sname:VkPhysicalDeviceDepthClipControlFeaturesEXT structure is defined 4101as: 4102 4103include::{generated}/api/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.txt[] 4104 4105The members of the sname:VkPhysicalDeviceDepthClipControlFeaturesEXT 4106structure describe the following features: 4107 4108 * [[features-depthClipControl]] pname:depthClipControl indicates that the 4109 implementation supports setting 4110 slink:VkPipelineViewportDepthClipControlCreateInfoEXT::pname:negativeOneToOne 4111 to ename:VK_TRUE. 4112 4113:refpage: VkPhysicalDeviceDepthClipControlFeaturesEXT 4114include::{chapters}/features.txt[tag=features] 4115 4116include::{generated}/validity/structs/VkPhysicalDeviceDepthClipControlFeaturesEXT.txt[] 4117-- 4118 4119endif::VK_EXT_depth_clip_control[] 4120 4121ifdef::VK_KHR_workgroup_memory_explicit_layout[] 4122[open,refpage='VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',desc='Structure describing the workgroup storage explicit layout features that can be supported by an implementation',type='structs'] 4123-- 4124The sname:VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR structure 4125is defined as: 4126 4127include::{generated}/api/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.txt[] 4128 4129This structure describes the following features: 4130 4131 * pname:sType is the type of this structure. 4132 * pname:pNext is `NULL` or a pointer to a structure extending this 4133 structure. 4134 * [[features-workgroupMemoryExplicitLayout]] 4135 pname:workgroupMemoryExplicitLayout indicates whether the implementation 4136 supports the SPIR-V code:WorkgroupMemoryExplicitLayoutKHR capability. 4137 * [[features-workgroupMemoryExplicitLayoutScalarBlockLayout]] 4138 pname:workgroupMemoryExplicitLayoutScalarBlockLayout indicates whether 4139 the implementation supports scalar alignment for laying out Workgroup 4140 Blocks. 4141 * [[features-workgroupMemoryExplicitLayout8BitAccess]] 4142 pname:workgroupMemoryExplicitLayout8BitAccess indicates whether objects 4143 in the code:Workgroup storage class with the code:Block decoration can: 4144 have 8-bit integer members. 4145 If this feature is not enabled, 8-bit integer members must: not be used 4146 in such objects. 4147 This also indicates whether shader modules can: declare the 4148 code:WorkgroupMemoryExplicitLayout8BitAccessKHR capability. 4149 * [[features-workgroupMemoryExplicitLayout16BitAccess]] 4150 pname:workgroupMemoryExplicitLayout16BitAccess indicates whether objects 4151 in the code:Workgroup storage class with the code:Block decoration can: 4152 have 16-bit integer and 16-bit floating-point members. 4153 If this feature is not enabled, 16-bit integer or 16-bit floating-point 4154 members must: not be used in such objects. 4155 This also indicates whether shader modules can: declare the 4156 code:WorkgroupMemoryExplicitLayout16BitAccessKHR capability. 4157 4158:refpage: VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR 4159include::{chapters}/features.txt[tag=features] 4160 4161include::{generated}/validity/structs/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.txt[] 4162-- 4163endif::VK_KHR_workgroup_memory_explicit_layout[] 4164 4165ifdef::VK_KHR_synchronization2[] 4166[open,refpage='VkPhysicalDeviceSynchronization2FeaturesKHR',desc='Structure describing whether the implementation supports v2 synchronization commands',type='structs'] 4167-- 4168The sname:VkPhysicalDeviceSynchronization2FeaturesKHR structure is defined 4169as: 4170 4171include::{generated}/api/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.txt[] 4172 4173This structure describes the following feature: 4174 4175 * pname:sType is the type of this structure. 4176 * pname:pNext is `NULL` or a pointer to a structure extending this 4177 structure. 4178 * [[features-synchronization2]] pname:synchronization2 indicates whether 4179 the implementation supports the new set of synchronization commands 4180 introduced in `apiext:VK_KHR_synchronization2`. 4181 4182:refpage: VkPhysicalDeviceSynchronization2FeaturesKHR 4183include::{chapters}/features.txt[tag=features] 4184 4185include::{generated}/validity/structs/VkPhysicalDeviceSynchronization2FeaturesKHR.txt[] 4186-- 4187endif::VK_KHR_synchronization2[] 4188 4189ifdef::VK_EXT_vertex_input_dynamic_state[] 4190[open,refpage='VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT',desc='Structure describing whether the dynamic vertex input state can be used',type='structs'] 4191-- 4192The sname:VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT structure is 4193defined as: 4194 4195include::{generated}/api/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.txt[] 4196 4197This structure describes the following feature: 4198 4199 * pname:sType is the type of this structure. 4200 * pname:pNext is `NULL` or a pointer to a structure extending this 4201 structure. 4202 * [[features-vertexInputDynamicState]] pname:vertexInputDynamicState 4203 indicates that the implementation supports the following dynamic states: 4204 ** ename:VK_DYNAMIC_STATE_VERTEX_INPUT_EXT 4205 4206:refpage: VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT 4207include::{chapters}/features.txt[tag=features] 4208 4209include::{generated}/validity/structs/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.txt[] 4210-- 4211endif::VK_EXT_vertex_input_dynamic_state[] 4212 4213ifdef::VK_KHR_fragment_shading_rate[] 4214[open,refpage='VkPhysicalDeviceFragmentShadingRateFeaturesKHR',desc='Structure indicating support for variable rate fragment shading',type='structs'] 4215-- 4216The sname:VkPhysicalDeviceFragmentShadingRateFeaturesKHR structure is 4217defined as: 4218 4219include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.txt[] 4220 4221This structure describes the following features: 4222 4223 * pname:sType is the type of this structure. 4224 * pname:pNext is `NULL` or a pointer to a structure extending this 4225 structure. 4226 * [[features-pipelineFragmentShadingRate]] 4227 pname:pipelineFragmentShadingRate indicates that the implementation 4228 supports the <<primsrast-fragment-shading-rate-pipeline, pipeline 4229 fragment shading rate>>. 4230 * [[features-primitiveFragmentShadingRate]] 4231 pname:primitiveFragmentShadingRate indicates that the implementation 4232 supports the <<primsrast-fragment-shading-rate-primitive, primitive 4233 fragment shading rate>>. 4234 * [[features-attachmentFragmentShadingRate]] 4235 pname:attachmentFragmentShadingRate indicates that the implementation 4236 supports the <<primsrast-fragment-shading-rate-attachment, attachment 4237 fragment shading rate>>. 4238 4239:refpage: VkPhysicalDeviceFragmentShadingRateFeaturesKHR 4240include::{chapters}/features.txt[tag=features] 4241 4242include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.txt[] 4243-- 4244endif::VK_KHR_fragment_shading_rate[] 4245 4246ifdef::VK_NV_fragment_shading_rate_enums[] 4247[open,refpage='VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV',desc='Structure indicating support for fragment shading rate enums',type='structs'] 4248-- 4249The sname:VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV structure is 4250defined as: 4251 4252include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.txt[] 4253 4254This structure describes the following features: 4255 4256 * pname:sType is the type of this structure. 4257 * pname:pNext is `NULL` or a pointer to a structure extending this 4258 structure. 4259 * [[features-fragmentShadingRateEnums]] pname:fragmentShadingRateEnums 4260 indicates that the implementation supports specifying fragment shading 4261 rates using the ename:VkFragmentShadingRateNV enumerated type. 4262 * [[features-supersampleFragmentShadingRates]] 4263 pname:supersampleFragmentShadingRates indicates that the implementation 4264 supports fragment shading rate enum values indicating more than one 4265 invocation per fragment. 4266 * [[features-noInvocationFragmentShadingRates]] 4267 pname:noInvocationFragmentShadingRates indicates that the implementation 4268 supports a fragment shading rate enum value indicating that no fragment 4269 shaders should be invoked when that shading rate is used. 4270 4271:refpage: VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV 4272include::{chapters}/features.txt[tag=features] 4273 4274include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.txt[] 4275-- 4276endif::VK_NV_fragment_shading_rate_enums[] 4277 4278 4279ifdef::VK_NV_inherited_viewport_scissor[] 4280[open,refpage='VkPhysicalDeviceInheritedViewportScissorFeaturesNV',desc='Structure describing the viewport scissor inheritance behavior for an implementation',type='structs'] 4281-- 4282The sname:VkPhysicalDeviceInheritedViewportScissorFeaturesNV structure is 4283defined as: 4284 4285include::{generated}/api/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.txt[] 4286 4287This structure describes the following feature: 4288 4289 * pname:sType is the type of this structure. 4290 * pname:pNext is `NULL` or a pointer to a structure extending this 4291 structure. 4292 * [[features-inheritedViewportScissor2D]] 4293 pname:inheritedViewportScissor2D indicates whether secondary command 4294 buffers can inherit most of the dynamic state affected by 4295ifdef::VK_EXT_extended_dynamic_state[] 4296 ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, 4297 ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, 4298endif::VK_EXT_extended_dynamic_state[] 4299ifdef::VK_EXT_discard_rectangles[] 4300 ename:VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, 4301endif::VK_EXT_discard_rectangles[] 4302 ename:VK_DYNAMIC_STATE_VIEWPORT or ename:VK_DYNAMIC_STATE_SCISSOR, 4303 from a primary command buffer. 4304 4305:refpage: VkPhysicalDeviceInheritedViewportScissorFeaturesNV 4306include::{chapters}/features.txt[tag=features] 4307 4308include::{generated}/validity/structs/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.txt[] 4309-- 4310endif::VK_NV_inherited_viewport_scissor[] 4311 4312ifdef::VK_EXT_ycbcr_2plane_444_formats[] 4313[open,refpage='VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',desc='Structure describing whether the implementation supports additional 2-plane 444 {YCbCr} formats',type='structs'] 4314-- 4315The sname:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure is 4316defined as: 4317 4318include::{generated}/api/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.txt[] 4319 4320This structure describes the following feature: 4321 4322 * pname:sType is the type of this structure. 4323 * pname:pNext is `NULL` or a pointer to a structure extending this 4324 structure. 4325 * [[features-ycbcr2plane444Formats]] pname:ycbcr2plane444Formats indicates 4326 that the implementation supports the following 2-plane 444 {YCbCr} 4327 formats: 4328 ** ename:VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT 4329 ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT 4330 ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT 4331 ** ename:VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT 4332 4333:refpage: VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT 4334include::{chapters}/features.txt[tag=features] 4335 4336include::{generated}/validity/structs/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.txt[] 4337-- 4338endif::VK_EXT_ycbcr_2plane_444_formats[] 4339 4340ifdef::VK_EXT_color_write_enable[] 4341[open,refpage='VkPhysicalDeviceColorWriteEnableFeaturesEXT',desc='Structure describing whether writes to color attachments can be enabled and disabled dynamically',type='structs'] 4342-- 4343The sname:VkPhysicalDeviceColorWriteEnableFeaturesEXT structure is defined 4344as: 4345 4346include::{generated}/api/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.txt[] 4347 4348This structure describes the following feature: 4349 4350 * pname:sType is the type of this structure. 4351 * pname:pNext is `NULL` or a pointer to a structure extending this 4352 structure. 4353 * [[features-colorWriteEnable]] pname:colorWriteEnable indicates that the 4354 implementation supports the dynamic state 4355 ename:VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT. 4356 4357:refpage: VkPhysicalDeviceColorWriteEnableFeaturesEXT 4358include::{chapters}/features.txt[tag=features] 4359 4360include::{generated}/validity/structs/VkPhysicalDeviceColorWriteEnableFeaturesEXT.txt[] 4361-- 4362endif::VK_EXT_color_write_enable[] 4363 4364ifdef::VK_EXT_provoking_vertex[] 4365[open,refpage='VkPhysicalDeviceProvokingVertexFeaturesEXT',desc='Structure describing the provoking vertex features that can be supported by an implementation',type='structs'] 4366-- 4367The sname:VkPhysicalDeviceProvokingVertexFeaturesEXT structure is defined 4368as: 4369 4370include::{generated}/api/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.txt[] 4371 4372This structure describes the following feature: 4373 4374 * pname:sType is the type of this structure. 4375 * pname:pNext is `NULL` or a pointer to a structure extending this 4376 structure. 4377 * [[features-provokingVertexLast]] pname:provokingVertexLast indicates 4378 whether the implementation supports the 4379 ename:VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT 4380 <<VkProvokingVertexModeEXT,provoking vertex mode>> for flat shading. 4381 * [[features-transformFeedbackPreservesProvokingVertex]] 4382 pname:transformFeedbackPreservesProvokingVertex indicates that the order 4383 of vertices within each primitive written by transform feedback will 4384 preserve the provoking vertex. 4385 This does not apply to triangle fan primitives when 4386 <<limits-transformFeedbackPreservesTriangleFanProvokingVertex,pname:transformFeedbackPreservesTriangleFanProvokingVertex>> 4387 is ename:VK_FALSE. 4388 pname:transformFeedbackPreservesProvokingVertex must: be ename:VK_FALSE 4389 when the apiext:VK_EXT_transform_feedback extension is not supported. 4390 4391:refpage: VkPhysicalDeviceProvokingVertexFeaturesEXT 4392include::{chapters}/features.txt[tag=features] 4393 4394ifdef::VK_EXT_transform_feedback[] 4395When sname:VkPhysicalDeviceProvokingVertexFeaturesEXT is in the pname:pNext 4396chain of slink:VkDeviceCreateInfo but the 4397<<features-transformFeedback,transform feedback feature>> is not enabled, 4398the value of pname:transformFeedbackPreservesProvokingVertex is ignored. 4399endif::VK_EXT_transform_feedback[] 4400 4401include::{generated}/validity/structs/VkPhysicalDeviceProvokingVertexFeaturesEXT.txt[] 4402-- 4403endif::VK_EXT_provoking_vertex[] 4404 4405ifdef::VK_EXT_pageable_device_local_memory[] 4406[open,refpage='VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',desc='Structure describing whether the implementation supports pageable device-local memory',type='structs'] 4407-- 4408The sname:VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT structure is 4409defined as: 4410 4411include::{generated}/api/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.txt[] 4412 4413This structure describes the following feature: 4414 4415 * pname:sType is the type of this structure. 4416 * pname:pNext is `NULL` or a pointer to a structure extending this 4417 structure. 4418 * [[features-pageableDeviceLocalMemory]] pname:pageableDeviceLocalMemory 4419 indicates that the implementation supports pageable device-local memory 4420 and may: transparently move device-local memory allocations to 4421 host-local memory to better share device-local memory with other 4422 applications. 4423 4424:refpage: VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT 4425include::{chapters}/features.txt[tag=features] 4426 4427include::{generated}/validity/structs/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.txt[] 4428-- 4429endif::VK_EXT_pageable_device_local_memory[] 4430 4431ifdef::VK_EXT_multi_draw[] 4432[open,refpage='VkPhysicalDeviceMultiDrawFeaturesEXT',desc='Structure describing whether the implementation supports multi draw functionality',type='structs'] 4433-- 4434The sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure is defined as: 4435 4436include::{generated}/api/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.txt[] 4437 4438The members of the sname:VkPhysicalDeviceMultiDrawFeaturesEXT structure 4439describe the following features: 4440 4441 * pname:sType is the type of this structure. 4442 * pname:pNext is `NULL` or a pointer to a structure extending this 4443 structure. 4444 * [[features-multiDraw]] pname:multiDraw indicates that the implementation 4445 supports flink:vkCmdDrawMultiEXT and flink:vkCmdDrawMultiIndexedEXT. 4446 4447:refpage: VkPhysicalDeviceMultiDrawFeaturesEXT 4448include::{chapters}/features.txt[tag=features] 4449 4450include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawFeaturesEXT.txt[] 4451-- 4452endif::VK_EXT_multi_draw[] 4453 4454ifdef::VK_NV_ray_tracing_motion_blur[] 4455[open,refpage='VkPhysicalDeviceRayTracingMotionBlurFeaturesNV',desc='Structure describing the ray tracing motion blur features that can be supported by an implementation',type='structs'] 4456-- 4457The sname:VkPhysicalDeviceRayTracingMotionBlurFeaturesNV structure is 4458defined as: 4459 4460include::{generated}/api/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.txt[] 4461 4462This structure describes the following feature: 4463 4464 * pname:sType is the type of this structure. 4465 * pname:pNext is `NULL` or a pointer to a structure extending this 4466 structure. 4467 * [[features-rayTracingMotionBlur]] pname:rayTracingMotionBlur indicates 4468 whether the implementation supports the motion blur feature. 4469 * [[features-rayTracingMotionBlurPipelineTraceRaysIndirect]] 4470 pname:rayTracingMotionBlurPipelineTraceRaysIndirect indicates whether 4471 the implementation supports indirect ray tracing commands with the 4472 motion blur feature enabled. 4473 4474:refpage: VkPhysicalDeviceRayTracingMotionBlurFeaturesNV 4475include::{chapters}/features.txt[tag=features] 4476 4477include::{generated}/validity/structs/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.txt[] 4478-- 4479endif::VK_NV_ray_tracing_motion_blur[] 4480 4481ifdef::VK_HUAWEI_subpass_shading[] 4482[open,refpage='VkPhysicalDeviceSubpassShadingFeaturesHUAWEI',desc='Structure describing whether subpass shading is enabled',type='structs'] 4483-- 4484The sname:VkPhysicalDeviceSubpassShadingFeaturesHUAWEI structure is defined 4485as: 4486 4487include::{generated}/api/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.txt[] 4488 * pname:sType is the type of this structure. 4489 * pname:pNext is `NULL` or a pointer to a structure extending this 4490 structure. 4491 * [[features-subpassShading]] pname:subpassShading specifies whether 4492 subpass shading is supported. 4493 4494:refpage: VkPhysicalDeviceSubpassShadingFeaturesHUAWEI 4495include::{chapters}/features.txt[tag=features] 4496 4497include::{generated}/validity/structs/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.txt[] 4498-- 4499endif::VK_HUAWEI_subpass_shading[] 4500 4501ifdef::VK_NV_external_memory_rdma[] 4502[open,refpage='VkPhysicalDeviceExternalMemoryRDMAFeaturesNV',desc='Structure describing the external memory RDMA features supported by the implementation',type='structs'] 4503-- 4504The sname:VkPhysicalDeviceExternalMemoryRDMAFeaturesNV structure is defined 4505as: 4506 4507include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.txt[] 4508 4509This structure describes the following feature: 4510 4511 * pname:sType is the type of this structure. 4512 * pname:pNext is `NULL` or a pointer to a structure extending this 4513 structure. 4514 * [[features-externalMemoryRDMA]] pname:externalMemoryRDMA indicates 4515 whether the implementation has support for the 4516 ename:VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV memory property and the 4517 ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV external memory 4518 handle type. 4519 4520:refpage: VkPhysicalDeviceExternalMemoryRDMAFeaturesNV 4521include::{chapters}/features.txt[tag=features] 4522 4523include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.txt[] 4524-- 4525endif::VK_NV_external_memory_rdma[] 4526 4527ifdef::VK_KHR_present_id[] 4528[open,refpage='VkPhysicalDevicePresentIdFeaturesKHR',desc='Structure indicating support for present id',type='structs'] 4529-- 4530The sname:VkPhysicalDevicePresentIdFeaturesKHR structure is defined as: 4531 4532include::{generated}/api/structs/VkPhysicalDevicePresentIdFeaturesKHR.txt[] 4533 4534This structure describes the following feature: 4535 4536 * pname:sType is the type of this structure. 4537 * pname:pNext is `NULL` or a pointer to a structure extending this 4538 structure. 4539 * [[features-presentId]] pname:presentId indicates that the implementation 4540 supports specifying present ID values in the sname:VkPresentIdKHR 4541 extension to the sname:VkPresentInfoKHR struct. 4542 4543:refpage: VkPhysicalDevicePresentIdFeaturesKHR 4544include::{chapters}/features.txt[tag=features] 4545 4546include::{generated}/validity/structs/VkPhysicalDevicePresentIdFeaturesKHR.txt[] 4547-- 4548endif::VK_KHR_present_id[] 4549 4550ifdef::VK_KHR_present_wait[] 4551[open,refpage='VkPhysicalDevicePresentWaitFeaturesKHR',desc='Structure indicating support for present wait',type='structs'] 4552-- 4553The sname:VkPhysicalDevicePresentWaitFeaturesKHR structure is defined as: 4554 4555include::{generated}/api/structs/VkPhysicalDevicePresentWaitFeaturesKHR.txt[] 4556 4557This structure describes the following feature: 4558 4559 * pname:sType is the type of this structure. 4560 * pname:pNext is `NULL` or a pointer to a structure extending this 4561 structure. 4562 * [[features-presentWait]] pname:presentWait indicates that the 4563 implementation supports fname:vkWaitForPresentKHR. 4564 4565:refpage: VkPhysicalDevicePresentWaitFeaturesKHR 4566include::{chapters}/features.txt[tag=features] 4567 4568include::{generated}/validity/structs/VkPhysicalDevicePresentWaitFeaturesKHR.txt[] 4569-- 4570endif::VK_KHR_present_wait[] 4571 4572ifdef::VK_KHR_shader_integer_dot_product[] 4573[open,refpage='VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR',desc='Structure describing integer dot product features that can be supported by an implementation',type='structs'] 4574-- 4575The sname:VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR structure is 4576defined as: 4577 4578include::{generated}/api/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.txt[] 4579 4580The members of the sname:VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR 4581structure describe the following features: 4582 4583 * pname:sType is the type of this structure. 4584 * pname:pNext is `NULL` or a pointer to a structure extending this 4585 structure. 4586 * [[features-shaderIntegerDotProduct]] pname:shaderIntegerDotProduct 4587 specifies whether shader modules can: declare the 4588 code:DotProductInputAllKHR, code:DotProductInput4x8BitKHR, 4589 code:DotProductInput4x8BitPackedKHR and code:DotProductKHR capabilities. 4590 4591:refpage: VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR 4592include::{chapters}/features.txt[tag=features] 4593 4594include::{generated}/validity/structs/VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR.txt[] 4595-- 4596endif::VK_KHR_shader_integer_dot_product[] 4597 4598ifdef::VK_EXT_rgba10x6_formats[] 4599[open,refpage='VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT',desc='Structure describing whether rendering to VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 formats can be supported by an implementation',type='structs'] 4600-- 4601The sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT structure is defined 4602as: 4603 4604include::{generated}/api/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.txt[] 4605 4606The members of the sname:VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 4607structure describe the following features: 4608 4609 * pname:sType is the type of this structure. 4610 * pname:pNext is `NULL` or a pointer to a structure extending this 4611 structure. 4612 * [[features-formatRgba10x6WithoutYCbCrSampler]] 4613 pname:formatRgba10x6WithoutYCbCrSampler indicates that 4614 ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 can: be used with a 4615 sname:VkImageView with pname:subresourceRange.aspectMask equal to 4616 ename:VK_IMAGE_ASPECT_COLOR_BIT without a <<samplers-YCbCr-conversion, 4617 sampler {YCbCr} conversion>> enabled. 4618 4619:refpage: VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT 4620include::{chapters}/features.txt[tag=features] 4621 4622include::{generated}/validity/structs/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.txt[] 4623-- 4624endif::VK_EXT_rgba10x6_formats[] 4625 4626ifdef::VK_KHR_maintenance4[] 4627[open,refpage='VkPhysicalDeviceMaintenance4FeaturesKHR',desc='Structure describing whether the implementation supports maintenance4 functionality',type='structs'] 4628-- 4629The sname:VkPhysicalDeviceMaintenance4FeaturesKHR structure is defined as: 4630 4631include::{generated}/api/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.txt[] 4632 4633This structure describes the following features: 4634 4635 * [[features-maintenance4]] pname:maintenance4 indicates that the 4636 implementation supports the following: 4637 ** The application may: destroy a slink:VkPipelineLayout object 4638 immediately after using it to create another object. 4639 ** code:LocalSizeId can: be used as an alternative to code:LocalSize to 4640 specify the local workgroup size with specialization constants. 4641 ** Images created with identical creation parameters will always have the 4642 same alignment requirements. 4643 ** The size memory requirement of a buffer or image is never greater than 4644 that of another buffer or image created with a greater or equal size. 4645 ** Push constants do not have to be initialized before they are 4646 dynamically accessed. 4647 ** The interface matching rules allow a larger output vector to match with 4648 a smaller input vector, with additional values being discarded. 4649 4650:refpage: VkPhysicalDeviceMaintenance4FeaturesKHR 4651include::{chapters}/features.txt[tag=features] 4652 4653include::{generated}/validity/structs/VkPhysicalDeviceMaintenance4FeaturesKHR.txt[] 4654-- 4655endif::VK_KHR_maintenance4[] 4656 4657ifdef::VK_KHR_dynamic_rendering[] 4658[open,refpage='VkPhysicalDeviceDynamicRenderingFeaturesKHR',desc='Structure indicating support for dynamic render pass instances',type='structs'] 4659-- 4660The sname:VkPhysicalDeviceDynamicRenderingFeaturesKHR structure is defined 4661as: 4662 4663include::{generated}/api/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.txt[] 4664 4665The members of the sname:VkPhysicalDeviceDynamicRenderingFeaturesKHR 4666structure describe the following features: 4667 4668 * [[features-dynamicRendering]] pname:dynamicRendering specifies that the 4669 implementation supports dynamic render pass instances using the 4670 flink:vkCmdBeginRenderingKHR command. 4671 4672:refpage: VkPhysicalDeviceDynamicRenderingFeaturesKHR 4673include::{chapters}/features.txt[tag=features] 4674 4675include::{generated}/validity/structs/VkPhysicalDeviceDynamicRenderingFeaturesKHR.txt[] 4676-- 4677endif::VK_KHR_dynamic_rendering[] 4678 4679ifdef::VK_EXT_image_view_min_lod[] 4680[open,refpage='VkPhysicalDeviceImageViewMinLodFeaturesEXT',desc='Structure describing whether clamping the min lod of a image view is supported by the implementation',type='structs'] 4681-- 4682The sname:VkPhysicalDeviceImageViewMinLodFeaturesEXT structure is defined 4683as: 4684 4685include::{generated}/api/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.txt[] 4686 4687This structure describes the following features: 4688 4689 * [[features-minLod]] pname:minLod indicates whether the implementation 4690 supports clamping the minimum LOD value during 4691 <<textures-image-level-selection,Image Level(s) Selection>> and 4692 <<textures-integer-coordinate-operations,Integer Texel Coordinate 4693 Operations>> with a given slink:VkImageView by 4694 slink:VkImageViewMinLodCreateInfoEXT::pname:minLod. 4695 4696:refpage: VkPhysicalDeviceImageViewMinLodFeaturesEXT 4697include::{chapters}/features.txt[tag=features] 4698 4699include::{generated}/validity/structs/VkPhysicalDeviceImageViewMinLodFeaturesEXT.txt[] 4700-- 4701endif::VK_EXT_image_view_min_lod[] 4702 4703ifdef::VK_ARM_rasterization_order_attachment_access[] 4704[open,refpage='VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM',desc='Structure describing whether rasterization order attachment access can be supported by an implementation',type='structs'] 4705-- 4706The sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM 4707structure is defined as: 4708 4709include::{generated}/api/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.txt[] 4710 4711The members of the 4712sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM 4713structure describe the following features: 4714 4715 * [[features-rasterizationOrderColorAttachmentAccess]] 4716 pname:rasterizationOrderColorAttachmentAccess indicates that 4717 rasterization order access to color and input attachments is supported 4718 by the implementation. 4719 * [[features-rasterizationOrderDepthAttachmentAccess]] 4720 pname:rasterizationOrderDepthAttachmentAccess indicates that 4721 rasterization order access to the depth aspect of depth/stencil and 4722 input attachments is supported by the implementation. 4723 * [[features-rasterizationOrderStencilAttachmentAccess]] 4724 pname:rasterizationOrderStencilAttachmentAccess indicates that 4725 rasterization order access to the stencil aspect of depth/stencil and 4726 input attachments is supported by the implementation. 4727 4728If the sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM 4729structure is included in the pname:pNext chain of 4730slink:VkPhysicalDeviceFeatures2, it is filled with values indicating whether 4731the feature is supported. 4732sname:VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM can: 4733also be used in the pname:pNext chain of slink:VkDeviceCreateInfo to enable 4734features. 4735 4736include::{generated}/validity/structs/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM.txt[] 4737-- 4738 4739endif::VK_ARM_rasterization_order_attachment_access[] 4740 4741 4742[[features-requirements]] 4743== Feature Requirements 4744 4745All Vulkan graphics implementations must: support the following features: 4746 4747ifdef::VK_KHR_portability_subset[] 4748 * <<features-robustBufferAccess, pname:robustBufferAccess>>, unless the 4749 `apiext:VK_KHR_portability_subset` extension is enabled. 4750endif::VK_KHR_portability_subset[] 4751ifndef::VK_KHR_portability_subset[] 4752 * <<features-robustBufferAccess, pname:robustBufferAccess>> 4753endif::VK_KHR_portability_subset[] 4754ifdef::VK_VERSION_1_1[] 4755 * <<features-multiview, pname:multiview>>, if Vulkan 1.1 is supported. 4756ifdef::VK_KHR_shader_draw_parameters[] 4757 * <<features-shaderDrawParameters,pname:shaderDrawParameters>>, if the 4758 `apiext:VK_KHR_shader_draw_parameters` extension is supported. 4759endif::VK_KHR_shader_draw_parameters[] 4760endif::VK_VERSION_1_1[] 4761ifdef::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[] 4762 * <<features-uniformBufferStandardLayout,pname:uniformBufferStandardLayout>>, 4763 if Vulkan 1.2 or the `apiext:VK_KHR_uniform_buffer_standard_layout` 4764 extension is supported. 4765endif::VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout[] 4766ifdef::VK_KHR_variable_pointers[] 4767 * <<features-variablePointersStorageBuffer, 4768 pname:variablePointersStorageBuffer>>, if the 4769 `apiext:VK_KHR_variable_pointers` extension is supported. 4770endif::VK_KHR_variable_pointers[] 4771ifdef::VK_KHR_8bit_storage[] 4772 * <<features-storageBuffer8BitAccess, pname:storageBuffer8BitAccess>>, if 4773 the `apiext:VK_KHR_8bit_storage` extension is supported. 4774endif::VK_KHR_8bit_storage[] 4775ifdef::VK_VERSION_1_2,VK_KHR_8bit_storage[] 4776 * <<features-storageBuffer8BitAccess, pname:StorageBuffer8BitAccess>>, if 4777 <<features-uniformAndStorageBuffer8BitAccess, 4778 pname:uniformAndStorageBuffer8BitAccess>> is enabled. 4779endif::VK_VERSION_1_2,VK_KHR_8bit_storage[] 4780ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4781 * If 4782ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,descriptorIndexing>> feature is supported, or if] 4783 the `apiext:VK_EXT_descriptor_indexing` extension is supported: 4784 ** <<features-shaderSampledImageArrayDynamicIndexing, 4785 pname:shaderSampledImageArrayDynamicIndexing>> 4786 ** <<features-shaderStorageBufferArrayDynamicIndexing, 4787 pname:shaderStorageBufferArrayDynamicIndexing>> 4788 ** <<features-shaderUniformTexelBufferArrayDynamicIndexing, 4789 pname:shaderUniformTexelBufferArrayDynamicIndexing>> 4790 ** <<features-shaderStorageTexelBufferArrayDynamicIndexing, 4791 pname:shaderStorageTexelBufferArrayDynamicIndexing>> 4792 ** <<features-shaderSampledImageArrayNonUniformIndexing, 4793 pname:shaderSampledImageArrayNonUniformIndexing>> 4794 ** <<features-shaderStorageBufferArrayNonUniformIndexing, 4795 pname:shaderStorageBufferArrayNonUniformIndexing>> 4796 ** <<features-shaderUniformTexelBufferArrayNonUniformIndexing, 4797 pname:shaderUniformTexelBufferArrayNonUniformIndexing>> 4798 ** <<features-descriptorBindingSampledImageUpdateAfterBind, 4799 pname:descriptorBindingSampledImageUpdateAfterBind>> 4800 ** <<features-descriptorBindingStorageImageUpdateAfterBind, 4801 pname:descriptorBindingStorageImageUpdateAfterBind>> 4802 ** <<features-descriptorBindingStorageBufferUpdateAfterBind, 4803 pname:descriptorBindingStorageBufferUpdateAfterBind>> (see also 4804 <<limits-robustBufferAccessUpdateAfterBind, 4805 pname:robustBufferAccessUpdateAfterBind>>) 4806 ** <<features-descriptorBindingUniformTexelBufferUpdateAfterBind, 4807 pname:descriptorBindingUniformTexelBufferUpdateAfterBind>> (see also 4808 <<limits-robustBufferAccessUpdateAfterBind, 4809 pname:robustBufferAccessUpdateAfterBind>>) 4810 ** <<features-descriptorBindingStorageTexelBufferUpdateAfterBind, 4811 pname:descriptorBindingStorageTexelBufferUpdateAfterBind>> (see also 4812 <<limits-robustBufferAccessUpdateAfterBind, 4813 pname:robustBufferAccessUpdateAfterBind>>) 4814 ** <<features-descriptorBindingUpdateUnusedWhilePending, 4815 pname:descriptorBindingUpdateUnusedWhilePending>> 4816 ** <<features-descriptorBindingPartiallyBound, 4817 pname:descriptorBindingPartiallyBound>> 4818 ** <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>> 4819endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4820ifdef::VK_EXT_inline_uniform_block[] 4821 * <<features-inlineUniformBlock,pname:inlineUniformBlock>>, if the 4822 `apiext:VK_EXT_inline_uniform_block` extension is supported. 4823ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4824 * <<features-descriptorBindingInlineUniformBlockUpdateAfterBind, 4825 pname:descriptorBindingInlineUniformBlockUpdateAfterBind>>, if the 4826 `apiext:VK_EXT_inline_uniform_block` extension is supported; and if 4827ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,pname:descriptorIndexing>> feature is supported, or] 4828 the `apiext:VK_EXT_descriptor_indexing` extension is supported. 4829endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4830endif::VK_EXT_inline_uniform_block[] 4831ifdef::VK_EXT_scalar_block_layout[] 4832 * <<features-scalarBlockLayout,pname:scalarBlockLayout>>, if the 4833 `apiext:VK_EXT_scalar_block_layout` extension is supported. 4834endif::VK_EXT_scalar_block_layout[] 4835ifdef::VK_VERSION_1_2[] 4836 * <<features-subgroupBroadcastDynamicId, 4837 pname:subgroupBroadcastDynamicId>>, if Vulkan 1.2 is supported. 4838endif::VK_VERSION_1_2[] 4839ifdef::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[] 4840 * <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>, 4841 if the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is 4842 supported. 4843endif::VK_VERSION_1_2+VK_KHR_sampler_mirror_clamp_to_edge[] 4844ifdef::VK_VERSION_1_2+VK_KHR_draw_indirect_count[] 4845 * <<features-drawIndirectCount, pname:drawIndirectCount>>, if the 4846 `apiext:VK_KHR_draw_indirect_count` extension is supported. 4847endif::VK_VERSION_1_2+VK_KHR_draw_indirect_count[] 4848ifdef::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[] 4849 * <<features-samplerFilterMinmax, pname:samplerFilterMinmax>>, if the 4850 `apiext:VK_EXT_sampler_filter_minmax` extension is supported. 4851endif::VK_VERSION_1_2+VK_EXT_sampler_filter_minmax[] 4852ifdef::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[] 4853 * <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>>, 4854 if the `apiext:VK_EXT_shader_viewport_index_layer` extension is 4855 supported. 4856 * <<features-shaderOutputLayer, pname:shaderOutputLayer>>, if the 4857 `apiext:VK_EXT_shader_viewport_index_layer` extension is supported. 4858endif::VK_VERSION_1_2+VK_EXT_shader_viewport_index_layer[] 4859ifdef::VK_EXT_subgroup_size_control[] 4860 * <<features-subgroupSizeControl, pname:subgroupSizeControl>>, if the 4861 `apiext:VK_EXT_subgroup_size_control` extension is supported. 4862 * <<features-computeFullSubgroups, pname:computeFullSubgroups>>, if the 4863 `apiext:VK_EXT_subgroup_size_control` extension is supported. 4864endif::VK_EXT_subgroup_size_control[] 4865ifdef::VK_EXT_device_memory_report[] 4866 * <<features-deviceMemoryReport, pname:deviceMemoryReport>>, if the 4867 `apiext:VK_EXT_device_memory_report` extension is supported. 4868endif::VK_EXT_device_memory_report[] 4869ifdef::VK_EXT_global_priority_query[] 4870 * <<features-globalPriorityQuery, pname:globalPriorityQuery>>, if the 4871 `apiext:VK_EXT_global_priority_query` extension is supported. 4872endif::VK_EXT_global_priority_query[] 4873ifdef::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[] 4874 * <<features-imagelessFramebuffer, pname:imagelessFramebuffer>>, if Vulkan 4875 1.2 or the `apiext:VK_KHR_imageless_framebuffer` extension is supported. 4876endif::VK_VERSION_1_2,VK_KHR_imageless_framebuffer[] 4877ifdef::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] 4878 * <<features-separateDepthStencilLayouts, 4879 pname:separateDepthStencilLayouts>>, if Vulkan 1.2 or the 4880 `apiext:VK_KHR_separate_depth_stencil_layouts` extension is supported. 4881endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] 4882ifdef::VK_VERSION_1_2,VK_EXT_host_query_reset[] 4883 * <<features-hostQueryReset, pname:hostQueryReset>>, if Vulkan 1.2 or the 4884 `apiext:VK_EXT_host_query_reset` extension is supported. 4885endif::VK_VERSION_1_2,VK_EXT_host_query_reset[] 4886ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 4887 * <<features-timelineSemaphore, pname:timelineSemaphore>>, if Vulkan 1.2 4888 or the `apiext:VK_KHR_timeline_semaphore` extension is supported. 4889endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 4890ifdef::VK_KHR_acceleration_structure[] 4891 * If the `apiext:VK_KHR_acceleration_structure` extension is supported: 4892 ** <<features-accelerationStructure,pname:accelerationStructure>> 4893 ** All the features required by 4894ifdef::VK_VERSION_1_2[the <<features-descriptorIndexing,descriptorIndexing>> feature if Vulkan 1.2 is supported, or] 4895 the `apiext:VK_EXT_descriptor_indexing` extension. 4896 ** <<features-descriptorBindingAccelerationStructureUpdateAfterBind, 4897 pname:descriptorBindingAccelerationStructureUpdateAfterBind>> 4898 ** <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> from 4899ifdef::VK_VERSION_1_2[Vulkan 1.2 or] 4900 the `apiext:VK_KHR_buffer_device_address` extension. 4901endif::VK_KHR_acceleration_structure[] 4902ifdef::VK_KHR_ray_tracing_pipeline[] 4903 * If the `apiext:VK_KHR_ray_tracing_pipeline` extension is supported: 4904 ** <<features-accelerationStructure,pname:accelerationStructure>> from 4905 `apiext:VK_KHR_acceleration_structure` 4906 ** <<features-rayTracingPipeline, pname:rayTracingPipeline>> 4907 ** <<features-rayTracingPipelineTraceRaysIndirect, 4908 pname:rayTracingPipelineTraceRaysIndirect>> 4909 ** <<features-rayTraversalPrimitiveCulling, 4910 pname:rayTraversalPrimitiveCulling>>, if <<features-rayQuery, 4911 pname:rayQuery>> is supported from `apiext:VK_KHR_ray_query` 4912 ** the `apiext:VK_KHR_pipeline_library` extension. 4913endif::VK_KHR_ray_tracing_pipeline[] 4914ifdef::VK_KHR_ray_query[] 4915 * If the `apiext:VK_KHR_ray_query` extension is supported: 4916 ** <<features-accelerationStructure,pname:accelerationStructure>> from 4917 `apiext:VK_KHR_acceleration_structure` 4918 ** <<features-rayQuery, pname:rayQuery>> 4919endif::VK_KHR_ray_query[] 4920ifdef::VK_EXT_pipeline_creation_cache_control[] 4921 * <<features-pipelineCreationCacheControl, 4922 pname:pipelineCreationCacheControl>>, if the 4923 `apiext:VK_EXT_pipeline_creation_cache_control` extension is supported. 4924endif::VK_EXT_pipeline_creation_cache_control[] 4925ifdef::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[] 4926 * <<features-subgroup-extended-types, pname:shaderSubgroupExtendedTypes>>, 4927 if Vulkan 1.2 or the `apiext:VK_KHR_shader_subgroup_extended_types` 4928 extension is supported. 4929endif::VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types[] 4930ifdef::VK_KHR_sampler_ycbcr_conversion[] 4931 * <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>, if 4932 the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is supported. 4933endif::VK_KHR_sampler_ycbcr_conversion[] 4934ifdef::VK_KHR_pipeline_executable_properties[] 4935 * <<features-pipelineExecutableInfo, pname:pipelineExecutableInfo>>, if 4936 the `apiext:VK_KHR_pipeline_executable_properties` extension is 4937 supported. 4938endif::VK_KHR_pipeline_executable_properties[] 4939ifdef::VK_EXT_texture_compression_astc_hdr[] 4940 * <<features-textureCompressionASTC_HDR, 4941 pname:textureCompressionASTC_HDR>>, if the 4942 `apiext:VK_EXT_texture_compression_astc_hdr` extension is supported. 4943endif::VK_EXT_texture_compression_astc_hdr[] 4944ifdef::VK_EXT_depth_clip_enable[] 4945 * <<features-depthClipEnable, pname:depthClipEnable>>, if the 4946 `apiext:VK_EXT_depth_clip_enable` extension is supported. 4947endif::VK_EXT_depth_clip_enable[] 4948ifdef::VK_EXT_memory_priority[] 4949 * <<features-memoryPriority, pname:memoryPriority>>, if the 4950 `apiext:VK_EXT_memory_priority` extension is supported. 4951endif::VK_EXT_memory_priority[] 4952ifdef::VK_EXT_ycbcr_image_arrays[] 4953 * <<features-ycbcrImageArrays, pname:ycbcrImageArrays>>, if the 4954 `apiext:VK_EXT_ycbcr_image_arrays` extension is supported. 4955endif::VK_EXT_ycbcr_image_arrays[] 4956ifdef::VK_EXT_index_type_uint8[] 4957 * <<features-indexTypeUint8, pname:indexTypeUint8>>, if the 4958 `apiext:VK_EXT_index_type_uint8` extension is supported. 4959endif::VK_EXT_index_type_uint8[] 4960ifdef::VK_EXT_primitive_topology_list_restart[] 4961 * <<features-primitiveTopologyListRestart, 4962 pname:primitiveTopologyListRestart>>, if the 4963 `apiext:VK_EXT_primitive_topology_list_restart` extension is supported. 4964endif::VK_EXT_primitive_topology_list_restart[] 4965ifdef::VK_EXT_shader_demote_to_helper_invocation[] 4966 * <<features-shaderDemoteToHelperInvocation, 4967 pname:shaderDemoteToHelperInvocation>>, if the 4968 `apiext:VK_EXT_shader_demote_to_helper_invocation` extension is 4969 supported. 4970endif::VK_EXT_shader_demote_to_helper_invocation[] 4971ifdef::VK_EXT_texel_buffer_alignment[] 4972 * <<features-texelBufferAlignment, pname:texelBufferAlignment>>, if the 4973 `apiext:VK_EXT_texel_buffer_alignment` extension is supported. 4974endif::VK_EXT_texel_buffer_alignment[] 4975ifdef::VK_KHR_vulkan_memory_model[] 4976 * <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>, if the 4977 `apiext:VK_KHR_vulkan_memory_model` extension is supported. 4978endif::VK_KHR_vulkan_memory_model[] 4979ifdef::VK_KHR_buffer_device_address[] 4980 * <<features-bufferDeviceAddress, pname:bufferDeviceAddress>>, if the 4981 `apiext:VK_KHR_buffer_device_address` extension is supported. 4982endif::VK_KHR_buffer_device_address[] 4983ifdef::VK_KHR_performance_query[] 4984 * <<VkPhysicalDevicePerformanceQueryFeaturesKHR, 4985 pname:performanceCounterQueryPools>>, if the 4986 `apiext:VK_KHR_performance_query` extension is supported. 4987endif::VK_KHR_performance_query[] 4988ifdef::VK_EXT_transform_feedback[] 4989 * <<features-transformFeedback, pname:transformFeedback>>, if the 4990 `apiext:VK_EXT_transform_feedback` extension is supported. 4991endif::VK_EXT_transform_feedback[] 4992ifdef::VK_EXT_conditional_rendering[] 4993 * <<features-conditionalRendering, pname:conditionalRendering>>, if the 4994 `apiext:VK_EXT_conditional_rendering` extension is supported. 4995endif::VK_EXT_conditional_rendering[] 4996ifdef::VK_EXT_vertex_attribute_divisor[] 4997 * <<features-vertexAttributeInstanceRateDivisor, 4998 pname:vertexAttributeInstanceRateDivisor>>, if the 4999 `apiext:VK_EXT_vertex_attribute_divisor` extension is supported. 5000endif::VK_EXT_vertex_attribute_divisor[] 5001ifdef::VK_EXT_fragment_density_map[] 5002 * <<features-fragmentDensityMap, pname:fragmentDensityMap>>, if the 5003 `apiext:VK_EXT_fragment_density_map` extension is supported. 5004endif::VK_EXT_fragment_density_map[] 5005ifdef::VK_KHR_shader_clock[] 5006 * <<features-shaderSubgroupClock, pname:shaderSubgroupClock>>, if the 5007 `apiext:VK_KHR_shader_clock` extension is supported. 5008endif::VK_KHR_shader_clock[] 5009ifdef::VK_KHR_shader_atomic_int64[] 5010 * <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>>, 5011 if the `apiext:VK_KHR_shader_atomic_int64` extension is supported. 5012endif::VK_KHR_shader_atomic_int64[] 5013ifdef::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[] 5014 * <<features-shaderInt64, pname:shaderInt64>>, if the 5015 <<features-shaderSharedInt64Atomics, pname:shaderSharedInt64Atomics>> or 5016 <<features-shaderBufferInt64Atomics, pname:shaderBufferInt64Atomics>> 5017 features are supported. 5018endif::VK_VERSION_1_2,VK_KHR_shader_atomic_int64[] 5019ifdef::VK_KHR_shader_float16_int8[] 5020 * <<features-shaderFloat16, pname:shaderFloat16>> or 5021 <<features-shaderInt8, pname:shaderInt8>>, if the 5022 `apiext:VK_KHR_shader_float16_int8` extension is supported. 5023endif::VK_KHR_shader_float16_int8[] 5024ifdef::VK_EXT_fragment_shader_interlock[] 5025 * <<features-fragmentShaderSampleInterlock, 5026 pname:fragmentShaderSampleInterlock>> or 5027 <<features-fragmentShaderPixelInterlock, 5028 pname:fragmentShaderPixelInterlock>> or 5029 <<features-fragmentShaderShadingRateInterlock, 5030 pname:fragmentShaderShadingRateInterlock>>, if the 5031 `apiext:VK_EXT_fragment_shader_interlock` extension is supported. 5032endif::VK_EXT_fragment_shader_interlock[] 5033ifdef::VK_EXT_line_rasterization[] 5034 * <<features-rectangularLines, pname:rectangularLines>> or 5035 <<features-bresenhamLines, pname:bresenhamLines>> or 5036 <<features-smoothLines, pname:smoothLines>> or 5037 <<features-stippledRectangularLines, pname:stippledRectangularLines>> or 5038 <<features-stippledBresenhamLines, pname:stippledBresenhamLines>> or 5039 <<features-stippledSmoothLines, pname:stippledSmoothLines>>, if the 5040 `apiext:VK_EXT_line_rasterization` extension is supported. 5041endif::VK_EXT_line_rasterization[] 5042ifdef::VK_KHR_16bit_storage[] 5043 * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>, 5044 if the `apiext:VK_KHR_16bit_storage` extension is supported. 5045endif::VK_KHR_16bit_storage[] 5046ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[] 5047 * <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>, 5048 if <<features-uniformAndStorageBuffer16BitAccess, 5049 pname:uniformAndStorageBuffer16BitAccess>> is enabled. 5050endif::VK_VERSION_1_1,VK_KHR_16bit_storage[] 5051ifdef::VK_EXT_image_robustness[] 5052 * <<features-robustImageAccess, pname:robustImageAccess>>, if the 5053 `apiext:VK_EXT_image_robustness` extension is supported. 5054endif::VK_EXT_image_robustness[] 5055ifdef::VK_EXT_4444_formats[] 5056 * <<features-formatA4R4G4B4, pname:formatA4R4G4B4>>, if the 5057 `apiext:VK_EXT_4444_formats` extension is supported. 5058endif::VK_EXT_4444_formats[] 5059ifdef::VK_VALVE_mutable_descriptor_type[] 5060 * <<features-mutableDescriptorType, pname:mutableDescriptorType>>, if the 5061 `apiext:VK_VALVE_mutable_descriptor_type` extension is supported. 5062endif::VK_VALVE_mutable_descriptor_type[] 5063ifdef::VK_EXT_shader_image_atomic_int64[] 5064 * <<features-shaderInt64, pname:shaderInt64>> and 5065 <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if 5066 the `apiext:VK_EXT_shader_image_atomic_int64` extension is supported. 5067 * <<features-shaderImageInt64Atomics, pname:shaderImageInt64Atomics>>, if 5068 the <<features-sparseImageInt64Atomics, pname:sparseImageInt64Atomics>> 5069 feature is supported. 5070endif::VK_EXT_shader_image_atomic_int64[] 5071ifdef::VK_EXT_shader_atomic_float[] 5072 * <<features-shaderImageFloat32Atomics, pname:shaderImageFloat32Atomics>>, 5073 if the <<features-sparseImageFloat32Atomics, 5074 pname:sparseImageFloat32Atomics>> feature is supported. 5075 * <<features-shaderImageFloat32AtomicAdd, 5076 pname:shaderImageFloat32AtomicAdd>>, if the 5077 <<features-sparseImageFloat32AtomicAdd, 5078 pname:sparseImageFloat32AtomicAdd>> feature is supported. 5079endif::VK_EXT_shader_atomic_float[] 5080ifdef::VK_KHR_fragment_shading_rate[] 5081 * <<features-pipelineFragmentShadingRate, 5082 pname:pipelineFragmentShadingRate>>, if the 5083 `apiext:VK_KHR_fragment_shading_rate` extension is supported. 5084endif::VK_KHR_fragment_shading_rate[] 5085ifdef::VK_KHR_shader_terminate_invocation[] 5086 * <<features-shaderTerminateInvocation, pname:shaderTerminateInvocation>> 5087 if the `apiext:VK_KHR_shader_terminate_invocation` extension is 5088 supported. 5089endif::VK_KHR_shader_terminate_invocation[] 5090ifdef::VK_KHR_zero_initialize_workgroup_memory[] 5091 * <<features-shaderZeroInitializeWorkgroupMemory, 5092 pname:shaderZeroInitializeWorkgroupMem>>, if the 5093 `apiext:VK_KHR_zero_initialize_workgroup_memory` extension is supported. 5094endif::VK_KHR_zero_initialize_workgroup_memory[] 5095ifdef::VK_KHR_workgroup_memory_explicit_layout[] 5096 * <<features-workgroupMemoryExplicitLayout, 5097 pname:workgroupMemoryExplicitLayout>>, if the 5098 `apiext:VK_KHR_workgroup_memory_explicit_layout` extension is supported. 5099endif::VK_KHR_workgroup_memory_explicit_layout[] 5100ifdef::VK_EXT_vertex_input_dynamic_state[] 5101 * <<features-vertexInputDynamicState, pname:vertexInputDynamicState>>, if 5102 the `apiext:VK_EXT_vertex_input_dynamic_state` extension is supported. 5103endif::VK_EXT_vertex_input_dynamic_state[] 5104ifdef::VK_KHR_synchronization2[] 5105 * <<features-synchronization2, pname:synchronization2>> if the 5106 `apiext:VK_KHR_synchronization2` extension is supported. 5107endif::VK_KHR_synchronization2[] 5108ifdef::VK_EXT_provoking_vertex[] 5109 * <<features-provokingVertexLast, pname:provokingVertexLast>>, if the 5110 `apiext:VK_EXT_provoking_vertex` extension is supported. 5111endif::VK_EXT_provoking_vertex[] 5112ifdef::VK_KHR_shader_subgroup_uniform_control_flow[] 5113 * <<features-shaderSubgroupUniformControlFlow, 5114 pname:shaderSubgroupUniformControlFlow>>, if the 5115 `apiext:VK_KHR_shader_subgroup_uniform_control_flow` extension is 5116 supported. 5117endif::VK_KHR_shader_subgroup_uniform_control_flow[] 5118ifdef::VK_EXT_border_color_swizzle[] 5119 * <<features-borderColorSwizzle, pname:borderColorSwizzle>> if the 5120 apiext:VK_EXT_border_color_swizzle extension is supported. 5121endif::VK_EXT_border_color_swizzle[] 5122ifdef::VK_EXT_multi_draw[] 5123 * <<features-multiDraw, pname:multiDraw>>, if the 5124 `apiext:VK_EXT_multi_draw` extension is supported. 5125endif::VK_EXT_multi_draw[] 5126ifdef::VK_EXT_shader_atomic_float2[] 5127 * <<features-shaderImageFloat32AtomicMinMax, 5128 pname:shaderImageFloat32AtomicMinMax>>, if the 5129 <<features-sparseImageFloat32AtomicMinMax, 5130 pname:sparseImageFloat32AtomicMinMax>> feature is supported. 5131endif::VK_EXT_shader_atomic_float2[] 5132ifdef::VK_KHR_present_id[] 5133 * <<features-presentId, pname:presentId>>, if the 5134 `apiext:VK_KHR_present_id` extension is supported. 5135endif::VK_KHR_present_id[] 5136ifdef::VK_KHR_present_wait[] 5137 * <<features-presentWait, pname:presentWait>>, if the 5138 `apiext:VK_KHR_present_wait` extension is supported. 5139endif::VK_KHR_present_wait[] 5140ifdef::VK_KHR_shader_integer_dot_product[] 5141 * <<features-shaderIntegerDotProduct, pname:shaderIntegerDotProduct>> if 5142 the `apiext:VK_KHR_shader_integer_dot_product` extension is supported. 5143endif::VK_KHR_shader_integer_dot_product[] 5144ifdef::VK_KHR_maintenance4[] 5145 * <<features-maintenance4, pname:maintenance4>>, if the 5146 `apiext:VK_KHR_maintenance4` extension is supported. 5147endif::VK_KHR_maintenance4[] 5148ifdef::VK_EXT_depth_clip_control[] 5149 * <<features-depthClipControl, pname:depthClipControl>>, if the 5150 `apiext:VK_EXT_depth_clip_control` extension is supported. 5151endif::VK_EXT_depth_clip_control[] 5152ifdef::VK_EXT_image_view_min_lod[] 5153 * <<features-minLod, pname:minLod>>, if the 5154 `apiext:VK_EXT_image_view_min_lod` extension is supported. 5155endif::VK_EXT_image_view_min_lod[] 5156 5157All other features defined in the Specification are optional:. 5158