1// Copyright 2015-2024 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5// This text fragment is used many times in the Devices and Queues, and 6// Limits chapters for different behavior, property, and limit queries. 7ifdef::hidden[] 8// tag::limits_desc[] 9If the sname:{refpage} structure is included in the pname:pNext chain of the 10slink:VkPhysicalDeviceProperties2 structure passed to 11flink:vkGetPhysicalDeviceProperties2, it is filled in with each 12corresponding implementation-dependent property. 13// end::limits_desc[] 14endif::hidden[] 15 16 17[[limits]] 18= Limits 19 20_Limits_ are implementation-dependent minimums, maximums, and other device 21characteristics that an application may: need to be aware of. 22 23ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 24[NOTE] 25.Note 26==== 27Limits are reported via the basic slink:VkPhysicalDeviceLimits structure as 28well as the extensible structure sname:VkPhysicalDeviceProperties2, which 29was added in `apiext:VK_KHR_get_physical_device_properties2` and included in 30Vulkan 1.1. 31When limits are added in future Vulkan versions or extensions, each 32extension should: introduce one new limit structure, if needed. 33This structure can: be added to the pname:pNext chain of the 34sname:VkPhysicalDeviceProperties2 structure. 35==== 36endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] 37 38[open,refpage='VkPhysicalDeviceLimits',desc='Structure reporting implementation-dependent physical device limits',type='structs'] 39-- 40The sname:VkPhysicalDeviceLimits structure is defined as: 41 42include::{generated}/api/structs/VkPhysicalDeviceLimits.adoc[] 43 44The sname:VkPhysicalDeviceLimits are properties of the physical device. 45These are available in the pname:limits member of the 46slink:VkPhysicalDeviceProperties structure which is returned from 47flink:vkGetPhysicalDeviceProperties. 48 49 * [[limits-maxImageDimension1D]] pname:maxImageDimension1D is the largest 50 dimension (pname:width) that is guaranteed to be supported for all 51 images created with an pname:imageType of ename:VK_IMAGE_TYPE_1D. 52 Some combinations of image parameters (format, usage, etc.) may: allow 53 support for larger dimensions, which can: be queried using 54 flink:vkGetPhysicalDeviceImageFormatProperties. 55 * [[limits-maxImageDimension2D]] pname:maxImageDimension2D is the largest 56 dimension (pname:width or pname:height) that is guaranteed to be 57 supported for all images created with an pname:imageType of 58 ename:VK_IMAGE_TYPE_2D and without 59 ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT set in pname:flags. 60 Some combinations of image parameters (format, usage, etc.) may: allow 61 support for larger dimensions, which can: be queried using 62 flink:vkGetPhysicalDeviceImageFormatProperties. 63 * [[limits-maxImageDimension3D]] pname:maxImageDimension3D is the largest 64 dimension (pname:width, pname:height, or pname:depth) that is guaranteed 65 to be supported for all images created with an pname:imageType of 66 ename:VK_IMAGE_TYPE_3D. 67 Some combinations of image parameters (format, usage, etc.) may: allow 68 support for larger dimensions, which can: be queried using 69 flink:vkGetPhysicalDeviceImageFormatProperties. 70 * [[limits-maxImageDimensionCube]] pname:maxImageDimensionCube is the 71 largest dimension (pname:width or pname:height) that is guaranteed to be 72 supported for all images created with an pname:imageType of 73 ename:VK_IMAGE_TYPE_2D and with 74 ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT set in pname:flags. 75 Some combinations of image parameters (format, usage, etc.) may: allow 76 support for larger dimensions, which can: be queried using 77 flink:vkGetPhysicalDeviceImageFormatProperties. 78 * [[limits-maxImageArrayLayers]] pname:maxImageArrayLayers is the maximum 79 number of layers (pname:arrayLayers) for an image. 80 * [[limits-maxTexelBufferElements]] pname:maxTexelBufferElements is the 81 maximum number of addressable texels for a buffer view created on a 82 buffer which was created with the 83 ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or 84 ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set in the pname:usage 85 member of the slink:VkBufferCreateInfo structure. 86 * [[limits-maxUniformBufferRange]] pname:maxUniformBufferRange is the 87 maximum value that can: be specified in the pname:range member of a 88 slink:VkDescriptorBufferInfo structure passed to 89 flink:vkUpdateDescriptorSets for descriptors of type 90 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 91 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC. 92 * [[limits-maxStorageBufferRange]] pname:maxStorageBufferRange is the 93 maximum value that can: be specified in the pname:range member of a 94 slink:VkDescriptorBufferInfo structure passed to 95 flink:vkUpdateDescriptorSets for descriptors of type 96 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 97 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC. 98 * [[limits-maxPushConstantsSize]] pname:maxPushConstantsSize is the 99 maximum size, in bytes, of the pool of push constant memory. 100 For each of the push constant ranges indicated by the 101 pname:pPushConstantRanges member of the slink:VkPipelineLayoutCreateInfo 102 structure, [eq]#(pname:offset {plus} pname:size)# must: be less than or 103 equal to this limit. 104 * [[limits-maxMemoryAllocationCount]] pname:maxMemoryAllocationCount is 105 the maximum number of device memory allocations, as created by 106 flink:vkAllocateMemory, which can: simultaneously exist. 107 * [[limits-maxSamplerAllocationCount]] pname:maxSamplerAllocationCount is 108 the maximum number of sampler objects, as created by 109 flink:vkCreateSampler, which can: simultaneously exist on a device. 110 * [[limits-bufferImageGranularity]] pname:bufferImageGranularity is the 111 granularity, in bytes, at which buffer or linear image resources, and 112 optimal image resources can: be bound to adjacent offsets in the same 113 sname:VkDeviceMemory object without aliasing. 114 See <<resources-bufferimagegranularity,Buffer-Image Granularity>> for 115 more details. 116 * [[limits-sparseAddressSpaceSize]] pname:sparseAddressSpaceSize is the 117 total amount of address space available, in bytes, for sparse memory 118 resources. 119 This is an upper bound on the sum of the sizes of all sparse resources, 120 regardless of whether any memory is bound to them. 121ifdef::VK_NV_extended_sparse_address_space[] 122 If the <<features-extendedSparseAddressSpace, 123 pname:extendedSparseAddressSpace>> feature is enabled, then the 124 difference between <<limits-extendedSparseAddressSpaceSize, 125 pname:extendedSparseAddressSpaceSize>> and pname:sparseAddressSpaceSize 126 can also be used, by sname:VkImage created with the pname:usage member 127 of slink:VkImageCreateInfo only containing bits in 128 <<limits-extendedSparseImageUsageFlags, 129 pname:extendedSparseImageUsageFlags>> and sname:VkBuffer created with 130 the pname:usage member of slink:VkBufferCreateInfo only containing bits 131 in <<limits-extendedSparseBufferUsageFlags, 132 pname:extendedSparseBufferUsageFlags>>. 133endif::VK_NV_extended_sparse_address_space[] 134 * [[limits-maxBoundDescriptorSets]] pname:maxBoundDescriptorSets is the 135 maximum number of descriptor sets that can: be simultaneously used by a 136 pipeline. 137 All code:DescriptorSet decorations in shader modules must: have a value 138 less than pname:maxBoundDescriptorSets. 139 See <<descriptorsets-sets>>. 140 * [[limits-maxPerStageDescriptorSamplers]] 141 pname:maxPerStageDescriptorSamplers is the maximum number of samplers 142 that can: be accessible to a single shader stage in a pipeline layout. 143 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or 144 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this 145 limit. 146ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 147 Only descriptors in descriptor set layouts created without the 148 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 149 count against this limit. 150endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 151 A descriptor is accessible to a shader stage when the pname:stageFlags 152 member of the sname:VkDescriptorSetLayoutBinding structure has the bit 153 for that shader stage set. 154 See <<descriptorsets-sampler>> and 155 <<descriptorsets-combinedimagesampler>>. 156 * [[limits-maxPerStageDescriptorUniformBuffers]] 157 pname:maxPerStageDescriptorUniformBuffers is the maximum number of 158 uniform buffers that can: be accessible to a single shader stage in a 159 pipeline layout. 160 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 161 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this 162 limit. 163ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 164 Only descriptors in descriptor set layouts created without the 165 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 166 count against this limit. 167endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 168 A descriptor is accessible to a shader stage when the pname:stageFlags 169 member of the sname:VkDescriptorSetLayoutBinding structure has the bit 170 for that shader stage set. 171 See <<descriptorsets-uniformbuffer>> and 172 <<descriptorsets-uniformbufferdynamic>>. 173 * [[limits-maxPerStageDescriptorStorageBuffers]] 174 pname:maxPerStageDescriptorStorageBuffers is the maximum number of 175 storage buffers that can: be accessible to a single shader stage in a 176 pipeline layout. 177 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 178 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this 179 limit. 180ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 181 Only descriptors in descriptor set layouts created without the 182 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 183 count against this limit. 184endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 185 A descriptor is accessible to a pipeline shader stage when the 186 pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding 187 structure has the bit for that shader stage set. 188 See <<descriptorsets-storagebuffer>> and 189 <<descriptorsets-storagebufferdynamic>>. 190 * [[limits-maxPerStageDescriptorSampledImages]] 191 pname:maxPerStageDescriptorSampledImages is the maximum number of 192 sampled images that can: be accessible to a single shader stage in a 193 pipeline layout. 194 Descriptors with a type of 195 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 196 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or 197 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit. 198ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 199 Only descriptors in descriptor set layouts created without the 200 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 201 count against this limit. 202endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 203 A descriptor is accessible to a pipeline shader stage when the 204 pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding 205 structure has the bit for that shader stage set. 206 See <<descriptorsets-combinedimagesampler>>, 207 <<descriptorsets-sampledimage>>, and 208 <<descriptorsets-uniformtexelbuffer>>. 209 * [[limits-maxPerStageDescriptorStorageImages]] 210 pname:maxPerStageDescriptorStorageImages is the maximum number of 211 storage images that can: be accessible to a single shader stage in a 212 pipeline layout. 213 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or 214 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit. 215ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 216 Only descriptors in descriptor set layouts created without the 217 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 218 count against this limit. 219endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 220 A descriptor is accessible to a pipeline shader stage when the 221 pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding 222 structure has the bit for that shader stage set. 223 See <<descriptorsets-storageimage>>, and 224 <<descriptorsets-storagetexelbuffer>>. 225 * [[limits-maxPerStageDescriptorInputAttachments]] 226 pname:maxPerStageDescriptorInputAttachments is the maximum number of 227 input attachments that can: be accessible to a single shader stage in a 228 pipeline layout. 229 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 230 count against this limit. 231ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 232 Only descriptors in descriptor set layouts created without the 233 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 234 count against this limit. 235endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 236 A descriptor is accessible to a pipeline shader stage when the 237 pname:stageFlags member of the sname:VkDescriptorSetLayoutBinding 238 structure has the bit for that shader stage set. 239 These are only supported for the fragment stage. 240 See <<descriptorsets-inputattachment>>. 241 * [[limits-maxPerStageResources]] pname:maxPerStageResources is the 242 maximum number of resources that can: be accessible to a single shader 243 stage in a pipeline layout. 244 Descriptors with a type of 245 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 246 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 247 ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 248 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 249 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 250 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 251 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 252 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 253 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, or 254 ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT count against this limit. 255ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 256 Only descriptors in descriptor set layouts created without the 257 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 258 count against this limit. 259endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 260 For the fragment shader stage the framebuffer color attachments also 261 count against this limit. 262 * [[limits-maxDescriptorSetSamplers]] pname:maxDescriptorSetSamplers is 263 the maximum number of samplers that can: be included in a pipeline 264 layout. 265 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_SAMPLER or 266 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER count against this 267 limit. 268ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 269 Only descriptors in descriptor set layouts created without the 270 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 271 count against this limit. 272endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 273 See <<descriptorsets-sampler>> and 274 <<descriptorsets-combinedimagesampler>>. 275 * [[limits-maxDescriptorSetUniformBuffers]] 276 pname:maxDescriptorSetUniformBuffers is the maximum number of uniform 277 buffers that can: be included in a pipeline layout. 278 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 279 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this 280 limit. 281ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 282 Only descriptors in descriptor set layouts created without the 283 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 284 count against this limit. 285endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 286 See <<descriptorsets-uniformbuffer>> and 287 <<descriptorsets-uniformbufferdynamic>>. 288 * [[limits-maxDescriptorSetUniformBuffersDynamic]] 289 pname:maxDescriptorSetUniformBuffersDynamic is the maximum number of 290 dynamic uniform buffers that can: be included in a pipeline layout. 291 Descriptors with a type of 292 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC count against this 293 limit. 294ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 295 Only descriptors in descriptor set layouts created without the 296 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 297 count against this limit. 298endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 299 See <<descriptorsets-uniformbufferdynamic>>. 300 * [[limits-maxDescriptorSetStorageBuffers]] 301 pname:maxDescriptorSetStorageBuffers is the maximum number of storage 302 buffers that can: be included in a pipeline layout. 303 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 304 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this 305 limit. 306ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 307 Only descriptors in descriptor set layouts created without the 308 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 309 count against this limit. 310endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 311 See <<descriptorsets-storagebuffer>> and 312 <<descriptorsets-storagebufferdynamic>>. 313 * [[limits-maxDescriptorSetStorageBuffersDynamic]] 314 pname:maxDescriptorSetStorageBuffersDynamic is the maximum number of 315 dynamic storage buffers that can: be included in a pipeline layout. 316 Descriptors with a type of 317 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC count against this 318 limit. 319ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 320 Only descriptors in descriptor set layouts created without the 321 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 322 count against this limit. 323endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 324 See <<descriptorsets-storagebufferdynamic>>. 325 * [[limits-maxDescriptorSetSampledImages]] 326 pname:maxDescriptorSetSampledImages is the maximum number of sampled 327 images that can: be included in a pipeline layout. 328 Descriptors with a type of 329 ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 330 ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or 331 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER count against this limit. 332ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 333 Only descriptors in descriptor set layouts created without the 334 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 335 count against this limit. 336endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 337 See <<descriptorsets-combinedimagesampler>>, 338 <<descriptorsets-sampledimage>>, and 339 <<descriptorsets-uniformtexelbuffer>>. 340 * [[limits-maxDescriptorSetStorageImages]] 341 pname:maxDescriptorSetStorageImages is the maximum number of storage 342 images that can: be included in a pipeline layout. 343 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or 344 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER count against this limit. 345ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 346 Only descriptors in descriptor set layouts created without the 347 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 348 count against this limit. 349endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 350 See <<descriptorsets-storageimage>>, and 351 <<descriptorsets-storagetexelbuffer>>. 352 * [[limits-maxDescriptorSetInputAttachments]] 353 pname:maxDescriptorSetInputAttachments is the maximum number of input 354 attachments that can: be included in a pipeline layout. 355 Descriptors with a type of ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT 356 count against this limit. 357ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 358 Only descriptors in descriptor set layouts created without the 359 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 360 count against this limit. 361endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 362 See <<descriptorsets-inputattachment>>. 363 * [[limits-maxVertexInputAttributes]] pname:maxVertexInputAttributes is 364 the maximum number of vertex input attributes that can: be specified for 365 a graphics pipeline. 366 These are described in the array of 367 sname:VkVertexInputAttributeDescription structures that are provided at 368 graphics pipeline creation time via the 369 pname:pVertexAttributeDescriptions member of the 370 slink:VkPipelineVertexInputStateCreateInfo structure. 371 See <<fxvertex-attrib>> and <<fxvertex-input>>. 372 * [[limits-maxVertexInputBindings]] pname:maxVertexInputBindings is the 373 maximum number of vertex buffers that can: be specified for providing 374 vertex attributes to a graphics pipeline. 375 These are described in the array of 376 sname:VkVertexInputBindingDescription structures that are provided at 377 graphics pipeline creation time via the pname:pVertexBindingDescriptions 378 member of the slink:VkPipelineVertexInputStateCreateInfo structure. 379 The pname:binding member of sname:VkVertexInputBindingDescription must: 380 be less than this limit. 381 See <<fxvertex-input>>. 382 * [[limits-maxVertexInputAttributeOffset]] 383 pname:maxVertexInputAttributeOffset is the maximum vertex input 384 attribute offset that can: be added to the vertex input binding stride. 385 The pname:offset member of the sname:VkVertexInputAttributeDescription 386 structure must: be less than or equal to this limit. 387 See <<fxvertex-input>>. 388 * [[limits-maxVertexInputBindingStride]] pname:maxVertexInputBindingStride 389 is the maximum vertex input binding stride that can: be specified in a 390 vertex input binding. 391 The pname:stride member of the sname:VkVertexInputBindingDescription 392 structure must: be less than or equal to this limit. 393 See <<fxvertex-input>>. 394 * [[limits-maxVertexOutputComponents]] pname:maxVertexOutputComponents is 395 the maximum number of components of output variables which can: be 396 output by a vertex shader. 397 See <<shaders-vertex>>. 398 * [[limits-maxTessellationGenerationLevel]] 399 pname:maxTessellationGenerationLevel is the maximum tessellation 400 generation level supported by the fixed-function tessellation primitive 401 generator. 402 See <<tessellation>>. 403 * [[limits-maxTessellationPatchSize]] pname:maxTessellationPatchSize is 404 the maximum patch size, in vertices, of patches that can: be processed 405 by the tessellation control shader and tessellation primitive generator. 406 The pname:patchControlPoints member of the 407 slink:VkPipelineTessellationStateCreateInfo structure specified at 408 pipeline creation time and the value provided in the code:OutputVertices 409 execution mode of shader modules must: be less than or equal to this 410 limit. 411 See <<tessellation>>. 412 * [[limits-maxTessellationControlPerVertexInputComponents]] 413 pname:maxTessellationControlPerVertexInputComponents is the maximum 414 number of components of input variables which can: be provided as 415 per-vertex inputs to the tessellation control shader stage. 416 * [[limits-maxTessellationControlPerVertexOutputComponents]] 417 pname:maxTessellationControlPerVertexOutputComponents is the maximum 418 number of components of per-vertex output variables which can: be output 419 from the tessellation control shader stage. 420 * [[limits-maxTessellationControlPerPatchOutputComponents]] 421 pname:maxTessellationControlPerPatchOutputComponents is the maximum 422 number of components of per-patch output variables which can: be output 423 from the tessellation control shader stage. 424 * [[limits-maxTessellationControlTotalOutputComponents]] 425 pname:maxTessellationControlTotalOutputComponents is the maximum total 426 number of components of per-vertex and per-patch output variables which 427 can: be output from the tessellation control shader stage. 428 * [[limits-maxTessellationEvaluationInputComponents]] 429 pname:maxTessellationEvaluationInputComponents is the maximum number of 430 components of input variables which can: be provided as per-vertex 431 inputs to the tessellation evaluation shader stage. 432 * [[limits-maxTessellationEvaluationOutputComponents]] 433 pname:maxTessellationEvaluationOutputComponents is the maximum number of 434 components of per-vertex output variables which can: be output from the 435 tessellation evaluation shader stage. 436 * [[limits-maxGeometryShaderInvocations]] 437 pname:maxGeometryShaderInvocations is the maximum invocation count 438 supported for instanced geometry shaders. 439 The value provided in the code:Invocations execution mode of shader 440 modules must: be less than or equal to this limit. 441 See <<geometry>>. 442 * [[limits-maxGeometryInputComponents]] pname:maxGeometryInputComponents 443 is the maximum number of components of input variables which can: be 444 provided as inputs to the geometry shader stage. 445 * [[limits-maxGeometryOutputComponents]] pname:maxGeometryOutputComponents 446 is the maximum number of components of output variables which can: be 447 output from the geometry shader stage. 448 * [[limits-maxGeometryOutputVertices]] pname:maxGeometryOutputVertices is 449 the maximum number of vertices which can: be emitted by any geometry 450 shader. 451 * [[limits-maxGeometryTotalOutputComponents]] 452 pname:maxGeometryTotalOutputComponents is the maximum total number of 453 components of output variables, across all emitted vertices, which can: 454 be output from the geometry shader stage. 455 * [[limits-maxFragmentInputComponents]] pname:maxFragmentInputComponents 456 is the maximum number of components of input variables which can: be 457 provided as inputs to the fragment shader stage. 458 * [[limits-maxFragmentOutputAttachments]] 459 pname:maxFragmentOutputAttachments is the maximum number of output 460 attachments which can: be written to by the fragment shader stage. 461 * [[limits-maxFragmentDualSrcAttachments]] 462 pname:maxFragmentDualSrcAttachments is the maximum number of output 463 attachments which can: be written to by the fragment shader stage when 464 blending is enabled and one of the dual source blend modes is in use. 465 See <<framebuffer-dsb>> and <<features-dualSrcBlend, 466 pname:dualSrcBlend>>. 467 * [[limits-maxFragmentCombinedOutputResources]] 468 pname:maxFragmentCombinedOutputResources is the total number of storage 469 buffers, storage images, and output code:Location decorated color 470 attachments (described in <<interfaces-fragmentoutput, Fragment Output 471 Interface>>) which can: be used in the fragment shader stage. 472 * [[limits-maxComputeSharedMemorySize]] pname:maxComputeSharedMemorySize 473 is the maximum total storage size, in bytes, available for variables 474 declared with the code:Workgroup storage class in shader modules (or 475 with the code:shared storage qualifier in GLSL) in the compute shader 476 stage. 477 * [[limits-maxComputeWorkGroupCount]] pname:maxComputeWorkGroupCount[3] is 478 the maximum number of local workgroups that can: be dispatched by a 479 single dispatching command. 480 These three values represent the maximum number of local workgroups for 481 the X, Y, and Z dimensions, respectively. 482 The workgroup count parameters to the dispatching commands must: be less 483 than or equal to the corresponding limit. 484 See <<dispatch>>. 485 * [[limits-maxComputeWorkGroupInvocations]] 486 pname:maxComputeWorkGroupInvocations is the maximum total number of 487 compute shader invocations in a single local workgroup. 488 The product of the X, Y, and Z sizes, as specified by the code:LocalSize 489ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 490 execution mode in shader modules or by the object decorated by the 491 code:WorkgroupSize decoration, must: be less than or equal to this 492 limit. 493 * [[limits-maxComputeWorkGroupSize]] pname:maxComputeWorkGroupSize[3] is 494 the maximum size of a local compute workgroup, per dimension. 495 These three values represent the maximum local workgroup size in the X, 496 Y, and Z dimensions, respectively. 497 The pname:x, pname:y, and pname:z sizes, as specified by the 498 code:LocalSize 499ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 500 execution mode or by the object decorated by the code:WorkgroupSize 501 decoration in shader modules, must: be less than or equal to the 502 corresponding limit. 503 * [[limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is the 504 number of bits of subpixel precision in framebuffer coordinates 505 [eq]#x~f~# and [eq]#y~f~#. 506 See <<primsrast>>. 507 * [[limits-subTexelPrecisionBits]] pname:subTexelPrecisionBits is the 508 number of bits of precision in the division along an axis of an image 509 used for minification and magnification filters. 510 [eq]#2^pname:subTexelPrecisionBits^# is the actual number of divisions 511 along each axis of the image represented. 512 Sub-texel values calculated during image sampling will snap to these 513 locations when generating the filtered results. 514 * [[limits-mipmapPrecisionBits]] pname:mipmapPrecisionBits is the number 515 of bits of division that the LOD calculation for mipmap fetching get 516 snapped to when determining the contribution from each mip level to the 517 mip filtered results. 518 [eq]#2^pname:mipmapPrecisionBits^# is the actual number of divisions. 519 * [[limits-maxDrawIndexedIndexValue]] pname:maxDrawIndexedIndexValue is 520 the maximum index value that can: be used for indexed draw calls when 521 using 32-bit indices. 522 This excludes the primitive restart index value of 0xFFFFFFFF. 523 See <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>>. 524 * [[limits-maxDrawIndirectCount]] pname:maxDrawIndirectCount is the 525 maximum draw count that is supported for indirect drawing calls. 526 See <<features-multiDrawIndirect, pname:multiDrawIndirect>>. 527 * [[limits-maxSamplerLodBias]] pname:maxSamplerLodBias is the maximum 528 absolute sampler LOD bias. 529 The sum of the pname:mipLodBias member of the slink:VkSamplerCreateInfo 530 structure and the code:Bias operand of image sampling operations in 531 shader modules (or 0 if no code:Bias operand is provided to an image 532 sampling operation) are clamped to the range 533 [eq]#[-pname:maxSamplerLodBias,+pname:maxSamplerLodBias]#. 534 See <<samplers-mipLodBias>>. 535 * [[limits-maxSamplerAnisotropy]] pname:maxSamplerAnisotropy is the 536 maximum degree of sampler anisotropy. 537 The maximum degree of anisotropic filtering used for an image sampling 538 operation is the minimum of the pname:maxAnisotropy member of the 539 slink:VkSamplerCreateInfo structure and this limit. 540 See <<samplers-maxAnisotropy>>. 541 * [[limits-maxViewports]] pname:maxViewports is the maximum number of 542 active viewports. 543 The pname:viewportCount member of the 544 slink:VkPipelineViewportStateCreateInfo structure that is provided at 545 pipeline creation must: be less than or equal to this limit. 546 * [[limits-maxViewportDimensions]] pname:maxViewportDimensions[2] are the 547 maximum viewport dimensions in the X (width) and Y (height) dimensions, 548 respectively. 549 The maximum viewport dimensions must: be greater than or equal to the 550 largest image which can: be created and used as a framebuffer 551 attachment. 552 See <<vertexpostproc-viewport,Controlling the Viewport>>. 553 * [[limits-viewportboundsrange]] pname:viewportBoundsRange[2] is the 554 [eq]#[minimum, maximum]# range that the corners of a viewport must: be 555 contained in. 556 This range must: be at least [eq]#[-2 {times} pname:size, 2 {times} 557 pname:size - 1]#, where [eq]#pname:size = 558 max(pname:maxViewportDimensions[0], pname:maxViewportDimensions[1])#. 559 See <<vertexpostproc-viewport,Controlling the Viewport>>. 560+ 561[NOTE] 562.Note 563==== 564The intent of the pname:viewportBoundsRange limit is to allow a maximum 565sized viewport to be arbitrarily shifted relative to the output target as 566long as at least some portion intersects. 567This would give a bounds limit of [eq]#[-pname:size {plus} 1, 2 {times} 568pname:size - 1]# which would allow all possible non-empty-set intersections 569of the output target and the viewport. 570Since these numbers are typically powers of two, picking the signed number 571range using the smallest possible number of bits ends up with the specified 572range. 573==== 574 * [[limits-viewportSubPixelBits]] pname:viewportSubPixelBits is the number 575 of bits of subpixel precision for viewport bounds. 576 The subpixel precision that floating-point viewport bounds are 577 interpreted at is given by this limit. 578 * [[limits-minMemoryMapAlignment]] pname:minMemoryMapAlignment is the 579 minimum required: alignment, in bytes, of host visible memory 580 allocations within the host address space. 581 When mapping a memory allocation with flink:vkMapMemory, subtracting 582 pname:offset bytes from the returned pointer will always produce an 583 integer multiple of this limit. 584 See <<memory-device-hostaccess>>. 585 The value must: be a power of two. 586 * [[limits-minTexelBufferOffsetAlignment]] 587 pname:minTexelBufferOffsetAlignment is the minimum required: alignment, 588 in bytes, for the pname:offset member of the 589 slink:VkBufferViewCreateInfo structure for texel buffers. 590 The value must: be a power of two. 591ifdef::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[] 592 If <<features-texelBufferAlignment, pname:texelBufferAlignment>> is 593 enabled, this limit is equivalent to the maximum of the 594 <<limits-uniformTexelBufferOffsetAlignmentBytes, 595 pname:uniformTexelBufferOffsetAlignmentBytes>> and 596 <<limits-storageTexelBufferOffsetAlignmentBytes, 597 pname:storageTexelBufferOffsetAlignmentBytes>> members of 598 slink:VkPhysicalDeviceTexelBufferAlignmentProperties, but smaller 599 alignment is optionally: allowed by 600 <<limits-storageTexelBufferOffsetSingleTexelAlignment, 601 pname:storageTexelBufferOffsetSingleTexelAlignment>> and 602 <<limits-uniformTexelBufferOffsetSingleTexelAlignment, 603 pname:uniformTexelBufferOffsetSingleTexelAlignment>>. 604 If <<features-texelBufferAlignment, pname:texelBufferAlignment>> is not 605 enabled, 606endif::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[] 607 slink:VkBufferViewCreateInfo::pname:offset must: be a multiple of this 608 value. 609 * [[limits-minUniformBufferOffsetAlignment]] 610 pname:minUniformBufferOffsetAlignment is the minimum required: 611 alignment, in bytes, for the pname:offset member of the 612 sname:VkDescriptorBufferInfo structure for uniform buffers. 613 When a descriptor of type ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or 614 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC is updated, the 615 pname:offset must: be an integer multiple of this limit. 616 Similarly, dynamic offsets for uniform buffers must: be multiples of 617 this limit. 618 The value must: be a power of two. 619 * [[limits-minStorageBufferOffsetAlignment]] 620 pname:minStorageBufferOffsetAlignment is the minimum required: 621 alignment, in bytes, for the pname:offset member of the 622 sname:VkDescriptorBufferInfo structure for storage buffers. 623 When a descriptor of type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or 624 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC is updated, the 625 pname:offset must: be an integer multiple of this limit. 626 Similarly, dynamic offsets for storage buffers must: be multiples of 627 this limit. 628 The value must: be a power of two. 629 * [[limits-minTexelOffset]] pname:minTexelOffset is the minimum offset 630 value for the code:ConstOffset image operand of any of the 631 code:OpImageSample* or code:OpImageFetch* image instructions. 632 * [[limits-maxTexelOffset]] pname:maxTexelOffset is the maximum offset 633 value for the code:ConstOffset image operand of any of the 634 code:OpImageSample* or code:OpImageFetch* image instructions. 635 * [[limits-minTexelGatherOffset]] pname:minTexelGatherOffset is the 636 minimum offset value for the code:Offset, code:ConstOffset, or 637 code:ConstOffsets image operands of any of the code:OpImage*Gather image 638 instructions. 639 * [[limits-maxTexelGatherOffset]] pname:maxTexelGatherOffset is the 640 maximum offset value for the code:Offset, code:ConstOffset, or 641 code:ConstOffsets image operands of any of the code:OpImage*Gather image 642 instructions. 643 * [[limits-minInterpolationOffset]] pname:minInterpolationOffset is the 644 base minimum (inclusive) negative offset value for the code:Offset 645 operand of the code:InterpolateAtOffset extended instruction. 646 * [[limits-maxInterpolationOffset]] pname:maxInterpolationOffset is the 647 base maximum (inclusive) positive offset value for the code:Offset 648 operand of the code:InterpolateAtOffset extended instruction. 649 * [[limits-subPixelInterpolationOffsetBits]] 650 pname:subPixelInterpolationOffsetBits is the number of fractional bits 651 that the code:x and code:y offsets to the code:InterpolateAtOffset 652 extended instruction may: be rounded to as fixed-point values. 653 * [[limits-maxFramebufferWidth]] pname:maxFramebufferWidth is the maximum 654 width for a framebuffer. 655 The pname:width member of the slink:VkFramebufferCreateInfo structure 656 must: be less than or equal to this limit. 657 * [[limits-maxFramebufferHeight]] pname:maxFramebufferHeight is the 658 maximum height for a framebuffer. 659 The pname:height member of the slink:VkFramebufferCreateInfo structure 660 must: be less than or equal to this limit. 661 * [[limits-maxFramebufferLayers]] pname:maxFramebufferLayers is the 662 maximum layer count for a layered framebuffer. 663 The pname:layers member of the slink:VkFramebufferCreateInfo structure 664 must: be less than or equal to this limit. 665ifdef::VKSC_VERSION_1_0[] 666ifdef::hidden[] 667// tag::scdeviation[] 668 * slink:VkPhysicalDeviceLimits::pname:maxFramebufferLayers may: be 1 if 669 neither pname:geometryShader or pname:shaderOutputLayer are supported 670 <<SCID-8>>. 671// end::scdeviation[] 672endif::hidden[] 673endif::VKSC_VERSION_1_0[] 674 * [[limits-framebufferColorSampleCounts]] 675 pname:framebufferColorSampleCounts is a bitmask^1^ of 676 elink:VkSampleCountFlagBits indicating the color sample counts that are 677 supported for all framebuffer color attachments with floating- or 678 fixed-point formats. 679ifndef::VK_VERSION_1_2[] 680 There is no limit specifying the color sample counts that are supported 681 for all color attachments with integer formats. 682endif::VK_VERSION_1_2[] 683ifdef::VK_VERSION_1_2[] 684 For color attachments with integer formats, see 685 <<limits-framebufferIntegerColorSampleCounts, 686 pname:framebufferIntegerColorSampleCounts>>. 687endif::VK_VERSION_1_2[] 688 * [[limits-framebufferDepthSampleCounts]] 689 pname:framebufferDepthSampleCounts is a bitmask^1^ of 690 elink:VkSampleCountFlagBits indicating the supported depth sample counts 691 for all framebuffer depth/stencil attachments, when the format includes 692 a depth component. 693 * [[limits-framebufferStencilSampleCounts]] 694 pname:framebufferStencilSampleCounts is a bitmask^1^ of 695 elink:VkSampleCountFlagBits indicating the supported stencil sample 696 counts for all framebuffer depth/stencil attachments, when the format 697 includes a stencil component. 698 * [[limits-framebufferNoAttachmentsSampleCounts]] 699 pname:framebufferNoAttachmentsSampleCounts is a bitmask^1^ of 700 elink:VkSampleCountFlagBits indicating the supported sample counts for a 701 <<renderpass-noattachments, subpass which uses no attachments>>. 702 * [[limits-maxColorAttachments]] pname:maxColorAttachments is the maximum 703 number of color attachments that can: be used by a subpass in a render 704 pass. 705 The pname:colorAttachmentCount member of the sname:VkSubpassDescription 706ifdef::VK_VERSION_1_2,VK_KHR_create_renderpass2[] 707 or sname:VkSubpassDescription2 708endif::VK_VERSION_1_2,VK_KHR_create_renderpass2[] 709 structure must: be less than or equal to this limit. 710 * [[limits-sampledImageColorSampleCounts]] 711 pname:sampledImageColorSampleCounts is a bitmask^1^ of 712 elink:VkSampleCountFlagBits indicating the sample counts supported for 713 all 2D images created with ename:VK_IMAGE_TILING_OPTIMAL, pname:usage 714 containing ename:VK_IMAGE_USAGE_SAMPLED_BIT, and a non-integer color 715 format. 716 * [[limits-sampledImageIntegerSampleCounts]] 717 pname:sampledImageIntegerSampleCounts is a bitmask^1^ of 718 elink:VkSampleCountFlagBits indicating the sample counts supported for 719 all 2D images created with ename:VK_IMAGE_TILING_OPTIMAL, pname:usage 720 containing ename:VK_IMAGE_USAGE_SAMPLED_BIT, and an integer color 721 format. 722 * [[limits-sampledImageDepthSampleCounts]] 723 pname:sampledImageDepthSampleCounts is a bitmask^1^ of 724 elink:VkSampleCountFlagBits indicating the sample counts supported for 725 all 2D images created with ename:VK_IMAGE_TILING_OPTIMAL, pname:usage 726 containing ename:VK_IMAGE_USAGE_SAMPLED_BIT, and a depth format. 727 * [[limits-sampledImageStencilSampleCounts]] 728 pname:sampledImageStencilSampleCounts is a bitmask^1^ of 729 elink:VkSampleCountFlagBits indicating the sample counts supported for 730 all 2D images created with ename:VK_IMAGE_TILING_OPTIMAL, pname:usage 731 containing ename:VK_IMAGE_USAGE_SAMPLED_BIT, and a stencil format. 732 * [[limits-storageImageSampleCounts]] pname:storageImageSampleCounts is a 733 bitmask^1^ of elink:VkSampleCountFlagBits indicating the sample counts 734 supported for all 2D images created with ename:VK_IMAGE_TILING_OPTIMAL, 735 and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT. 736 * [[limits-maxSampleMaskWords]] pname:maxSampleMaskWords is the maximum 737 number of array elements of a variable decorated with the 738 code:SampleMask built-in decoration. 739 * [[limits-timestampComputeAndGraphics]] pname:timestampComputeAndGraphics 740 specifies support for timestamps on all graphics and compute queues. 741 If this limit is set to ename:VK_TRUE, all queues that advertise the 742 ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT in the 743 sname:VkQueueFamilyProperties::pname:queueFlags support 744 sname:VkQueueFamilyProperties::pname:timestampValidBits of at least 36. 745 See <<queries-timestamps, Timestamp Queries>>. 746 * [[limits-timestampPeriod]] pname:timestampPeriod is the number of 747 nanoseconds required: for a timestamp query to be incremented by 1. 748 See <<queries-timestamps, Timestamp Queries>>. 749 * [[limits-maxClipDistances]] pname:maxClipDistances is the maximum number 750 of clip distances that can: be used in a single shader stage. 751 The size of any array declared with the code:ClipDistance built-in 752 decoration in a shader module must: be less than or equal to this limit. 753 * [[limits-maxCullDistances]] pname:maxCullDistances is the maximum number 754 of cull distances that can: be used in a single shader stage. 755 The size of any array declared with the code:CullDistance built-in 756 decoration in a shader module must: be less than or equal to this limit. 757 * [[limits-maxCombinedClipAndCullDistances]] 758 pname:maxCombinedClipAndCullDistances is the maximum combined number of 759 clip and cull distances that can: be used in a single shader stage. 760 The sum of the sizes of any pair of arrays declared with the 761 code:ClipDistance and code:CullDistance built-in decoration used by a 762 single shader stage in a shader module must: be less than or equal to 763 this limit. 764 * [[limits-discreteQueuePriorities]] pname:discreteQueuePriorities is the 765 number of discrete priorities that can: be assigned to a queue based on 766 the value of each member of 767 slink:VkDeviceQueueCreateInfo::pname:pQueuePriorities. 768 This must: be at least 2, and levels must: be spread evenly over the 769 range, with at least one level at 1.0, and another at 0.0. 770 See <<devsandqueues-priority>>. 771 * [[limits-pointSizeRange]] pname:pointSizeRange[2] is the range 772 [eq]#[pname:minimum,pname:maximum]# of supported sizes for points. 773 Values written to variables decorated with the code:PointSize built-in 774 decoration are clamped to this range. 775 * [[limits-lineWidthRange]] pname:lineWidthRange[2] is the range 776 [eq]#[pname:minimum,pname:maximum]# of supported widths for lines. 777 Values specified by the pname:lineWidth member of the 778 slink:VkPipelineRasterizationStateCreateInfo or the pname:lineWidth 779 parameter to fname:vkCmdSetLineWidth are clamped to this range. 780 * [[limits-pointSizeGranularity]] pname:pointSizeGranularity is the 781 granularity of supported point sizes. 782 Not all point sizes in the range defined by pname:pointSizeRange are 783 supported. 784 This limit specifies the granularity (or increment) between successive 785 supported point sizes. 786 * [[limits-lineWidthGranularity]] pname:lineWidthGranularity is the 787 granularity of supported line widths. 788 Not all line widths in the range defined by pname:lineWidthRange are 789 supported. 790 This limit specifies the granularity (or increment) between successive 791 supported line widths. 792 * [[limits-strictLines]] pname:strictLines specifies whether lines are 793 rasterized according to the preferred method of rasterization. 794 If set to ename:VK_FALSE, lines may: be rasterized under a relaxed set 795 of rules. 796 If set to ename:VK_TRUE, lines are rasterized as per the strict 797 definition. 798 See <<primsrast-lines-basic,Basic Line Segment Rasterization>>. 799 * [[limits-standardSampleLocations]] pname:standardSampleLocations 800 specifies whether rasterization uses the standard sample locations as 801 documented in <<primsrast-multisampling,Multisampling>>. 802 If set to ename:VK_TRUE, the implementation uses the documented sample 803 locations. 804 If set to ename:VK_FALSE, the implementation may: use different sample 805 locations. 806 * [[limits-optimalBufferCopyOffsetAlignment]] 807 pname:optimalBufferCopyOffsetAlignment is the optimal buffer offset 808 alignment in bytes for 809ifndef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 810 flink:vkCmdCopyBufferToImage and flink:vkCmdCopyImageToBuffer. 811endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 812ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 813 flink:vkCmdCopyBufferToImage2, flink:vkCmdCopyBufferToImage, 814 flink:vkCmdCopyImageToBuffer2, and flink:vkCmdCopyImageToBuffer. 815endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 816ifdef::VK_EXT_host_image_copy[] 817 This value is also the optimal host memory offset alignment in bytes for 818 flink:vkCopyMemoryToImageEXT and flink:vkCopyImageToMemoryEXT. 819endif::VK_EXT_host_image_copy[] 820 The per texel alignment requirements are enforced, but applications 821 should: use the optimal alignment for optimal performance and power use. 822 The value must: be a power of two. 823 * [[limits-optimalBufferCopyRowPitchAlignment]] 824 pname:optimalBufferCopyRowPitchAlignment is the optimal buffer row pitch 825 alignment in bytes for 826ifndef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 827 flink:vkCmdCopyBufferToImage and flink:vkCmdCopyImageToBuffer. 828endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 829ifdef::VK_VERSION_1_3,VK_KHR_copy_commands2[] 830 flink:vkCmdCopyBufferToImage2, flink:vkCmdCopyBufferToImage, 831 flink:vkCmdCopyImageToBuffer2, and flink:vkCmdCopyImageToBuffer. 832endif::VK_VERSION_1_3,VK_KHR_copy_commands2[] 833ifdef::VK_EXT_host_image_copy[] 834 This value is also the optimal host memory row pitch alignment in bytes 835 for flink:vkCopyMemoryToImageEXT and flink:vkCopyImageToMemoryEXT. 836endif::VK_EXT_host_image_copy[] 837 Row pitch is the number of bytes between texels with the same X 838 coordinate in adjacent rows (Y coordinates differ by one). 839 The per texel alignment requirements are enforced, but applications 840 should: use the optimal alignment for optimal performance and power use. 841 The value must: be a power of two. 842 * [[limits-nonCoherentAtomSize]] pname:nonCoherentAtomSize is the size and 843 alignment in bytes that bounds concurrent access to 844 <<memory-device-hostaccess, host-mapped device memory>>. 845 The value must: be a power of two. 846 8471:: 848 For all bitmasks of elink:VkSampleCountFlagBits, the sample count limits 849 defined above represent the minimum supported sample counts for each 850 image type. 851 Individual images may: support additional sample counts, which are 852 queried using flink:vkGetPhysicalDeviceImageFormatProperties as 853 described in <<features-supported-sample-counts, Supported Sample 854 Counts>>. 855 856include::{generated}/validity/structs/VkPhysicalDeviceLimits.adoc[] 857-- 858 859 860[open,refpage='VkSampleCountFlagBits',desc='Bitmask specifying sample counts supported for an image used for storage operations',type='enums'] 861-- 862Bits which may: be set in the sample count limits returned by 863slink:VkPhysicalDeviceLimits, as well as in other queries and structures 864representing image sample counts, are: 865 866include::{generated}/api/enums/VkSampleCountFlagBits.adoc[] 867 868 * ename:VK_SAMPLE_COUNT_1_BIT specifies an image with one sample per 869 pixel. 870 * ename:VK_SAMPLE_COUNT_2_BIT specifies an image with 2 samples per pixel. 871 * ename:VK_SAMPLE_COUNT_4_BIT specifies an image with 4 samples per pixel. 872 * ename:VK_SAMPLE_COUNT_8_BIT specifies an image with 8 samples per pixel. 873 * ename:VK_SAMPLE_COUNT_16_BIT specifies an image with 16 samples per 874 pixel. 875 * ename:VK_SAMPLE_COUNT_32_BIT specifies an image with 32 samples per 876 pixel. 877 * ename:VK_SAMPLE_COUNT_64_BIT specifies an image with 64 samples per 878 pixel. 879-- 880 881[open,refpage='VkSampleCountFlags',desc='Bitmask of VkSampleCountFlagBits',type='flags'] 882-- 883include::{generated}/api/flags/VkSampleCountFlags.adoc[] 884 885tname:VkSampleCountFlags is a bitmask type for setting a mask of zero or 886more elink:VkSampleCountFlagBits. 887-- 888 889ifdef::VK_KHR_push_descriptor[] 890[open,refpage='VkPhysicalDevicePushDescriptorPropertiesKHR',desc='Structure describing push descriptor limits that can be supported by an implementation',type='structs'] 891-- 892The sname:VkPhysicalDevicePushDescriptorPropertiesKHR structure is defined 893as: 894 895include::{generated}/api/structs/VkPhysicalDevicePushDescriptorPropertiesKHR.adoc[] 896 897 * pname:sType is a elink:VkStructureType value identifying this structure. 898 * pname:pNext is `NULL` or a pointer to a structure extending this 899 structure. 900 * [[limits-maxPushDescriptors]] pname:maxPushDescriptors is the maximum 901 number of descriptors that can: be used in a descriptor set layout 902 created with 903 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set. 904 905:refpage: VkPhysicalDevicePushDescriptorPropertiesKHR 906include::{chapters}/limits.adoc[tag=limits_desc] 907 908include::{generated}/validity/structs/VkPhysicalDevicePushDescriptorPropertiesKHR.adoc[] 909-- 910endif::VK_KHR_push_descriptor[] 911 912ifdef::VK_VERSION_1_1,VK_KHR_multiview[] 913[open,refpage='VkPhysicalDeviceMultiviewProperties',desc='Structure describing multiview limits that can be supported by an implementation',type='structs'] 914-- 915The sname:VkPhysicalDeviceMultiviewProperties structure is defined as: 916 917include::{generated}/api/structs/VkPhysicalDeviceMultiviewProperties.adoc[] 918 919ifdef::VK_KHR_multiview[] 920or the equivalent 921 922include::{generated}/api/structs/VkPhysicalDeviceMultiviewPropertiesKHR.adoc[] 923endif::VK_KHR_multiview[] 924 925 * pname:sType is a elink:VkStructureType value identifying this structure. 926 * pname:pNext is `NULL` or a pointer to a structure extending this 927 structure. 928 929// Must have preceding whitespace 930ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 931ifndef::VK_VERSION_1_2[:anchor-prefix:] 932// tag::VK_KHR_multiview-properties[] 933 * [[{anchor-prefix}limits-maxMultiviewViewCount]] 934 pname:maxMultiviewViewCount is one greater than the maximum view index 935 that can: be used in a subpass. 936 * [[{anchor-prefix}limits-maxMultiviewInstanceIndex]] 937 pname:maxMultiviewInstanceIndex is the maximum valid value of instance 938 index allowed to be generated by a drawing command recorded within a 939 subpass of a multiview render pass instance. 940// end::VK_KHR_multiview-properties[] 941 942:refpage: VkPhysicalDeviceMultiviewProperties 943include::{chapters}/limits.adoc[tag=limits_desc] 944 945include::{generated}/validity/structs/VkPhysicalDeviceMultiviewProperties.adoc[] 946-- 947endif::VK_VERSION_1_1,VK_KHR_multiview[] 948 949ifdef::VK_VERSION_1_2,VK_KHR_shader_float_controls[] 950[open,refpage='VkPhysicalDeviceFloatControlsProperties',desc='Structure describing properties supported by VK_KHR_shader_float_controls',type='structs',alias='VkPhysicalDeviceFloatControlsPropertiesKHR'] 951-- 952The sname:VkPhysicalDeviceFloatControlsProperties structure is defined as: 953 954include::{generated}/api/structs/VkPhysicalDeviceFloatControlsProperties.adoc[] 955 956ifdef::VK_KHR_shader_float_controls[] 957or the equivalent 958 959include::{generated}/api/structs/VkPhysicalDeviceFloatControlsPropertiesKHR.adoc[] 960endif::VK_KHR_shader_float_controls[] 961 962 * pname:sType is a elink:VkStructureType value identifying this structure. 963 * pname:pNext is `NULL` or a pointer to a structure extending this 964 structure. 965 966// Must have preceding whitespace 967ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 968ifndef::VK_VERSION_1_2[:anchor-prefix:] 969// tag::VK_KHR_shader_float_controls-properties[] 970 * [[{anchor-prefix}features-denormBehaviorIndependence]] 971 pname:denormBehaviorIndependence is a 972 elink:VkShaderFloatControlsIndependence value indicating whether, and 973 how, denorm behavior can be set independently for different bit widths. 974 * [[{anchor-prefix}features-roundingModeIndependence]] 975 pname:roundingModeIndependence is a 976 elink:VkShaderFloatControlsIndependence value indicating whether, and 977 how, rounding modes can be set independently for different bit widths. 978 * [[{anchor-prefix}limits-shaderSignedZeroInfNanPreserveFloat16]] 979 pname:shaderSignedZeroInfNanPreserveFloat16 is a boolean value 980 indicating whether sign of a zero, [eq]##Nan##s and 981 latexmath:[\pm\infty] can: be preserved in 16-bit floating-point 982 computations. 983 It also indicates whether the code:SignedZeroInfNanPreserve execution 984 mode can: be used for 16-bit floating-point types. 985 * [[{anchor-prefix}limits-shaderSignedZeroInfNanPreserveFloat32]] 986 pname:shaderSignedZeroInfNanPreserveFloat32 is a boolean value 987 indicating whether sign of a zero, [eq]##Nan##s and 988 latexmath:[\pm\infty] can: be preserved in 32-bit floating-point 989 computations. 990 It also indicates whether the code:SignedZeroInfNanPreserve execution 991 mode can: be used for 32-bit floating-point types. 992 * [[{anchor-prefix}limits-shaderSignedZeroInfNanPreserveFloat64]] 993 pname:shaderSignedZeroInfNanPreserveFloat64 is a boolean value 994 indicating whether sign of a zero, [eq]##Nan##s and 995 latexmath:[\pm\infty] can: be preserved in 64-bit floating-point 996 computations. 997 It also indicates whether the code:SignedZeroInfNanPreserve execution 998 mode can: be used for 64-bit floating-point types. 999 * [[{anchor-prefix}limits-shaderDenormPreserveFloat16]] 1000 pname:shaderDenormPreserveFloat16 is a boolean value indicating whether 1001 denormals can: be preserved in 16-bit floating-point computations. 1002 It also indicates whether the code:DenormPreserve execution mode can: be 1003 used for 16-bit floating-point types. 1004 * [[{anchor-prefix}limits-shaderDenormPreserveFloat32]] 1005 pname:shaderDenormPreserveFloat32 is a boolean value indicating whether 1006 denormals can: be preserved in 32-bit floating-point computations. 1007 It also indicates whether the code:DenormPreserve execution mode can: be 1008 used for 32-bit floating-point types. 1009 * [[{anchor-prefix}limits-shaderDenormPreserveFloat64]] 1010 pname:shaderDenormPreserveFloat64 is a boolean value indicating whether 1011 denormals can: be preserved in 64-bit floating-point computations. 1012 It also indicates whether the code:DenormPreserve execution mode can: be 1013 used for 64-bit floating-point types. 1014 * [[{anchor-prefix}limits-shaderDenormFlushToZeroFloat16]] 1015 pname:shaderDenormFlushToZeroFloat16 is a boolean value indicating 1016 whether denormals can: be flushed to zero in 16-bit floating-point 1017 computations. 1018 It also indicates whether the code:DenormFlushToZero execution mode can: 1019 be used for 16-bit floating-point types. 1020 * [[{anchor-prefix}limits-shaderDenormFlushToZeroFloat32]] 1021 pname:shaderDenormFlushToZeroFloat32 is a boolean value indicating 1022 whether denormals can: be flushed to zero in 32-bit floating-point 1023 computations. 1024 It also indicates whether the code:DenormFlushToZero execution mode can: 1025 be used for 32-bit floating-point types. 1026 * [[{anchor-prefix}limits-shaderDenormFlushToZeroFloat64]] 1027 pname:shaderDenormFlushToZeroFloat64 is a boolean value indicating 1028 whether denormals can: be flushed to zero in 64-bit floating-point 1029 computations. 1030 It also indicates whether the code:DenormFlushToZero execution mode can: 1031 be used for 64-bit floating-point types. 1032 * [[{anchor-prefix}limits-shaderRoundingModeRTEFloat16]] 1033 pname:shaderRoundingModeRTEFloat16 is a boolean value indicating whether 1034 an implementation supports the round-to-nearest-even rounding mode for 1035 16-bit floating-point arithmetic and conversion instructions. 1036 It also indicates whether the code:RoundingModeRTE execution mode can: 1037 be used for 16-bit floating-point types. 1038 * [[{anchor-prefix}limits-shaderRoundingModeRTEFloat32]] 1039 pname:shaderRoundingModeRTEFloat32 is a boolean value indicating whether 1040 an implementation supports the round-to-nearest-even rounding mode for 1041 32-bit floating-point arithmetic and conversion instructions. 1042 It also indicates whether the code:RoundingModeRTE execution mode can: 1043 be used for 32-bit floating-point types. 1044 * [[{anchor-prefix}limits-shaderRoundingModeRTEFloat64]] 1045 pname:shaderRoundingModeRTEFloat64 is a boolean value indicating whether 1046 an implementation supports the round-to-nearest-even rounding mode for 1047 64-bit floating-point arithmetic and conversion instructions. 1048 It also indicates whether the code:RoundingModeRTE execution mode can: 1049 be used for 64-bit floating-point types. 1050 * [[{anchor-prefix}limits-shaderRoundingModeRTZFloat16]] 1051 pname:shaderRoundingModeRTZFloat16 is a boolean value indicating whether 1052 an implementation supports the round-towards-zero rounding mode for 1053 16-bit floating-point arithmetic and conversion instructions. 1054 It also indicates whether the code:RoundingModeRTZ execution mode can: 1055 be used for 16-bit floating-point types. 1056 * [[{anchor-prefix}limits-shaderRoundingModeRTZFloat32]] 1057 pname:shaderRoundingModeRTZFloat32 is a boolean value indicating whether 1058 an implementation supports the round-towards-zero rounding mode for 1059 32-bit floating-point arithmetic and conversion instructions. 1060 It also indicates whether the code:RoundingModeRTZ execution mode can: 1061 be used for 32-bit floating-point types. 1062 * [[{anchor-prefix}limits-shaderRoundingModeRTZFloat64]] 1063 pname:shaderRoundingModeRTZFloat64 is a boolean value indicating whether 1064 an implementation supports the round-towards-zero rounding mode for 1065 64-bit floating-point arithmetic and conversion instructions. 1066 It also indicates whether the code:RoundingModeRTZ execution mode can: 1067 be used for 64-bit floating-point types. 1068// end::VK_KHR_shader_float_controls-properties[] 1069 1070ifdef::editing-notes[] 1071[NOTE] 1072.editing-note 1073==== 1074Implementations may not be able to control behavior of denorms for 1075floating-point atomics. 1076This needs to be taken into account when such atomics will be added to 1077Vulkan. 1078==== 1079endif::editing-notes[] 1080 1081:refpage: VkPhysicalDeviceFloatControlsProperties 1082include::{chapters}/limits.adoc[tag=limits_desc] 1083 1084include::{generated}/validity/structs/VkPhysicalDeviceFloatControlsProperties.adoc[] 1085-- 1086 1087[open,refpage='VkShaderFloatControlsIndependence',desc='Bitmask specifying whether, and how, shader float controls can be set separately',type='enums',alias='VkShaderFloatControlsIndependenceKHR'] 1088-- 1089Values which may: be returned in the pname:denormBehaviorIndependence and 1090pname:roundingModeIndependence fields of 1091sname:VkPhysicalDeviceFloatControlsProperties are: 1092 1093include::{generated}/api/enums/VkShaderFloatControlsIndependence.adoc[] 1094 1095ifdef::VK_KHR_shader_float_controls[] 1096or the equivalent 1097 1098include::{generated}/api/enums/VkShaderFloatControlsIndependenceKHR.adoc[] 1099endif::VK_KHR_shader_float_controls[] 1100 1101 * ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY specifies that 1102 shader float controls for 32-bit floating point can: be set 1103 independently; other bit widths must: be set identically to each other. 1104 * ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL specifies that shader 1105 float controls for all bit widths can: be set independently. 1106 * ename:VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE specifies that shader 1107 float controls for all bit widths must: be set identically. 1108-- 1109endif::VK_VERSION_1_2,VK_KHR_shader_float_controls[] 1110 1111ifdef::VK_EXT_discard_rectangles[] 1112[open,refpage='VkPhysicalDeviceDiscardRectanglePropertiesEXT',desc='Structure describing discard rectangle limits that can be supported by an implementation',type='structs'] 1113-- 1114The sname:VkPhysicalDeviceDiscardRectanglePropertiesEXT structure is defined 1115as: 1116 1117include::{generated}/api/structs/VkPhysicalDeviceDiscardRectanglePropertiesEXT.adoc[] 1118 1119 * pname:sType is a elink:VkStructureType value identifying this structure. 1120 * pname:pNext is `NULL` or a pointer to a structure extending this 1121 structure. 1122 * [[limits-maxDiscardRectangles]] pname:maxDiscardRectangles is the 1123 maximum number of active discard rectangles that can: be specified. 1124 1125:refpage: VkPhysicalDeviceDiscardRectanglePropertiesEXT 1126include::{chapters}/limits.adoc[tag=limits_desc] 1127 1128include::{generated}/validity/structs/VkPhysicalDeviceDiscardRectanglePropertiesEXT.adoc[] 1129-- 1130endif::VK_EXT_discard_rectangles[] 1131 1132ifdef::VK_EXT_sample_locations[] 1133[open,refpage='VkPhysicalDeviceSampleLocationsPropertiesEXT',desc='Structure describing sample location limits that can be supported by an implementation',type='structs'] 1134-- 1135The sname:VkPhysicalDeviceSampleLocationsPropertiesEXT structure is defined 1136as: 1137 1138include::{generated}/api/structs/VkPhysicalDeviceSampleLocationsPropertiesEXT.adoc[] 1139 1140 * pname:sType is a elink:VkStructureType value identifying this structure. 1141 * pname:pNext is `NULL` or a pointer to a structure extending this 1142 structure. 1143 * [[limits-sampleLocationSampleCounts]] pname:sampleLocationSampleCounts 1144 is a bitmask of elink:VkSampleCountFlagBits indicating the sample counts 1145 supporting custom sample locations. 1146 * [[limits-maxSampleLocationGridSize]] pname:maxSampleLocationGridSize is 1147 the maximum size of the pixel grid in which sample locations can: vary 1148 that is supported for all sample counts in 1149 pname:sampleLocationSampleCounts. 1150 * [[limits-sampleLocationCoordinateRange]] 1151 pname:sampleLocationCoordinateRange[2] is the range of supported sample 1152 location coordinates. 1153 * [[limits-sampleLocationSubPixelBits]] pname:sampleLocationSubPixelBits 1154 is the number of bits of subpixel precision for sample locations. 1155 * [[limits-variableSampleLocations]] pname:variableSampleLocations 1156 specifies whether the sample locations used by all pipelines that will 1157 be bound to a command buffer during a subpass must: match. 1158 If set to ename:VK_TRUE, the implementation supports variable sample 1159 locations in a subpass. 1160 If set to ename:VK_FALSE, then the sample locations must: stay constant 1161 in each subpass. 1162 1163:refpage: VkPhysicalDeviceSampleLocationsPropertiesEXT 1164include::{chapters}/limits.adoc[tag=limits_desc] 1165 1166include::{generated}/validity/structs/VkPhysicalDeviceSampleLocationsPropertiesEXT.adoc[] 1167-- 1168endif::VK_EXT_sample_locations[] 1169 1170ifdef::VK_EXT_external_memory_host[] 1171[open,refpage='VkPhysicalDeviceExternalMemoryHostPropertiesEXT',desc='Structure describing external memory host pointer limits that can be supported by an implementation',type='structs'] 1172-- 1173The sname:VkPhysicalDeviceExternalMemoryHostPropertiesEXT structure is 1174defined as: 1175 1176include::{generated}/api/structs/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.adoc[] 1177 1178 * pname:sType is a elink:VkStructureType value identifying this structure. 1179 * pname:pNext is `NULL` or a pointer to a structure extending this 1180 structure. 1181 * [[limits-minImportedHostPointerAlignment]] 1182 pname:minImportedHostPointerAlignment is the minimum required: 1183 alignment, in bytes, for the base address and size of host pointers that 1184 can: be imported to a Vulkan memory object. 1185 The value must: be a power of two. 1186 1187:refpage: VkPhysicalDeviceExternalMemoryHostPropertiesEXT 1188include::{chapters}/limits.adoc[tag=limits_desc] 1189 1190include::{generated}/validity/structs/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.adoc[] 1191-- 1192endif::VK_EXT_external_memory_host[] 1193 1194ifdef::VK_NVX_multiview_per_view_attributes[] 1195[open,refpage='VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',desc='Structure describing multiview limits that can be supported by an implementation',type='structs'] 1196-- 1197The sname:VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX structure 1198is defined as: 1199 1200include::{generated}/api/structs/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.adoc[] 1201 1202 * pname:sType is a elink:VkStructureType value identifying this structure. 1203 * pname:pNext is `NULL` or a pointer to a structure extending this 1204 structure. 1205 * [[limits-perViewPositionAllComponents]] 1206 pname:perViewPositionAllComponents is ename:VK_TRUE if the 1207 implementation supports per-view position values that differ in 1208 components other than the X component. 1209 1210:refpage: VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX 1211include::{chapters}/limits.adoc[tag=limits_desc] 1212 1213include::{generated}/validity/structs/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.adoc[] 1214-- 1215endif::VK_NVX_multiview_per_view_attributes[] 1216 1217ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[] 1218[open,refpage='VkPhysicalDevicePointClippingProperties',desc='Structure describing the point clipping behavior supported by an implementation',type='structs'] 1219-- 1220The sname:VkPhysicalDevicePointClippingProperties structure is defined as: 1221 1222include::{generated}/api/structs/VkPhysicalDevicePointClippingProperties.adoc[] 1223 1224ifdef::VK_KHR_maintenance2[] 1225or the equivalent 1226 1227include::{generated}/api/structs/VkPhysicalDevicePointClippingPropertiesKHR.adoc[] 1228endif::VK_KHR_maintenance2[] 1229 1230 * pname:sType is a elink:VkStructureType value identifying this structure. 1231 * pname:pNext is `NULL` or a pointer to a structure extending this 1232 structure. 1233 1234// Must have preceding whitespace 1235ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1236ifndef::VK_VERSION_1_2[:anchor-prefix:] 1237// tag::VK_KHR_maintenance2-properties[] 1238 * [[{anchor-prefix}limits-pointClipping]] pname:pointClippingBehavior is a 1239 elink:VkPointClippingBehavior value specifying the point clipping 1240 behavior supported by the implementation. 1241// end::VK_KHR_maintenance2-properties[] 1242 1243:refpage: VkPhysicalDevicePointClippingProperties 1244include::{chapters}/limits.adoc[tag=limits_desc] 1245 1246include::{generated}/validity/structs/VkPhysicalDevicePointClippingProperties.adoc[] 1247-- 1248endif::VK_VERSION_1_1,VK_KHR_maintenance2[] 1249 1250ifdef::VK_VERSION_1_1[] 1251[open,refpage='VkPhysicalDeviceSubgroupProperties',desc='Structure describing subgroup support for an implementation',type='structs'] 1252-- 1253The sname:VkPhysicalDeviceSubgroupProperties structure is defined as: 1254 1255include::{generated}/api/structs/VkPhysicalDeviceSubgroupProperties.adoc[] 1256 1257 * pname:sType is a elink:VkStructureType value identifying this structure. 1258 * pname:pNext is `NULL` or a pointer to a structure extending this 1259 structure. 1260 1261// Must have preceding whitespace 1262ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1263ifndef::VK_VERSION_1_2[:anchor-prefix:] 1264// tag::VK_KHR_subgroup-properties[] 1265 * [[{anchor-prefix}limits-subgroup-size]] pname:subgroupSize is the 1266 default number of invocations in each subgroup. 1267 pname:subgroupSize is at least 1 if any of the physical device's queues 1268 support ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT. 1269 pname:subgroupSize is a power-of-two. 1270 * [[limits-subgroup-supportedStages]] pname:supportedStages is a bitfield 1271 of elink:VkShaderStageFlagBits describing the shader stages that 1272 <<shaders-group-operations, group operations>> with 1273 <<shaders-scope-subgroup, subgroup scope>> are supported in. 1274 pname:supportedStages will have the ename:VK_SHADER_STAGE_COMPUTE_BIT 1275 bit set if any of the physical device's queues support 1276 ename:VK_QUEUE_COMPUTE_BIT. 1277 * [[limits-subgroupSupportedOperations]] pname:supportedOperations is a 1278 bitmask of elink:VkSubgroupFeatureFlagBits specifying the sets of 1279 <<shaders-group-operations, group operations>> with 1280 <<shaders-scope-subgroup, subgroup scope>> supported on this device. 1281 pname:supportedOperations will have the 1282 ename:VK_SUBGROUP_FEATURE_BASIC_BIT bit set if any of the physical 1283 device's queues support ename:VK_QUEUE_GRAPHICS_BIT or 1284 ename:VK_QUEUE_COMPUTE_BIT. 1285 * [[limits-subgroup-quadOperationsInAllStages]] 1286 pname:quadOperationsInAllStages is a boolean specifying whether 1287 <<shaders-quad-operations,quad group operations>> are available in all 1288 stages, or are restricted to fragment and compute stages. 1289// end::VK_KHR_subgroup-properties[] 1290 1291:refpage: VkPhysicalDeviceSubgroupProperties 1292include::{chapters}/limits.adoc[tag=limits_desc] 1293 1294If pname:supportedOperations includes <<features-subgroup-quad, 1295ename:VK_SUBGROUP_FEATURE_QUAD_BIT>>, 1296ifdef::VK_KHR_shader_subgroup_uniform_control_flow[] 1297or <<features-shaderSubgroupUniformControlFlow, 1298pname:shaderSubgroupUniformControlFlow>> is enabled, 1299endif::VK_KHR_shader_subgroup_uniform_control_flow[] 1300pname:subgroupSize must: be greater than or equal to 4. 1301 1302include::{generated}/validity/structs/VkPhysicalDeviceSubgroupProperties.adoc[] 1303-- 1304 1305[open,refpage='VkSubgroupFeatureFlagBits',desc='Bitmask describing what group operations are supported with subgroup scope',type='enums'] 1306-- 1307Bits which can: be set in 1308slink:VkPhysicalDeviceSubgroupProperties::pname:supportedOperations 1309ifdef::VK_VERSION_1_2[] 1310and 1311slink:VkPhysicalDeviceVulkan11Properties::pname:subgroupSupportedOperations 1312endif::VK_VERSION_1_2[] 1313to specify supported <<shaders-group-operations, group operations>> with 1314<<shaders-scope-subgroup, subgroup scope>> are: 1315 1316include::{generated}/api/enums/VkSubgroupFeatureFlagBits.adoc[] 1317 1318 * [[features-subgroup-basic]] ename:VK_SUBGROUP_FEATURE_BASIC_BIT 1319 specifies the device will accept SPIR-V shader modules containing the 1320 code:GroupNonUniform capability. 1321 * [[features-subgroup-vote]] ename:VK_SUBGROUP_FEATURE_VOTE_BIT specifies 1322 the device will accept SPIR-V shader modules containing the 1323 code:GroupNonUniformVote capability. 1324 * [[features-subgroup-arithmetic]] 1325 ename:VK_SUBGROUP_FEATURE_ARITHMETIC_BIT specifies the device will 1326 accept SPIR-V shader modules containing the 1327 code:GroupNonUniformArithmetic capability. 1328 * [[features-subgroup-ballot]] ename:VK_SUBGROUP_FEATURE_BALLOT_BIT 1329 specifies the device will accept SPIR-V shader modules containing the 1330 code:GroupNonUniformBallot capability. 1331 * [[features-subgroup-shuffle]] ename:VK_SUBGROUP_FEATURE_SHUFFLE_BIT 1332 specifies the device will accept SPIR-V shader modules containing the 1333 code:GroupNonUniformShuffle capability. 1334 * [[features-subgroup-shuffle-relative]] 1335 ename:VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT specifies the device will 1336 accept SPIR-V shader modules containing the 1337 code:GroupNonUniformShuffleRelative capability. 1338 * [[features-subgroup-clustered]] ename:VK_SUBGROUP_FEATURE_CLUSTERED_BIT 1339 specifies the device will accept SPIR-V shader modules containing the 1340 code:GroupNonUniformClustered capability. 1341 * [[features-subgroup-quad]] ename:VK_SUBGROUP_FEATURE_QUAD_BIT specifies 1342 the device will accept SPIR-V shader modules containing the 1343 code:GroupNonUniformQuad capability. 1344ifdef::VK_NV_shader_subgroup_partitioned[] 1345 * [[features-subgroup-partitioned]] 1346 ename:VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV specifies the device will 1347 accept SPIR-V shader modules containing the 1348 code:GroupNonUniformPartitionedNV capability. 1349endif::VK_NV_shader_subgroup_partitioned[] 1350-- 1351 1352[open,refpage='VkSubgroupFeatureFlags',desc='Bitmask of VkSubgroupFeatureFlagBits',type='flags'] 1353-- 1354include::{generated}/api/flags/VkSubgroupFeatureFlags.adoc[] 1355 1356tname:VkSubgroupFeatureFlags is a bitmask type for setting a mask of zero or 1357more elink:VkSubgroupFeatureFlagBits. 1358-- 1359 1360ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 1361[open,refpage='VkPhysicalDeviceSubgroupSizeControlProperties',desc='Structure describing the control subgroup size properties of an implementation',type='structs',alias='VkPhysicalDeviceSubgroupSizeControlPropertiesEXT'] 1362-- 1363The sname:VkPhysicalDeviceSubgroupSizeControlProperties structure is defined 1364as: 1365 1366include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlProperties.adoc[] 1367 1368ifdef::VK_EXT_subgroup_size_control[] 1369or the equivalent 1370 1371include::{generated}/api/structs/VkPhysicalDeviceSubgroupSizeControlPropertiesEXT.adoc[] 1372endif::VK_EXT_subgroup_size_control[] 1373 1374 * pname:sType is a elink:VkStructureType value identifying this structure. 1375 * pname:pNext is `NULL` or a pointer to a structure extending this 1376 structure. 1377 1378// Must have preceding whitespace 1379ifdef::VK_VERSION_1_3[:anchor-prefix: extension-] 1380ifndef::VK_VERSION_1_3[:anchor-prefix:] 1381// tag::VK_EXT_subgroup_size_control-properties[] 1382 * [[{anchor-prefix}limits-minSubgroupSize]] pname:minSubgroupSize is the 1383 minimum subgroup size supported by this device. 1384 pname:minSubgroupSize is at least one if any of the physical device's 1385 queues support ename:VK_QUEUE_GRAPHICS_BIT or 1386 ename:VK_QUEUE_COMPUTE_BIT. 1387 pname:minSubgroupSize is a power-of-two. 1388 pname:minSubgroupSize is less than or equal to pname:maxSubgroupSize. 1389 pname:minSubgroupSize is less than or equal to <<limits-subgroup-size, 1390 pname:subgroupSize>>. 1391 * [[{anchor-prefix}limits-maxSubgroupSize]] pname:maxSubgroupSize is the 1392 maximum subgroup size supported by this device. 1393 pname:maxSubgroupSize is at least one if any of the physical device's 1394 queues support ename:VK_QUEUE_GRAPHICS_BIT or 1395 ename:VK_QUEUE_COMPUTE_BIT. 1396 pname:maxSubgroupSize is a power-of-two. 1397 pname:maxSubgroupSize is greater than or equal to pname:minSubgroupSize. 1398 pname:maxSubgroupSize is greater than or equal to 1399 <<limits-subgroup-size, pname:subgroupSize>>. 1400 * [[{anchor-prefix}limits-maxComputeWorkgroupSubgroups]] 1401 pname:maxComputeWorkgroupSubgroups is the maximum number of subgroups 1402 supported by the implementation within a workgroup. 1403 * [[{anchor-prefix}limits-requiredSubgroupSizeStages]] 1404 pname:requiredSubgroupSizeStages is a bitfield of what shader stages 1405 support having a required subgroup size specified. 1406// end::VK_EXT_subgroup_size_control-properties[] 1407 1408:refpage: VkPhysicalDeviceSubgroupSizeControlProperties 1409include::{chapters}/limits.adoc[tag=limits_desc] 1410 1411If slink:VkPhysicalDeviceSubgroupProperties::pname:supportedOperations 1412includes <<features-subgroup-quad, ename:VK_SUBGROUP_FEATURE_QUAD_BIT>>, 1413pname:minSubgroupSize must: be greater than or equal to 4. 1414 1415include::{generated}/validity/structs/VkPhysicalDeviceSubgroupSizeControlProperties.adoc[] 1416-- 1417endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] 1418endif::VK_VERSION_1_1[] 1419 1420ifdef::VK_EXT_blend_operation_advanced[] 1421[open,refpage='VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',desc='Structure describing advanced blending limits that can be supported by an implementation',type='structs'] 1422-- 1423The sname:VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT structure is 1424defined as: 1425 1426include::{generated}/api/structs/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.adoc[] 1427 1428 * pname:sType is a elink:VkStructureType value identifying this structure. 1429 * pname:pNext is `NULL` or a pointer to a structure extending this 1430 structure. 1431 * [[limits-advancedBlendMaxColorAttachments]] 1432 pname:advancedBlendMaxColorAttachments is one greater than the highest 1433 color attachment index that can: be used in a subpass, for a pipeline 1434 that uses an <<framebuffer-blend-advanced,advanced blend operation>>. 1435 * [[limits-advancedBlendIndependentBlend]] 1436 pname:advancedBlendIndependentBlend specifies whether advanced blend 1437 operations can: vary per-attachment. 1438 * [[limits-advancedBlendNonPremultipliedSrcColor]] 1439 pname:advancedBlendNonPremultipliedSrcColor specifies whether the source 1440 color can: be treated as non-premultiplied. 1441 If this is ename:VK_FALSE, then 1442 slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT::pname:srcPremultiplied 1443 must: be ename:VK_TRUE. 1444 * [[limits-advancedBlendNonPremultipliedDstColor]] 1445 pname:advancedBlendNonPremultipliedDstColor specifies whether the 1446 destination color can: be treated as non-premultiplied. 1447 If this is ename:VK_FALSE, then 1448 slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT::pname:dstPremultiplied 1449 must: be ename:VK_TRUE. 1450 * [[limits-advancedBlendCorrelatedOverlap]] 1451 pname:advancedBlendCorrelatedOverlap specifies whether the overlap mode 1452 can: be treated as correlated. 1453 If this is ename:VK_FALSE, then 1454 slink:VkPipelineColorBlendAdvancedStateCreateInfoEXT::pname:blendOverlap 1455 must: be ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT. 1456 * [[limits-advancedBlendAllOperations]] pname:advancedBlendAllOperations 1457 specifies whether all advanced blend operation enums are supported. 1458 See the valid usage of slink:VkPipelineColorBlendAttachmentState. 1459 1460:refpage: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT 1461include::{chapters}/limits.adoc[tag=limits_desc] 1462 1463include::{generated}/validity/structs/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.adoc[] 1464-- 1465endif::VK_EXT_blend_operation_advanced[] 1466 1467ifdef::VK_EXT_vertex_attribute_divisor[] 1468[open,refpage='VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT',desc='Structure describing max value of vertex attribute divisor that can be supported by an implementation',type='structs'] 1469-- 1470The sname:VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT structure is 1471defined as: 1472 1473include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.adoc[] 1474 1475 * pname:sType is a elink:VkStructureType value identifying this structure. 1476 * pname:pNext is `NULL` or a pointer to a structure extending this 1477 structure. 1478 1479// Must have preceding whitespace 1480ifdef::VK_KHR_vertex_attribute_divisor[:anchor-prefix: extension-] 1481ifndef::VK_KHR_vertex_attribute_divisor[:anchor-prefix:] 1482// tag::VK_KHR_vertex_attribute_divisor-properties[] 1483 * [[{anchor-prefix}limits-maxVertexAttribDivisor]] 1484 pname:maxVertexAttribDivisor is the maximum value of the number of 1485 instances that will repeat the value of vertex attribute data when 1486 instanced rendering is enabled. 1487 1488:refpage: VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT 1489include::{chapters}/limits.adoc[tag=limits_desc] 1490 1491include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.adoc[] 1492-- 1493endif::VK_EXT_vertex_attribute_divisor[] 1494 1495ifdef::VK_KHR_vertex_attribute_divisor[] 1496[open,refpage='VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR',desc='Structure describing max value of vertex attribute divisor that can be supported by an implementation',type='structs'] 1497-- 1498The sname:VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR structure is 1499defined as: 1500 1501include::{generated}/api/structs/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.adoc[] 1502 1503 * pname:sType is a elink:VkStructureType value identifying this structure. 1504 * pname:pNext is `NULL` or a pointer to a structure extending this 1505 structure. 1506 * [[limits-maxVertexAttribDivisor]] pname:maxVertexAttribDivisor is the 1507 maximum value of the number of instances that will repeat the value of 1508 vertex attribute data when instanced rendering is enabled. 1509 * [[limits-supportsNonZeroFirstInstance]] 1510 pname:supportsNonZeroFirstInstance specifies whether a non-zero value 1511 for the pname:firstInstance parameter of <<drawing, drawing commands>> 1512 is supported when 1513 slink:VkVertexInputBindingDivisorDescriptionKHR::pname:divisor is not 1514 `1`. 1515 1516:refpage: VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR 1517include::{chapters}/limits.adoc[tag=limits_desc] 1518 1519include::{generated}/validity/structs/VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR.adoc[] 1520-- 1521endif::VK_KHR_vertex_attribute_divisor[] 1522 1523ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1524[open,refpage='VkPhysicalDeviceSamplerFilterMinmaxProperties',desc='Structure describing sampler filter minmax limits that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT'] 1525-- 1526The sname:VkPhysicalDeviceSamplerFilterMinmaxProperties structure is defined 1527as: 1528 1529include::{generated}/api/structs/VkPhysicalDeviceSamplerFilterMinmaxProperties.adoc[] 1530 1531ifdef::VK_EXT_sampler_filter_minmax[] 1532or the equivalent 1533 1534include::{generated}/api/structs/VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT.adoc[] 1535endif::VK_EXT_sampler_filter_minmax[] 1536 1537 * pname:sType is a elink:VkStructureType value identifying this structure. 1538 * pname:pNext is `NULL` or a pointer to a structure extending this 1539 structure. 1540 1541// Must have preceding whitespace 1542ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1543ifndef::VK_VERSION_1_2[:anchor-prefix:] 1544// tag::VK_EXT_sampler_filter_minmax-properties[] 1545 * [[{anchor-prefix}limits-filterMinmaxSingleComponentFormats]] 1546 pname:filterMinmaxSingleComponentFormats is a boolean value indicating 1547 whether a minimum set of required formats support min/max filtering. 1548 * [[{anchor-prefix}limits-filterMinmaxImageComponentMapping]] 1549 pname:filterMinmaxImageComponentMapping is a boolean value indicating 1550 whether the implementation supports non-identity component mapping of 1551 the image when doing min/max filtering. 1552// end::VK_EXT_sampler_filter_minmax-properties[] 1553 1554:refpage: VkPhysicalDeviceSamplerFilterMinmaxProperties 1555include::{chapters}/limits.adoc[tag=limits_desc] 1556 1557[[limits-filterMinmaxSingleComponentFormats-minimum-requirements]] 1558If pname:filterMinmaxSingleComponentFormats is ename:VK_TRUE, the following 1559formats must: support the 1560ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature with 1561ename:VK_IMAGE_TILING_OPTIMAL, if they support 1562ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT: 1563 1564 * ename:VK_FORMAT_R8_UNORM 1565 * ename:VK_FORMAT_R8_SNORM 1566 * ename:VK_FORMAT_R16_UNORM 1567 * ename:VK_FORMAT_R16_SNORM 1568 * ename:VK_FORMAT_R16_SFLOAT 1569 * ename:VK_FORMAT_R32_SFLOAT 1570 * ename:VK_FORMAT_D16_UNORM 1571 * ename:VK_FORMAT_X8_D24_UNORM_PACK32 1572 * ename:VK_FORMAT_D32_SFLOAT 1573 * ename:VK_FORMAT_D16_UNORM_S8_UINT 1574 * ename:VK_FORMAT_D24_UNORM_S8_UINT 1575 * ename:VK_FORMAT_D32_SFLOAT_S8_UINT 1576 1577If the format is a depth/stencil format, this bit only specifies that the 1578depth aspect (not the stencil aspect) of an image of this format supports 1579min/max filtering, and that min/max filtering of the depth aspect is 1580supported when depth compare is disabled in the sampler. 1581 1582If pname:filterMinmaxImageComponentMapping is ename:VK_FALSE the component 1583mapping of the image view used with min/max filtering must: have been 1584created with the pname:r component set to the 1585<<resources-image-views-identity-mappings,identity swizzle>>. 1586Only the pname:r component of the sampled image value is defined and the 1587other component values are undefined:. 1588If pname:filterMinmaxImageComponentMapping is ename:VK_TRUE this restriction 1589does not apply and image component mapping works as normal. 1590 1591include::{generated}/validity/structs/VkPhysicalDeviceSamplerFilterMinmaxProperties.adoc[] 1592-- 1593endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 1594 1595ifdef::VK_VERSION_1_1[] 1596[open,refpage='VkPhysicalDeviceProtectedMemoryProperties',desc='Structure describing protected memory properties that can be supported by an implementation',type='structs'] 1597-- 1598The sname:VkPhysicalDeviceProtectedMemoryProperties structure is defined as: 1599 1600include::{generated}/api/structs/VkPhysicalDeviceProtectedMemoryProperties.adoc[] 1601 1602 * pname:sType is a elink:VkStructureType value identifying this structure. 1603 * pname:pNext is `NULL` or a pointer to a structure extending this 1604 structure. 1605 1606// Must have preceding whitespace 1607ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1608ifndef::VK_VERSION_1_2[:anchor-prefix:] 1609// tag::VK_KHR_protected_memory-properties[] 1610 * [[{anchor-prefix}limits-protectedNoFault]] pname:protectedNoFault 1611 specifies how an implementation behaves when an application attempts to 1612 write to unprotected memory in a protected queue operation, read from 1613 protected memory in an unprotected queue operation, or perform a query 1614 in a protected queue operation. 1615 If this limit is ename:VK_TRUE, such writes will be discarded or have 1616 undefined: values written, reads and queries will return undefined: 1617 values. 1618 If this limit is ename:VK_FALSE, applications must: not perform these 1619 operations. 1620 See <<memory-protected-access-rules>> for more information. 1621// end::VK_KHR_protected_memory-properties[] 1622 1623:refpage: VkPhysicalDeviceProtectedMemoryProperties 1624include::{chapters}/limits.adoc[tag=limits_desc] 1625 1626include::{generated}/validity/structs/VkPhysicalDeviceProtectedMemoryProperties.adoc[] 1627-- 1628endif::VK_VERSION_1_1[] 1629 1630ifdef::VK_VERSION_1_1,VK_KHR_maintenance3[] 1631[open,refpage='VkPhysicalDeviceMaintenance3Properties',desc='Structure describing descriptor set properties',type='structs'] 1632-- 1633The sname:VkPhysicalDeviceMaintenance3Properties structure is defined as: 1634 1635include::{generated}/api/structs/VkPhysicalDeviceMaintenance3Properties.adoc[] 1636 1637ifdef::VK_KHR_maintenance3[] 1638or the equivalent 1639 1640include::{generated}/api/structs/VkPhysicalDeviceMaintenance3PropertiesKHR.adoc[] 1641endif::VK_KHR_maintenance3[] 1642 1643 * pname:sType is a elink:VkStructureType value identifying this structure. 1644 * pname:pNext is `NULL` or a pointer to a structure extending this 1645 structure. 1646 1647// Must have preceding whitespace 1648ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 1649ifndef::VK_VERSION_1_2[:anchor-prefix:] 1650// tag::VK_KHR_maintenance3-properties[] 1651 * [[{anchor-prefix}limits-maxPerSetDescriptors]] 1652 pname:maxPerSetDescriptors is a maximum number of descriptors (summed 1653 over all descriptor types) in a single descriptor set that is guaranteed 1654 to satisfy any implementation-dependent constraints on the size of a 1655 descriptor set itself. 1656 Applications can: query whether a descriptor set that goes beyond this 1657 limit is supported using flink:vkGetDescriptorSetLayoutSupport. 1658 * [[{anchor-prefix}limits-maxMemoryAllocationSize]] 1659 pname:maxMemoryAllocationSize is the maximum size of a memory allocation 1660 that can: be created, even if there is more space available in the heap. 1661// end::VK_KHR_maintenance3-properties[] 1662 1663:refpage: VkPhysicalDeviceMaintenance3Properties 1664include::{chapters}/limits.adoc[tag=limits_desc] 1665 1666include::{generated}/validity/structs/VkPhysicalDeviceMaintenance3Properties.adoc[] 1667-- 1668endif::VK_VERSION_1_1,VK_KHR_maintenance3[] 1669 1670ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[] 1671[open,refpage='VkPhysicalDeviceMaintenance4Properties',desc='Structure describing various implementation-defined properties introduced with VK_KHR_maintenance4',type='structs',alias='VkPhysicalDeviceMaintenance4PropertiesKHR'] 1672-- 1673The sname:VkPhysicalDeviceMaintenance4Properties structure is defined as: 1674 1675include::{generated}/api/structs/VkPhysicalDeviceMaintenance4Properties.adoc[] 1676 1677ifdef::VK_KHR_maintenance4[] 1678or the equivalent 1679 1680include::{generated}/api/structs/VkPhysicalDeviceMaintenance4PropertiesKHR.adoc[] 1681endif::VK_KHR_maintenance4[] 1682 1683 * pname:sType is a elink:VkStructureType value identifying this structure. 1684 * pname:pNext is `NULL` or a pointer to a structure extending this 1685 structure. 1686 1687// Must have preceding whitespace 1688ifdef::VK_VERSION_1_3[:anchor-prefix: extension-] 1689ifndef::VK_VERSION_1_3[:anchor-prefix:] 1690// tag::VK_KHR_maintenance4-properties[] 1691 * [[{anchor-prefix}limits-maxBufferSize]] pname:maxBufferSize is the 1692 maximum size sname:VkBuffer that can: be created. 1693// end::VK_KHR_maintenance4-properties[] 1694 1695:refpage: VkPhysicalDeviceMaintenance4Properties 1696include::{chapters}/limits.adoc[tag=limits_desc] 1697 1698include::{generated}/validity/structs/VkPhysicalDeviceMaintenance4Properties.adoc[] 1699-- 1700endif::VK_VERSION_1_3,VK_KHR_maintenance4[] 1701 1702ifdef::VK_KHR_maintenance5[] 1703[open,refpage='VkPhysicalDeviceMaintenance5PropertiesKHR',desc='Structure describing various implementation-defined properties introduced with VK_KHR_maintenance5',type='structs',alias='VkPhysicalDeviceMaintenance5PropertiesKHR'] 1704-- 1705The sname:VkPhysicalDeviceMaintenance5PropertiesKHR structure is defined as: 1706 1707include::{generated}/api/structs/VkPhysicalDeviceMaintenance5PropertiesKHR.adoc[] 1708 1709 * pname:sType is a elink:VkStructureType value identifying this structure. 1710 * pname:pNext is `NULL` or a pointer to a structure extending this 1711 structure. 1712 * pname:earlyFragmentMultisampleCoverageAfterSampleCounting is a boolean 1713 value indicating whether the <<fragops-shader,fragment shading>> and 1714 <<fragops-covg, multisample coverage>> operations are performed after 1715 <<fragops-samplecount, sample counting>> for <<fragops-shader, fragment 1716 shaders>> with code:EarlyFragmentTests execution mode. 1717 * pname:earlyFragmentSampleMaskTestBeforeSampleCounting is a boolean value 1718 indicating whether the <<fragops-samplemask,sample mask test>> operation 1719 is performed before <<fragops-samplecount, sample counting>> for 1720 <<fragops-shader, fragment shaders>> using the code:EarlyFragmentTests 1721 execution mode. 1722 * pname:depthStencilSwizzleOneSupport is a boolean indicating that 1723 depth/stencil texturing operations with ename:VK_COMPONENT_SWIZZLE_ONE 1724 have defined behavior. 1725 * pname:polygonModePointSize is a boolean value indicating whether the 1726 point size of the final rasterization of polygons with 1727 ename:VK_POLYGON_MODE_POINT is controlled by code:PointSize. 1728 * pname:nonStrictSinglePixelWideLinesUseParallelogram is a boolean value 1729 indicating whether non-strict lines with a width of 1.0 are rasterized 1730 as parallelograms or using Bresenham's algorithm. 1731 * pname:nonStrictWideLinesUseParallelogram is a boolean value indicating 1732 whether non-strict lines with a width greater than 1.0 are rasterized as 1733 parallelograms or using Bresenham's algorithm. 1734 1735:refpage: VkPhysicalDeviceMaintenance5PropertiesKHR 1736include::{chapters}/limits.adoc[tag=limits_desc] 1737 1738include::{generated}/validity/structs/VkPhysicalDeviceMaintenance5PropertiesKHR.adoc[] 1739-- 1740endif::VK_KHR_maintenance5[] 1741 1742ifdef::VK_KHR_maintenance6[] 1743[open,refpage='VkPhysicalDeviceMaintenance6PropertiesKHR',desc='Structure describing various implementation-defined properties introduced with VK_KHR_maintenance6',type='structs',alias='VkPhysicalDeviceMaintenance6PropertiesKHR'] 1744-- 1745The sname:VkPhysicalDeviceMaintenance6PropertiesKHR structure is defined as: 1746 1747include::{generated}/api/structs/VkPhysicalDeviceMaintenance6PropertiesKHR.adoc[] 1748 1749 * pname:sType is a elink:VkStructureType value identifying this structure. 1750 * pname:pNext is `NULL` or a pointer to a structure extending this 1751 structure. 1752 * pname:blockTexelViewCompatibleMultipleLayers is a boolean value 1753 indicating that an implementation supports creating image views with 1754 ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT where the 1755 pname:layerCount member of pname:subresourceRange is greater than `1`. 1756 * pname:maxCombinedImageSamplerDescriptorCount is the maximum number of 1757 combined image sampler descriptors that the implementation uses to 1758 access any of the <<formats-requiring-sampler-ycbcr-conversion, formats 1759 that require a sampler {YCbCr} conversion>> supported by the 1760 implementation. 1761 * pname:fragmentShadingRateClampCombinerInputs is a boolean value 1762 indicating that an implementation clamps the inputs to 1763 <<primsrast-fragment-shading-rate-combining, combiner operations>>. 1764 1765:refpage: VkPhysicalDeviceMaintenance6PropertiesKHR 1766include::{chapters}/limits.adoc[tag=limits_desc] 1767 1768include::{generated}/validity/structs/VkPhysicalDeviceMaintenance6PropertiesKHR.adoc[] 1769-- 1770endif::VK_KHR_maintenance6[] 1771 1772ifdef::VK_NV_mesh_shader[] 1773[open,refpage='VkPhysicalDeviceMeshShaderPropertiesNV',desc='Structure describing mesh shading properties',type='structs'] 1774-- 1775The sname:VkPhysicalDeviceMeshShaderPropertiesNV structure is defined as: 1776 1777include::{generated}/api/structs/VkPhysicalDeviceMeshShaderPropertiesNV.adoc[] 1778 1779 * pname:sType is a elink:VkStructureType value identifying this structure. 1780 * pname:pNext is `NULL` or a pointer to a structure extending this 1781 structure. 1782 * pname:maxDrawMeshTasksCount is the maximum number of local workgroups 1783 that can: be launched by a single draw mesh tasks command. 1784 See <<drawing-mesh-shading>>. 1785 * pname:maxTaskWorkGroupInvocations is the maximum total number of task 1786 shader invocations in a single local workgroup. 1787 The product of the X, Y, and Z sizes, as specified by the code:LocalSize 1788ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 1789 execution mode in shader modules or by the object decorated by the 1790 code:WorkgroupSize decoration, must: be less than or equal to this 1791 limit. 1792 * pname:maxTaskWorkGroupSize[3] is the maximum size of a local task 1793 workgroup. 1794 These three values represent the maximum local workgroup size in the X, 1795 Y, and Z dimensions, respectively. 1796 The pname:x, pname:y, and pname:z sizes, as specified by the 1797 code:LocalSize 1798ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 1799 execution mode or by the object decorated by the code:WorkgroupSize 1800 decoration in shader modules, must: be less than or equal to the 1801 corresponding limit. 1802 * pname:maxTaskTotalMemorySize is the maximum number of bytes that the 1803 task shader can use in total for shared and output memory combined. 1804 * pname:maxTaskOutputCount is the maximum number of output tasks a single 1805 task shader workgroup can emit. 1806 * pname:maxMeshWorkGroupInvocations is the maximum total number of mesh 1807 shader invocations in a single local workgroup. 1808 The product of the X, Y, and Z sizes, as specified by the code:LocalSize 1809ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 1810 execution mode in shader modules or by the object decorated by the 1811 code:WorkgroupSize decoration, must: be less than or equal to this 1812 limit. 1813 * pname:maxMeshWorkGroupSize[3] is the maximum size of a local mesh 1814 workgroup. 1815 These three values represent the maximum local workgroup size in the X, 1816 Y, and Z dimensions, respectively. 1817 The pname:x, pname:y, and pname:z sizes, as specified by the 1818 code:LocalSize 1819ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 1820 execution mode or by the object decorated by the code:WorkgroupSize 1821 decoration in shader modules, must: be less than or equal to the 1822 corresponding limit. 1823 * pname:maxMeshTotalMemorySize is the maximum number of bytes that the 1824 mesh shader can use in total for shared and output memory combined. 1825 * pname:maxMeshOutputVertices is the maximum number of vertices a mesh 1826 shader output can store. 1827 * pname:maxMeshOutputPrimitives is the maximum number of primitives a mesh 1828 shader output can store. 1829 * pname:maxMeshMultiviewViewCount is the maximum number of multiview views 1830 a mesh shader can use. 1831 * pname:meshOutputPerVertexGranularity is the granularity with which mesh 1832 vertex outputs are allocated. 1833 The value can be used to compute the memory size used by the mesh 1834 shader, which must be less than or equal to 1835 pname:maxMeshTotalMemorySize. 1836 * pname:meshOutputPerPrimitiveGranularity is the granularity with which 1837 mesh outputs qualified as per-primitive are allocated. 1838 The value can be used to compute the memory size used by the mesh 1839 shader, which must be less than or equal to 1840 pname:maxMeshTotalMemorySize. 1841 1842:refpage: VkPhysicalDeviceMeshShaderPropertiesNV 1843include::{chapters}/limits.adoc[tag=limits_desc] 1844 1845include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderPropertiesNV.adoc[] 1846-- 1847endif::VK_NV_mesh_shader[] 1848 1849ifdef::VK_EXT_mesh_shader[] 1850 1851[open,refpage='VkPhysicalDeviceMeshShaderPropertiesEXT',desc='Structure describing mesh shading properties',type='structs'] 1852-- 1853The sname:VkPhysicalDeviceMeshShaderPropertiesEXT structure is defined as: 1854 1855include::{generated}/api/structs/VkPhysicalDeviceMeshShaderPropertiesEXT.adoc[] 1856 1857The members of the sname:VkPhysicalDeviceMeshShaderPropertiesEXT structure 1858describe the following implementation-dependent limits: 1859 1860 * pname:sType is a elink:VkStructureType value identifying this structure. 1861 * pname:pNext is `NULL` or a pointer to a structure extending this 1862 structure. 1863 * [[limits-maxTaskWorkGroupTotalCount]] pname:maxTaskWorkGroupTotalCount 1864 is the maximum number of total local workgroups that can: be launched by 1865 a single mesh tasks drawing command. 1866 See <<drawing-mesh-shading>>. 1867 * [[limits-maxTaskWorkGroupCount]] pname:maxTaskWorkGroupCount[3] is the 1868 maximum number of local workgroups that can: be launched by a single 1869 mesh tasks drawing command. 1870 These three values represent the maximum number of local workgroups for 1871 the X, Y, and Z dimensions, respectively. 1872 The workgroup count parameters to the drawing commands must: be less 1873 than or equal to the corresponding limit. 1874 The product of these dimensions must: be less than or equal to 1875 pname:maxTaskWorkGroupTotalCount. 1876 * [[limits-maxTaskWorkGroupInvocations]] pname:maxTaskWorkGroupInvocations 1877 is the maximum total number of task shader invocations in a single local 1878 workgroup. 1879 The product of the X, Y, and Z sizes, as specified by the code:LocalSize 1880ifdef::VK_KHR_maintenance4[or code:LocalSizeId] 1881 execution mode in shader modules or by the object decorated by the 1882 code:WorkgroupSize decoration, must: be less than or equal to this 1883 limit. 1884 * [[limits-maxTaskWorkGroupSize]] pname:maxTaskWorkGroupSize[3] is the 1885 maximum size of a local task workgroup, per dimension. 1886 These three values represent the maximum local workgroup size in the X, 1887 Y, and Z dimensions, respectively. 1888 The pname:x, pname:y, and pname:z sizes, as specified by the 1889 code:LocalSize 1890ifdef::VK_KHR_maintenance4[or code:LocalSizeId] 1891 execution mode or by the object decorated by the code:WorkgroupSize 1892 decoration in shader modules, must: be less than or equal to the 1893 corresponding limit. 1894 * [[limits-maxTaskPayloadSize]] pname:maxTaskPayloadSize is the maximum 1895 total storage size, in bytes, available for variables declared with the 1896 code:TaskPayloadWorkgroupEXT storage class in shader modules in the task 1897 shader stage. 1898 * [[limits-maxTaskSharedMemorySize]] pname:maxTaskSharedMemorySize is the 1899 maximum total storage size, in bytes, available for variables declared 1900 with the code:Workgroup storage class in shader modules in the task 1901 shader stage. 1902 * [[limits-maxTaskPayloadAndSharedMemorySize]] 1903 pname:maxTaskPayloadAndSharedMemorySize is the maximum total storage 1904 size, in bytes, available for variables that are declared with the 1905 code:TaskPayloadWorkgroupEXT or code:Workgroup storage class, in shader 1906 modules in the task shader stage. 1907 * [[limits-maxMeshWorkGroupTotalCount]] pname:maxMeshWorkGroupTotalCount 1908 is the maximum number of local output tasks a single task shader 1909 workgroup can emit. 1910 * [[limits-maxMeshWorkGroupCount]] pname:maxMeshWorkGroupCount[3] is the 1911 maximum number of local output tasks a single task shader workgroup can 1912 emit, per dimension. 1913 These three values represent the maximum number of local output tasks 1914 for the X, Y, and Z dimensions, respectively. 1915 The workgroup count parameters to the code:OpEmitMeshTasksEXT must: be 1916 less than or equal to the corresponding limit. 1917 The product of these dimensions must: be less than or equal to 1918 pname:maxMeshWorkGroupTotalCount. 1919 * [[limits-maxMeshWorkGroupInvocations]] pname:maxMeshWorkGroupInvocations 1920 is the maximum total number of mesh shader invocations in a single local 1921 workgroup. 1922 The product of the X, Y, and Z sizes, as specified by the code:LocalSize 1923ifdef::VK_KHR_maintenance4[or code:LocalSizeId] 1924 execution mode in shader modules or by the object decorated by the 1925 code:WorkgroupSize decoration, must: be less than or equal to this 1926 limit. 1927 * [[limits-maxMeshWorkGroupSize]] pname:maxMeshWorkGroupSize[3] is the 1928 maximum size of a local mesh workgroup, per dimension. 1929 These three values represent the maximum local workgroup size in the X, 1930 Y, and Z dimensions, respectively. 1931 The pname:x, pname:y, and pname:z sizes, as specified by the 1932 code:LocalSize 1933ifdef::VK_KHR_maintenance4[or code:LocalSizeId] 1934 execution mode or by the object decorated by the code:WorkgroupSize 1935 decoration in shader modules, must: be less than or equal to the 1936 corresponding limit. 1937 * [[limits-maxMeshSharedMemorySize]] pname:maxMeshSharedMemorySize is the 1938 maximum total storage size, in bytes, available for variables declared 1939 with the code:Workgroup storage class in shader modules in the mesh 1940 shader stage. 1941 * [[limits-maxMeshPayloadAndSharedMemorySize]] 1942 pname:maxMeshPayloadAndSharedMemorySize is the maximum total storage 1943 size, in bytes, available for variables that are declared with the 1944 code:TaskPayloadWorkgroupEXT or code:Workgroup storage class in shader 1945 modules in the mesh shader stage. 1946 * [[limits-maxMeshOutputMemorySize]] pname:maxMeshOutputMemorySize is the 1947 maximum total storage size, in bytes, available for output variables in 1948 shader modules in the mesh shader stage, according to the formula in 1949 <<mesh-output, Mesh Shader Output>>. 1950 * [[limits-maxMeshPayloadAndOutputMemorySize]] 1951 pname:maxMeshPayloadAndOutputMemorySize is the maximum total storage 1952 size, in bytes, available for variables that are declared with the 1953 code:TaskPayloadWorkgroupEXT storage class, or output variables in 1954 shader modules in the mesh shader stage, according to the formula in 1955 <<mesh-output, Mesh Shader Output>>. 1956 * [[limits-maxMeshOutputComponents]] pname:maxMeshOutputComponents is the 1957 maximum number of components of output variables which can: be output 1958 from the mesh shader stage. 1959 * [[limits-maxMeshOutputVertices]] pname:maxMeshOutputVertices is the 1960 maximum number of vertices which can: be emitted by a single mesh shader 1961 workgroup. 1962 * [[limits-maxMeshOutputPrimitives]] pname:maxMeshOutputPrimitives is the 1963 maximum number of primitives which can: be emitted by a single mesh 1964 shader workgroup. 1965 * [[limits-maxMeshOutputLayers]] pname:maxMeshOutputLayers is one greater 1966 than the maximum layer index that can: be output from the mesh shader 1967 stage. 1968 * [[limits-maxMeshMultiviewViewCount]] pname:maxMeshMultiviewViewCount is 1969 one greater than the maximum view index that can: be used by any mesh 1970 shader. 1971 * [[limits-meshOutputPerVertexGranularity]] 1972 pname:meshOutputPerVertexGranularity is the granularity of vertex 1973 allocation. 1974 The number of output vertices allocated for the mesh shader stage is 1975 padded to a multiple of this number. 1976 The value can be used to calculate the required storage size for output 1977 variables in shader modules in the mesh shader stage, which must: be 1978 less than or equal to pname:maxMeshOutputMemorySize. 1979 * [[limits-meshOutputPerPrimitiveGranularity]] 1980 pname:meshOutputPerPrimitiveGranularity is the granularity of primitive 1981 allocation. 1982 The number of output primitives allocated for the mesh shader stage is 1983 padded to a multiple of this number. 1984 The value can be used to calculate the required storage size for output 1985 variables in shader modules in the mesh shader stage, which must: be 1986 less than or equal to pname:maxMeshOutputMemorySize. 1987 * [[limits-maxPreferredTaskWorkGroupInvocations]] 1988 pname:maxPreferredTaskWorkGroupInvocations is the maximum number of task 1989 shader invocations in a single workgroup that is preferred by the 1990 implementation for optimal performance. 1991 The value is guaranteed to be a multiple of a supported subgroup size 1992 for the task shader stage. 1993 * [[limits-maxPreferredMeshWorkGroupInvocations]] 1994 pname:maxPreferredMeshWorkGroupInvocations is the maximum number of mesh 1995 shader invocations in a single workgroup that is preferred by the 1996 implementation for optimal performance. 1997 The value is guaranteed to be a multiple of a supported subgroup size 1998 for the mesh shader stage. 1999 * [[limits-prefersLocalInvocationVertexOutput]] 2000 pname:prefersLocalInvocationVertexOutput specifies whether writes to the 2001 vertex output array in a mesh shader yield best performance when the 2002 array index matches code:LocalInvocationIndex. 2003 * [[limits-prefersLocalInvocationPrimitiveOutput]] 2004 pname:prefersLocalInvocationPrimitiveOutput specifies whether writes to 2005 the primitive output array in a mesh shader yield best performance when 2006 the array index matches code:LocalInvocationIndex. 2007 * [[limits-prefersCompactVertexOutput]] pname:prefersCompactVertexOutput 2008 specifies whether output vertices should be compacted after custom 2009 culling in the mesh shader for best performance, otherwise keeping the 2010 vertices at their original location may be better. 2011 * [[limits-prefersCompactPrimitiveOutput]] 2012 pname:prefersCompactPrimitiveOutput specifies whether output primitives 2013 should be compacted after custom culling in the mesh shader for best 2014 performance, otherwise the use of code:CullPrimitiveEXT may be better. 2015 2016If the sname:VkPhysicalDeviceMeshShaderPropertiesEXT structure is included 2017in the pname:pNext chain of slink:VkPhysicalDeviceProperties2, it is filled 2018with the implementation-dependent limits. 2019 2020include::{generated}/validity/structs/VkPhysicalDeviceMeshShaderPropertiesEXT.adoc[] 2021-- 2022 2023endif::VK_EXT_mesh_shader[] 2024 2025ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2026[open,refpage='VkPhysicalDeviceDescriptorIndexingProperties',desc='Structure describing descriptor indexing properties that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceDescriptorIndexingPropertiesEXT'] 2027-- 2028The sname:VkPhysicalDeviceDescriptorIndexingProperties structure is defined 2029as: 2030 2031include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingProperties.adoc[] 2032 2033ifdef::VK_EXT_descriptor_indexing[] 2034or the equivalent 2035 2036include::{generated}/api/structs/VkPhysicalDeviceDescriptorIndexingPropertiesEXT.adoc[] 2037endif::VK_EXT_descriptor_indexing[] 2038 2039 * pname:sType is a elink:VkStructureType value identifying this structure. 2040 * pname:pNext is `NULL` or a pointer to a structure extending this 2041 structure. 2042 2043// Must have preceding whitespace 2044ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2045ifndef::VK_VERSION_1_2[:anchor-prefix:] 2046// tag::VK_EXT_descriptor_indexing-properties[] 2047 * [[{anchor-prefix}limits-maxUpdateAfterBindDescriptorsInAllPools]] 2048 pname:maxUpdateAfterBindDescriptorsInAllPools is the maximum number of 2049 descriptors (summed over all descriptor types) that can: be created 2050 across all pools that are created with the 2051 ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT bit set. 2052 Pool creation may: fail when this limit is exceeded, or when the space 2053 this limit represents is unable to satisfy a pool creation due to 2054 fragmentation. 2055 * [[{anchor-prefix}limits-shaderUniformBufferArrayNonUniformIndexingNative]] 2056 pname:shaderUniformBufferArrayNonUniformIndexingNative is a boolean 2057 value indicating whether uniform buffer descriptors natively support 2058 nonuniform indexing. 2059 If this is ename:VK_FALSE, then a single dynamic instance of an 2060 instruction that nonuniformly indexes an array of uniform buffers may: 2061 execute multiple times in order to access all the descriptors. 2062 * [[{anchor-prefix}limits-shaderSampledImageArrayNonUniformIndexingNative]] 2063 pname:shaderSampledImageArrayNonUniformIndexingNative is a boolean value 2064 indicating whether sampler and image descriptors natively support 2065 nonuniform indexing. 2066 If this is ename:VK_FALSE, then a single dynamic instance of an 2067 instruction that nonuniformly indexes an array of samplers or images 2068 may: execute multiple times in order to access all the descriptors. 2069 * [[{anchor-prefix}limits-shaderStorageBufferArrayNonUniformIndexingNative]] 2070 pname:shaderStorageBufferArrayNonUniformIndexingNative is a boolean 2071 value indicating whether storage buffer descriptors natively support 2072 nonuniform indexing. 2073 If this is ename:VK_FALSE, then a single dynamic instance of an 2074 instruction that nonuniformly indexes an array of storage buffers may: 2075 execute multiple times in order to access all the descriptors. 2076 * [[{anchor-prefix}limits-shaderStorageImageArrayNonUniformIndexingNative]] 2077 pname:shaderStorageImageArrayNonUniformIndexingNative is a boolean value 2078 indicating whether storage image descriptors natively support nonuniform 2079 indexing. 2080 If this is ename:VK_FALSE, then a single dynamic instance of an 2081 instruction that nonuniformly indexes an array of storage images may: 2082 execute multiple times in order to access all the descriptors. 2083 * [[{anchor-prefix}limits-shaderInputAttachmentArrayNonUniformIndexingNative]] 2084 pname:shaderInputAttachmentArrayNonUniformIndexingNative is a boolean 2085 value indicating whether input attachment descriptors natively support 2086 nonuniform indexing. 2087 If this is ename:VK_FALSE, then a single dynamic instance of an 2088 instruction that nonuniformly indexes an array of input attachments may: 2089 execute multiple times in order to access all the descriptors. 2090 * [[{anchor-prefix}limits-robustBufferAccessUpdateAfterBind]] 2091 pname:robustBufferAccessUpdateAfterBind is a boolean value indicating 2092 whether <<features-robustBufferAccess, pname:robustBufferAccess>> can: 2093 be enabled on a device simultaneously with 2094 pname:descriptorBindingUniformBufferUpdateAfterBind, 2095 pname:descriptorBindingStorageBufferUpdateAfterBind, 2096 pname:descriptorBindingUniformTexelBufferUpdateAfterBind, and/or 2097 pname:descriptorBindingStorageTexelBufferUpdateAfterBind. 2098 If this is ename:VK_FALSE, then either pname:robustBufferAccess must: be 2099 disabled or all of these update-after-bind features must: be disabled. 2100 * [[{anchor-prefix}limits-quadDivergentImplicitLod]] 2101 pname:quadDivergentImplicitLod is a boolean value indicating whether 2102 implicit LOD calculations for image operations have well-defined results 2103 when the image and/or sampler objects used for the instruction are not 2104 uniform within a quad. 2105 See <<textures-derivative-image-operations,Derivative Image 2106 Operations>>. 2107 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindSamplers]] 2108 pname:maxPerStageDescriptorUpdateAfterBindSamplers is similar to 2109 pname:maxPerStageDescriptorSamplers but counts descriptors from 2110 descriptor sets created with or without the 2111 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2112 set. 2113 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindUniformBuffers]] 2114 pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers is similar to 2115 pname:maxPerStageDescriptorUniformBuffers but counts descriptors from 2116 descriptor sets created with or without the 2117 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2118 set. 2119 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindStorageBuffers]] 2120 pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers is similar to 2121 pname:maxPerStageDescriptorStorageBuffers but counts descriptors from 2122 descriptor sets created with or without the 2123 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2124 set. 2125 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindSampledImages]] 2126 pname:maxPerStageDescriptorUpdateAfterBindSampledImages is similar to 2127 pname:maxPerStageDescriptorSampledImages but counts descriptors from 2128 descriptor sets created with or without the 2129 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2130 set. 2131 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindStorageImages]] 2132 pname:maxPerStageDescriptorUpdateAfterBindStorageImages is similar to 2133 pname:maxPerStageDescriptorStorageImages but counts descriptors from 2134 descriptor sets created with or without the 2135 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2136 set. 2137 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindInputAttachments]] 2138 pname:maxPerStageDescriptorUpdateAfterBindInputAttachments is similar to 2139 pname:maxPerStageDescriptorInputAttachments but counts descriptors from 2140 descriptor sets created with or without the 2141 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2142 set. 2143 * [[{anchor-prefix}limits-maxPerStageUpdateAfterBindResources]] 2144 pname:maxPerStageUpdateAfterBindResources is similar to 2145 pname:maxPerStageResources but counts descriptors from descriptor sets 2146 created with or without the 2147 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2148 set. 2149 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindSamplers]] 2150 pname:maxDescriptorSetUpdateAfterBindSamplers is similar to 2151 pname:maxDescriptorSetSamplers but counts descriptors from descriptor 2152 sets created with or without the 2153 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2154 set. 2155 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindUniformBuffers]] 2156 pname:maxDescriptorSetUpdateAfterBindUniformBuffers is similar to 2157 pname:maxDescriptorSetUniformBuffers but counts descriptors from 2158 descriptor sets created with or without the 2159 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2160 set. 2161 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindUniformBuffersDynamic]] 2162 pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic is similar to 2163 pname:maxDescriptorSetUniformBuffersDynamic but counts descriptors from 2164 descriptor sets created with or without the 2165 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2166 set. 2167 While an application can: allocate dynamic uniform buffer descriptors 2168 from a pool created with the 2169 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, 2170 bindings for these descriptors must: not be present in any descriptor 2171 set layout that includes bindings created with 2172 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. 2173 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindStorageBuffers]] 2174 pname:maxDescriptorSetUpdateAfterBindStorageBuffers is similar to 2175 pname:maxDescriptorSetStorageBuffers but counts descriptors from 2176 descriptor sets created with or without the 2177 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2178 set. 2179 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindStorageBuffersDynamic]] 2180 pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic is similar to 2181 pname:maxDescriptorSetStorageBuffersDynamic but counts descriptors from 2182 descriptor sets created with or without the 2183 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2184 set. 2185 While an application can: allocate dynamic storage buffer descriptors 2186 from a pool created with the 2187 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, 2188 bindings for these descriptors must: not be present in any descriptor 2189 set layout that includes bindings created with 2190 ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT. 2191 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindSampledImages]] 2192 pname:maxDescriptorSetUpdateAfterBindSampledImages is similar to 2193 pname:maxDescriptorSetSampledImages but counts descriptors from 2194 descriptor sets created with or without the 2195 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2196 set. 2197 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindStorageImages]] 2198 pname:maxDescriptorSetUpdateAfterBindStorageImages is similar to 2199 pname:maxDescriptorSetStorageImages but counts descriptors from 2200 descriptor sets created with or without the 2201 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2202 set. 2203 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindInputAttachments]] 2204 pname:maxDescriptorSetUpdateAfterBindInputAttachments is similar to 2205 pname:maxDescriptorSetInputAttachments but counts descriptors from 2206 descriptor sets created with or without the 2207 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2208 set. 2209// end::VK_EXT_descriptor_indexing-properties[] 2210 2211:refpage: VkPhysicalDeviceDescriptorIndexingProperties 2212include::{chapters}/limits.adoc[tag=limits_desc] 2213 2214include::{generated}/validity/structs/VkPhysicalDeviceDescriptorIndexingProperties.adoc[] 2215-- 2216endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2217 2218ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 2219[open,refpage='VkPhysicalDeviceInlineUniformBlockProperties',desc='Structure describing inline uniform block properties that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceInlineUniformBlockPropertiesEXT'] 2220-- 2221The sname:VkPhysicalDeviceInlineUniformBlockProperties structure is defined 2222as: 2223 2224include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockProperties.adoc[] 2225 2226ifdef::VK_EXT_inline_uniform_block[] 2227or the equivalent 2228 2229include::{generated}/api/structs/VkPhysicalDeviceInlineUniformBlockPropertiesEXT.adoc[] 2230endif::VK_EXT_inline_uniform_block[] 2231 2232 * pname:sType is a elink:VkStructureType value identifying this structure. 2233 * pname:pNext is `NULL` or a pointer to a structure extending this 2234 structure. 2235 2236// Must have preceding whitespace 2237ifdef::VK_VERSION_1_3[:anchor-prefix: extension-] 2238ifndef::VK_VERSION_1_3[:anchor-prefix:] 2239// tag::VK_EXT_inline_uniform_block-properties[] 2240 * [[{anchor-prefix}limits-maxInlineUniformBlockSize]] 2241 pname:maxInlineUniformBlockSize is the maximum size in bytes of an 2242 <<descriptorsets-inlineuniformblock, inline uniform block>> binding. 2243 * [[{anchor-prefix}limits-maxPerStageDescriptorInlineUniformBlocks]] 2244 pname:maxPerStageDescriptorInlineUniformBlocks is the maximum number of 2245 inline uniform block bindings that can: be accessible to a single shader 2246 stage in a pipeline layout. 2247 Descriptor bindings with a descriptor type of 2248 ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK count against this limit. 2249ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2250 Only descriptor bindings in descriptor set layouts created without the 2251 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 2252 count against this limit. 2253endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2254 * [[{anchor-prefix}limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks]] 2255 pname:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks 2256ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2257 equals pname:maxPerStageDescriptorInlineUniformBlocks and is reserved 2258 for future use. 2259endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2260ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2261 is similar to pname:maxPerStageDescriptorInlineUniformBlocks but counts 2262 descriptor bindings from descriptor sets created with or without the 2263 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2264 set. 2265endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2266 * [[{anchor-prefix}limits-maxDescriptorSetInlineUniformBlocks]] 2267 pname:maxDescriptorSetInlineUniformBlocks is the maximum number of 2268 inline uniform block bindings that can: be included in descriptor 2269 bindings in a pipeline layout across all pipeline shader stages and 2270 descriptor set numbers. 2271 Descriptor bindings with a descriptor type of 2272 ename:VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK count against this limit. 2273ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2274 Only descriptor bindings in descriptor set layouts created without the 2275 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 2276 count against this limit. 2277endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2278 * [[{anchor-prefix}limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks]] 2279 pname:maxDescriptorSetUpdateAfterBindInlineUniformBlocks 2280ifndef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2281 equals pname:maxDescriptorSetInlineUniformBlocks and is reserved for 2282 future use. 2283endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2284ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2285 is similar to pname:maxDescriptorSetInlineUniformBlocks but counts 2286 descriptor bindings from descriptor sets created with or without the 2287 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2288 set. 2289endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 2290// end::VK_EXT_inline_uniform_block-properties[] 2291 2292:refpage: VkPhysicalDeviceInlineUniformBlockProperties 2293include::{chapters}/limits.adoc[tag=limits_desc] 2294 2295include::{generated}/validity/structs/VkPhysicalDeviceInlineUniformBlockProperties.adoc[] 2296-- 2297endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 2298 2299ifdef::VK_EXT_conservative_rasterization[] 2300[open,refpage='VkPhysicalDeviceConservativeRasterizationPropertiesEXT',desc='Structure describing conservative raster properties that can be supported by an implementation',type='structs'] 2301-- 2302The sname:VkPhysicalDeviceConservativeRasterizationPropertiesEXT structure 2303is defined as: 2304 2305include::{generated}/api/structs/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.adoc[] 2306 2307 * pname:sType is a elink:VkStructureType value identifying this structure. 2308 * pname:pNext is `NULL` or a pointer to a structure extending this 2309 structure. 2310 * [[limits-primitiveOverestimationSize]] pname:primitiveOverestimationSize 2311 is the size in pixels the generating primitive is increased at each of 2312 its edges during conservative rasterization overestimation mode. 2313 Even with a size of 0.0, conservative rasterization overestimation rules 2314 still apply and if any part of the pixel rectangle is covered by the 2315 generating primitive, fragments are generated for the entire pixel. 2316 However implementations may: make the pixel coverage area even more 2317 conservative by increasing the size of the generating primitive. 2318 * [[limits-maxExtraPrimitiveOverestimationSize]] 2319 pname:maxExtraPrimitiveOverestimationSize is the maximum size in pixels 2320 of extra overestimation the implementation supports in the pipeline 2321 state. 2322 A value of 0.0 means the implementation does not support any additional 2323 overestimation of the generating primitive during conservative 2324 rasterization. 2325 A value above 0.0 allows the application to further increase the size of 2326 the generating primitive during conservative rasterization 2327 overestimation. 2328 * [[limits-extraPrimitiveOverestimationSizeGranularity]] 2329 pname:extraPrimitiveOverestimationSizeGranularity is the granularity of 2330 extra overestimation that can be specified in the pipeline state between 2331 0.0 and pname:maxExtraPrimitiveOverestimationSize inclusive. 2332 A value of 0.0 means the implementation can use the smallest 2333 representable non-zero value in the screen space pixel fixed-point grid. 2334 * [[limits-primitiveUnderestimation]] pname:primitiveUnderestimation is 2335 ename:VK_TRUE if the implementation supports the 2336 ename:VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT conservative 2337 rasterization mode in addition to 2338 ename:VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT. 2339 Otherwise the implementation only supports 2340 ename:VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT. 2341 * [[limits-conservativePointAndLineRasterization]] 2342 pname:conservativePointAndLineRasterization is ename:VK_TRUE if the 2343 implementation supports conservative rasterization of point and line 2344 primitives as well as triangle primitives. 2345 Otherwise the implementation only supports triangle primitives. 2346 * [[limits-degenerateTrianglesRasterized]] 2347 pname:degenerateTrianglesRasterized is ename:VK_FALSE if the 2348 implementation culls primitives generated from triangles that become 2349 zero area after they are quantized to the fixed-point rasterization 2350 pixel grid. 2351 pname:degenerateTrianglesRasterized is ename:VK_TRUE if these primitives 2352 are not culled and the provoking vertex attributes and depth value are 2353 used for the fragments. 2354 The primitive area calculation is done on the primitive generated from 2355 the clipped triangle if applicable. 2356 Zero area primitives are backfacing and the application can: enable 2357 backface culling if desired. 2358 * [[limits-degenerateLinesRasterized]] pname:degenerateLinesRasterized is 2359 ename:VK_FALSE if the implementation culls lines that become zero length 2360 after they are quantized to the fixed-point rasterization pixel grid. 2361 pname:degenerateLinesRasterized is ename:VK_TRUE if zero length lines 2362 are not culled and the provoking vertex attributes and depth value are 2363 used for the fragments. 2364 * [[limits-fullyCoveredFragmentShaderInputVariable]] 2365 pname:fullyCoveredFragmentShaderInputVariable is ename:VK_TRUE if the 2366 implementation supports the SPIR-V builtin fragment shader input 2367 variable code:FullyCoveredEXT specifying that conservative rasterization 2368 is enabled and the fragment area is fully covered by the generating 2369 primitive. 2370 * [[limits-conservativeRasterizationPostDepthCoverage]] 2371ifdef::VK_EXT_post_depth_coverage[] 2372 pname:conservativeRasterizationPostDepthCoverage is ename:VK_TRUE if the 2373 implementation supports conservative rasterization with the 2374 code:PostDepthCoverage execution mode enabled. 2375 Otherwise the code:PostDepthCoverage execution mode must: not be used 2376 when conservative rasterization is enabled. 2377endif::VK_EXT_post_depth_coverage[] 2378ifndef::VK_EXT_post_depth_coverage[] 2379 pname:conservativeRasterizationPostDepthCoverage must: be 2380 ename:VK_FALSE. 2381endif::VK_EXT_post_depth_coverage[] 2382 2383:refpage: VkPhysicalDeviceConservativeRasterizationPropertiesEXT 2384include::{chapters}/limits.adoc[tag=limits_desc] 2385 2386include::{generated}/validity/structs/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.adoc[] 2387-- 2388endif::VK_EXT_conservative_rasterization[] 2389 2390ifdef::VK_EXT_fragment_density_map[] 2391[open,refpage='VkPhysicalDeviceFragmentDensityMapPropertiesEXT',desc='Structure describing fragment density map properties that can be supported by an implementation',type='structs'] 2392-- 2393The sname:VkPhysicalDeviceFragmentDensityMapPropertiesEXT structure is 2394defined as: 2395 2396include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.adoc[] 2397 2398 * pname:sType is a elink:VkStructureType value identifying this structure. 2399 * pname:pNext is `NULL` or a pointer to a structure extending this 2400 structure. 2401 * [[limits-minFragmentDensityTexelSize]] pname:minFragmentDensityTexelSize 2402 is the minimum <<glossary-fragment-density-texel-size,fragment density 2403 texel size>>. 2404 * [[limits-maxFragmentDensityTexelSize]] pname:maxFragmentDensityTexelSize 2405 is the maximum fragment density texel size. 2406 * [[limits-fragmentDensityInvocations]] pname:fragmentDensityInvocations 2407 specifies whether the implementation may: invoke additional fragment 2408 shader invocations for each covered sample. 2409 2410:refpage: VkPhysicalDeviceFragmentDensityMapPropertiesEXT 2411include::{chapters}/limits.adoc[tag=limits_desc] 2412 2413include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.adoc[] 2414-- 2415 2416ifdef::VK_EXT_fragment_density_map2[] 2417[open,refpage='VkPhysicalDeviceFragmentDensityMap2PropertiesEXT',desc='Structure describing additional fragment density map properties that can be supported by an implementation',type='structs'] 2418-- 2419The sname:VkPhysicalDeviceFragmentDensityMap2PropertiesEXT structure is 2420defined as: 2421 2422include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.adoc[] 2423 2424 * pname:sType is a elink:VkStructureType value identifying this structure. 2425 * pname:pNext is `NULL` or a pointer to a structure extending this 2426 structure. 2427 * [[limits-subsampledLoads]] pname:subsampledLoads specifies if performing 2428 image data read with load operations on subsampled attachments will be 2429 resampled to the fragment density of the render pass 2430 * [[limits-subsampledCoarseReconstructionEarlyAccess]] 2431 pname:subsampledCoarseReconstructionEarlyAccess specifies if performing 2432 image data read with samplers created with pname:flags containing 2433 ename:VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT in 2434 fragment shader will trigger additional reads during 2435 ename:VK_PIPELINE_STAGE_VERTEX_SHADER_BIT 2436 * [[limits-maxSubsampledArrayLayers]] pname:maxSubsampledArrayLayers is 2437 the maximum number of slink:VkImageView array layers for usages 2438 supporting subsampled samplers 2439 * [[limits-maxDescriptorSetSubsampledSamplers]] 2440 pname:maxDescriptorSetSubsampledSamplers is the maximum number of 2441 subsampled samplers that can: be included in a slink:VkPipelineLayout 2442 2443:refpage: VkPhysicalDeviceFragmentDensityMap2PropertiesEXT 2444include::{chapters}/limits.adoc[tag=limits_desc] 2445 2446include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.adoc[] 2447-- 2448endif::VK_EXT_fragment_density_map2[] 2449 2450ifdef::VK_QCOM_fragment_density_map_offset[] 2451[open,refpage='VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM',desc='Structure describing fragment density map offset properties that can be supported by an implementation',type='structs'] 2452-- 2453The sname:VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM structure 2454is defined as: 2455 2456include::{generated}/api/structs/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.adoc[] 2457 2458 * pname:sType is a elink:VkStructureType value identifying this structure. 2459 * pname:pNext is `NULL` or a pointer to a structure extending this 2460 structure. 2461 * [[limits-fragmentdensityoffsetgranularity]] 2462 pname:fragmentDensityOffsetGranularity is the granularity for 2463 <<renderpass-fragmentdensitymapoffsets,fragment density offsets>>. 2464 2465:refpage: VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM 2466include::{chapters}/limits.adoc[tag=limits_desc] 2467 2468include::{generated}/validity/structs/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM.adoc[] 2469-- 2470endif::VK_QCOM_fragment_density_map_offset[] 2471endif::VK_EXT_fragment_density_map[] 2472 2473ifdef::VK_AMD_shader_core_properties[] 2474[open,refpage='VkPhysicalDeviceShaderCorePropertiesAMD',desc='Structure describing shader core properties that can be supported by an implementation',type='structs'] 2475-- 2476The sname:VkPhysicalDeviceShaderCorePropertiesAMD structure is defined as: 2477 2478include::{generated}/api/structs/VkPhysicalDeviceShaderCorePropertiesAMD.adoc[] 2479 2480 * pname:sType is a elink:VkStructureType value identifying this structure. 2481 * pname:pNext is `NULL` or a pointer to a structure extending this 2482 structure. 2483 * [[limits-shaderEngineCount]] pname:shaderEngineCount is an unsigned 2484 integer value indicating the number of shader engines found inside the 2485 shader core of the physical device. 2486 * [[limits-shaderArraysPerEngineCount]] pname:shaderArraysPerEngineCount 2487 is an unsigned integer value indicating the number of shader arrays 2488 inside a shader engine. 2489 Each shader array has its own scan converter, set of compute units, and 2490 a render back end (color and depth attachments). 2491 Shader arrays within a shader engine share shader processor input (wave 2492 launcher) and shader export (export buffer) units. 2493 Currently, a shader engine can have one or two shader arrays. 2494 * [[limits-computeUnitsPerShaderArray]] pname:computeUnitsPerShaderArray 2495 is an unsigned integer value indicating the physical number of compute 2496 units within a shader array. 2497 The active number of compute units in a shader array may: be lower. 2498 A compute unit houses a set of SIMDs along with a sequencer module and a 2499 local data store. 2500 * [[limits-simdPerComputeUnit]] pname:simdPerComputeUnit is an unsigned 2501 integer value indicating the number of SIMDs inside a compute unit. 2502 Each SIMD processes a single instruction at a time. 2503 * [[limits-wavefrontSize]] pname:wavefrontSize is an unsigned integer 2504 value indicating the maximum size of a subgroup. 2505 * [[limits-sgprsPerSimd]] pname:sgprsPerSimd is an unsigned integer value 2506 indicating the number of physical Scalar General-Purpose Registers 2507 (SGPRs) per SIMD. 2508 * [[limits-minSgprAllocation]] pname:minSgprAllocation is an unsigned 2509 integer value indicating the minimum number of SGPRs allocated for a 2510 wave. 2511 * [[limits-maxSgprAllocation]] pname:maxSgprAllocation is an unsigned 2512 integer value indicating the maximum number of SGPRs allocated for a 2513 wave. 2514 * [[limits-sgprAllocationGranularity]] pname:sgprAllocationGranularity is 2515 an unsigned integer value indicating the granularity of SGPR allocation 2516 for a wave. 2517 * [[limits-vgprsPerSimd]] pname:vgprsPerSimd is an unsigned integer value 2518 indicating the number of physical Vector General-Purpose Registers 2519 (VGPRs) per SIMD. 2520 * [[limits-minVgprAllocation]] pname:minVgprAllocation is an unsigned 2521 integer value indicating the minimum number of VGPRs allocated for a 2522 wave. 2523 * [[limits-maxVgprAllocation]] pname:maxVgprAllocation is an unsigned 2524 integer value indicating the maximum number of VGPRs allocated for a 2525 wave. 2526 * [[limits-vgprAllocationGranularity]] pname:vgprAllocationGranularity is 2527 an unsigned integer value indicating the granularity of VGPR allocation 2528 for a wave. 2529 2530:refpage: VkPhysicalDeviceShaderCorePropertiesAMD 2531include::{chapters}/limits.adoc[tag=limits_desc] 2532 2533include::{generated}/validity/structs/VkPhysicalDeviceShaderCorePropertiesAMD.adoc[] 2534-- 2535endif::VK_AMD_shader_core_properties[] 2536 2537ifdef::VK_AMD_shader_core_properties2[] 2538[open,refpage='VkPhysicalDeviceShaderCoreProperties2AMD',desc='Structure describing shader core properties that can be supported by an implementation',type='structs'] 2539-- 2540The sname:VkPhysicalDeviceShaderCoreProperties2AMD structure is defined as: 2541 2542include::{generated}/api/structs/VkPhysicalDeviceShaderCoreProperties2AMD.adoc[] 2543 2544 * pname:sType is a elink:VkStructureType value identifying this structure. 2545 * pname:pNext is `NULL` or a pointer to a structure extending this 2546 structure. 2547 * [[features-shaderCoreFeatures]] pname:shaderCoreFeatures is a bitmask of 2548 elink:VkShaderCorePropertiesFlagBitsAMD indicating the set of features 2549 supported by the shader core. 2550 * [[limits-activeComputeUnitCount]] pname:activeComputeUnitCount is an 2551 unsigned integer value indicating the number of compute units that have 2552 been enabled. 2553 2554:refpage: VkPhysicalDeviceShaderCoreProperties2AMD 2555include::{chapters}/limits.adoc[tag=limits_desc] 2556 2557include::{generated}/validity/structs/VkPhysicalDeviceShaderCoreProperties2AMD.adoc[] 2558-- 2559 2560[open,refpage='VkShaderCorePropertiesFlagBitsAMD',desc='Bitmask specifying shader core properties',type='enums',xrefs='VkPhysicalDeviceShaderCoreProperties2AMD VkShaderCorePropertiesFlagsAMD'] 2561-- 2562Bits for this type may: be defined by future extensions, or new versions of 2563the `apiext:VK_AMD_shader_core_properties2` extension. 2564Possible values of the pname:flags member of 2565tlink:VkShaderCorePropertiesFlagsAMD are: 2566 2567include::{generated}/api/enums/VkShaderCorePropertiesFlagBitsAMD.adoc[] 2568-- 2569 2570[open,refpage='VkShaderCorePropertiesFlagsAMD',desc='Bitmask of VkShaderCorePropertiesFlagBitsAMD',type='flags',xrefs='VkPhysicalDeviceShaderCoreProperties2AMD VkShaderCorePropertiesFlagBitsAMD'] 2571-- 2572include::{generated}/api/flags/VkShaderCorePropertiesFlagsAMD.adoc[] 2573 2574tname:VkShaderCorePropertiesFlagsAMD is a bitmask type for providing zero or 2575more elink:VkShaderCorePropertiesFlagBitsAMD. 2576-- 2577endif::VK_AMD_shader_core_properties2[] 2578 2579ifdef::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[] 2580[open,refpage='VkPhysicalDeviceDepthStencilResolveProperties',desc='Structure describing depth/stencil resolve properties that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceDepthStencilResolvePropertiesKHR'] 2581-- 2582The sname:VkPhysicalDeviceDepthStencilResolveProperties structure is defined 2583as: 2584 2585include::{generated}/api/structs/VkPhysicalDeviceDepthStencilResolveProperties.adoc[] 2586 2587ifdef::VK_KHR_depth_stencil_resolve[] 2588or the equivalent 2589 2590include::{generated}/api/structs/VkPhysicalDeviceDepthStencilResolvePropertiesKHR.adoc[] 2591endif::VK_KHR_depth_stencil_resolve[] 2592 2593 * pname:sType is a elink:VkStructureType value identifying this structure. 2594 * pname:pNext is `NULL` or a pointer to a structure extending this 2595 structure. 2596 2597// Must have preceding whitespace 2598ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 2599ifndef::VK_VERSION_1_2[:anchor-prefix:] 2600// tag::VK_KHR_depth_stencil_resolve-properties[] 2601 * [[{anchor-prefix}features-depthResolveModes]] 2602 pname:supportedDepthResolveModes is a bitmask of 2603 elink:VkResolveModeFlagBits indicating the set of supported depth 2604 resolve modes. 2605ifdef::VKSC_VERSION_1_0[] 2606 A value of ename:VK_RESOLVE_MODE_NONE indicates that depth resolve 2607 operations are disallowed <<SCID-8>>. 2608 If any bits are set then 2609ifdef::hidden[] 2610// tag::scdeviation[] 2611 * slink:VkPhysicalDeviceVulkan12Properties::pname:supportedDepthResolveModes 2612 may: be only ename:VK_RESOLVE_MODE_NONE <<SCID-8>>. 2613// end::scdeviation[] 2614endif::hidden[] 2615endif::VKSC_VERSION_1_0[] 2616 ename:VK_RESOLVE_MODE_SAMPLE_ZERO_BIT must: be included in the set but 2617 implementations may: support additional modes. 2618 * [[{anchor-prefix}features-stencilResolveModes]] 2619 pname:supportedStencilResolveModes is a bitmask of 2620 elink:VkResolveModeFlagBits indicating the set of supported stencil 2621 resolve modes. 2622ifdef::VKSC_VERSION_1_0[] 2623 A value of ename:VK_RESOLVE_MODE_NONE indicates that stencil resolve 2624 operations are disallowed <<SCID-8>>. 2625 If any bits are set then 2626ifdef::hidden[] 2627// tag::scdeviation[] 2628 * slink:VkPhysicalDeviceVulkan12Properties::pname:supportedStencilResolveModes 2629 may: be only ename:VK_RESOLVE_MODE_NONE <<SCID-8>>. 2630// end::scdeviation[] 2631endif::hidden[] 2632endif::VKSC_VERSION_1_0[] 2633 ename:VK_RESOLVE_MODE_SAMPLE_ZERO_BIT must: be included in the set but 2634 implementations may: support additional modes. 2635 ename:VK_RESOLVE_MODE_AVERAGE_BIT must: not be included in the set. 2636 * [[{anchor-prefix}features-independentResolveNone]] 2637 pname:independentResolveNone is ename:VK_TRUE if the implementation 2638 supports setting the depth and stencil resolve modes to different values 2639 when one of those modes is ename:VK_RESOLVE_MODE_NONE. 2640 Otherwise the implementation only supports setting both modes to the 2641 same value. 2642 * [[{anchor-prefix}features-independentResolve]] pname:independentResolve 2643 is ename:VK_TRUE if the implementation supports all combinations of the 2644 supported depth and stencil resolve modes, including setting either 2645 depth or stencil resolve mode to ename:VK_RESOLVE_MODE_NONE. 2646 An implementation that supports pname:independentResolve must: also 2647 support pname:independentResolveNone. 2648// end::VK_KHR_depth_stencil_resolve-properties[] 2649 2650:refpage: VkPhysicalDeviceDepthStencilResolveProperties 2651include::{chapters}/limits.adoc[tag=limits_desc] 2652 2653include::{generated}/validity/structs/VkPhysicalDeviceDepthStencilResolveProperties.adoc[] 2654-- 2655endif::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[] 2656 2657ifdef::VK_KHR_performance_query[] 2658include::{chapters}/VK_KHR_performance_query/props.adoc[] 2659endif::VK_KHR_performance_query[] 2660 2661ifdef::VK_NV_shading_rate_image[] 2662[open,refpage='VkPhysicalDeviceShadingRateImagePropertiesNV',desc='Structure describing shading rate image limits that can be supported by an implementation',type='structs'] 2663-- 2664The sname:VkPhysicalDeviceShadingRateImagePropertiesNV structure is defined 2665as: 2666 2667include::{generated}/api/structs/VkPhysicalDeviceShadingRateImagePropertiesNV.adoc[] 2668 2669 * pname:sType is a elink:VkStructureType value identifying this structure. 2670 * pname:pNext is `NULL` or a pointer to a structure extending this 2671 structure. 2672 * [[limits-shadingRateTexelSize]] pname:shadingRateTexelSize indicates the 2673 width and height of the portion of the framebuffer corresponding to each 2674 texel in the shading rate image. 2675 * [[limits-shadingRatePaletteSize]] pname:shadingRatePaletteSize indicates 2676 the maximum number of palette entries supported for the shading rate 2677 image. 2678 * [[limits-shadingRateMaxCoarseSamples]] pname:shadingRateMaxCoarseSamples 2679 specifies the maximum number of coverage samples supported in a single 2680 fragment. 2681 If the product of the fragment size derived from the base shading rate 2682 and the number of coverage samples per pixel exceeds this limit, the 2683 final shading rate will be adjusted so that its product does not exceed 2684 the limit. 2685 2686:refpage: VkPhysicalDeviceShadingRateImagePropertiesNV 2687include::{chapters}/limits.adoc[tag=limits_desc] 2688 2689These properties are related to the <<primsrast-shading-rate-image, shading 2690rate image>> feature. 2691 2692include::{generated}/validity/structs/VkPhysicalDeviceShadingRateImagePropertiesNV.adoc[] 2693-- 2694endif::VK_NV_shading_rate_image[] 2695 2696ifdef::VK_NV_memory_decompression[] 2697[open,refpage='VkPhysicalDeviceMemoryDecompressionPropertiesNV',desc='Structure describing supported memory decompression methods by an implementation',type='structs'] 2698-- 2699The sname:VkPhysicalDeviceMemoryDecompressionPropertiesNV structure is 2700defined as: 2701 2702include::{generated}/api/structs/VkPhysicalDeviceMemoryDecompressionPropertiesNV.adoc[] 2703 2704 * pname:sType is a elink:VkStructureType value identifying this structure. 2705 * pname:pNext is `NULL` or a pointer to a structure extending this 2706 structure. 2707 * pname:decompressionMethods is a bitmask of 2708 elink:VkMemoryDecompressionMethodFlagBitsNV specifying memory 2709 decompression methods supported by the implementation. 2710 * pname:maxDecompressionIndirectCount specifies the maximum supported 2711 count value in the pname:countBuffer of 2712 flink:vkCmdDecompressMemoryIndirectCountNV 2713 2714:refpage: VkPhysicalDeviceMemoryDecompressionPropertiesNV 2715include::{chapters}/limits.adoc[tag=limits_desc] 2716 2717include::{generated}/validity/structs/VkPhysicalDeviceMemoryDecompressionPropertiesNV.adoc[] 2718-- 2719endif::VK_NV_memory_decompression[] 2720 2721ifdef::VK_EXT_transform_feedback[] 2722[open,refpage='VkPhysicalDeviceTransformFeedbackPropertiesEXT',desc='Structure describing transform feedback properties that can be supported by an implementation',type='structs'] 2723-- 2724The sname:VkPhysicalDeviceTransformFeedbackPropertiesEXT structure is 2725defined as: 2726 2727include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackPropertiesEXT.adoc[] 2728 2729 * pname:sType is a elink:VkStructureType value identifying this structure. 2730 * pname:pNext is `NULL` or a pointer to a structure extending this 2731 structure. 2732 * [[limits-maxTransformFeedbackStreams]] pname:maxTransformFeedbackStreams 2733 is the maximum number of vertex streams that can be output from geometry 2734 shaders declared with the code:GeometryStreams capability. 2735 If the implementation does not support 2736 sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams 2737 then pname:maxTransformFeedbackStreams must: be set to `1`. 2738 * [[limits-maxTransformFeedbackBuffers]] pname:maxTransformFeedbackBuffers 2739 is the maximum number of transform feedback buffers that can be bound 2740 for capturing shader outputs from the last 2741 <<pipelines-graphics-subsets-pre-rasterization,pre-rasterization shader 2742 stage>>. 2743 * [[limits-maxTransformFeedbackBufferSize]] 2744 pname:maxTransformFeedbackBufferSize is the maximum size that can be 2745 specified when binding a buffer for transform feedback in 2746 flink:vkCmdBindTransformFeedbackBuffersEXT. 2747 * [[limits-maxTransformFeedbackStreamDataSize]] 2748 pname:maxTransformFeedbackStreamDataSize is the maximum amount of data 2749 in bytes for each vertex that captured to one or more transform feedback 2750 buffers associated with a specific vertex stream. 2751 * [[limits-maxTransformFeedbackBufferDataSize]] 2752 pname:maxTransformFeedbackBufferDataSize is the maximum amount of data 2753 in bytes for each vertex that can be captured to a specific transform 2754 feedback buffer. 2755 * [[limits-maxTransformFeedbackBufferDataStride]] 2756 pname:maxTransformFeedbackBufferDataStride is the maximum stride between 2757 each capture of vertex data to the buffer. 2758 * [[limits-transformFeedbackQueries]] pname:transformFeedbackQueries is 2759 ename:VK_TRUE if the implementation supports the 2760 ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT query type. 2761 pname:transformFeedbackQueries is ename:VK_FALSE if queries of this type 2762 cannot: be created. 2763 * [[limits-transformFeedbackStreamsLinesTriangles]] 2764 pname:transformFeedbackStreamsLinesTriangles is ename:VK_TRUE if the 2765 implementation supports the geometry shader code:OpExecutionMode of 2766 code:OutputLineStrip and code:OutputTriangleStrip in addition to 2767 code:OutputPoints when more than one vertex stream is output. 2768 If pname:transformFeedbackStreamsLinesTriangles is ename:VK_FALSE the 2769 implementation only supports an code:OpExecutionMode of 2770 code:OutputPoints when more than one vertex stream is output from the 2771 geometry shader. 2772 * [[limits-transformFeedbackRasterizationStreamSelect]] 2773 pname:transformFeedbackRasterizationStreamSelect is ename:VK_TRUE if the 2774 implementation supports the code:GeometryStreams SPIR-V capability and 2775 the application can use 2776 slink:VkPipelineRasterizationStateStreamCreateInfoEXT to modify which 2777 vertex stream output is used for rasterization. 2778 Otherwise vertex stream `0` must: always be used for rasterization. 2779 * [[limits-transformFeedbackDraw]] pname:transformFeedbackDraw is 2780 ename:VK_TRUE if the implementation supports the 2781 flink:vkCmdDrawIndirectByteCountEXT function otherwise the function 2782 must: not be called. 2783 2784:refpage: VkPhysicalDeviceTransformFeedbackPropertiesEXT 2785include::{chapters}/limits.adoc[tag=limits_desc] 2786 2787include::{generated}/validity/structs/VkPhysicalDeviceTransformFeedbackPropertiesEXT.adoc[] 2788-- 2789endif::VK_EXT_transform_feedback[] 2790 2791ifdef::VK_NV_copy_memory_indirect[] 2792[open,refpage='VkPhysicalDeviceCopyMemoryIndirectPropertiesNV',desc='Structure describing supported queues for indirect copy',type='structs'] 2793-- 2794The sname:VkPhysicalDeviceCopyMemoryIndirectPropertiesNV structure is 2795defined as: 2796 2797include::{generated}/api/structs/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.adoc[] 2798 2799 * pname:sType is a elink:VkStructureType value identifying this structure. 2800 * pname:pNext is `NULL` or a pointer to a structure extending this 2801 structure. 2802 * pname:supportedQueues is a bitmask of elink:VkQueueFlagBits indicating 2803 the queues on which <<indirect-copies, indirect copy commands>> are 2804 supported. 2805 2806If the <<features-indirectCopy, pname:indirectCopy>> feature is supported, 2807pname:supportedQueues must: return at least one supported queue. 2808 2809:refpage: VkPhysicalDeviceCopyMemoryIndirectPropertiesNV 2810include::{chapters}/limits.adoc[tag=limits_desc] 2811 2812include::{generated}/validity/structs/VkPhysicalDeviceCopyMemoryIndirectPropertiesNV.adoc[] 2813-- 2814endif::VK_NV_copy_memory_indirect[] 2815 2816ifdef::VK_NV_ray_tracing[] 2817[open,refpage='VkPhysicalDeviceRayTracingPropertiesNV',desc='Properties of the physical device for ray tracing',type='structs'] 2818-- 2819The sname:VkPhysicalDeviceRayTracingPropertiesNV structure is defined as: 2820 2821include::{generated}/api/structs/VkPhysicalDeviceRayTracingPropertiesNV.adoc[] 2822 2823 * pname:sType is a elink:VkStructureType value identifying this structure. 2824 * pname:pNext is `NULL` or a pointer to a structure extending this 2825 structure. 2826 * pname:shaderGroupHandleSize is the size in bytes of the shader header. 2827 * [[limits-maxRecursionDepth]] pname:maxRecursionDepth is the maximum 2828 number of levels of recursion allowed in a trace command. 2829 * pname:maxShaderGroupStride is the maximum stride in bytes allowed 2830 between shader groups in the shader binding table. 2831 * pname:shaderGroupBaseAlignment is the required: alignment in bytes for 2832 the base of the shader binding table. 2833 * pname:maxGeometryCount is the maximum number of geometries in the bottom 2834 level acceleration structure. 2835 * pname:maxInstanceCount is the maximum number of instances in the top 2836 level acceleration structure. 2837 * pname:maxTriangleCount is the maximum number of triangles in all 2838 geometries in the bottom level acceleration structure. 2839 * pname:maxDescriptorSetAccelerationStructures is the maximum number of 2840 acceleration structure descriptors that are allowed in a descriptor set. 2841 2842Due to the fact that the geometry, instance, and triangle counts are 2843specified at acceleration structure creation as 32-bit values, 2844pname:maxGeometryCount, pname:maxInstanceCount, and pname:maxTriangleCount 2845must: not exceed [eq]#2^32^-1#. 2846 2847:refpage: VkPhysicalDeviceRayTracingPropertiesNV 2848include::{chapters}/limits.adoc[tag=limits_desc] 2849 2850ifdef::VK_KHR_ray_tracing_pipeline[] 2851Limits specified by this structure must: match those specified with the same 2852name in slink:VkPhysicalDeviceAccelerationStructurePropertiesKHR and 2853slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR. 2854endif::VK_KHR_ray_tracing_pipeline[] 2855 2856include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPropertiesNV.adoc[] 2857-- 2858endif::VK_NV_ray_tracing[] 2859 2860ifdef::VK_KHR_acceleration_structure[] 2861[open,refpage='VkPhysicalDeviceAccelerationStructurePropertiesKHR',desc='Properties of the physical device for acceleration structure',type='structs'] 2862-- 2863The sname:VkPhysicalDeviceAccelerationStructurePropertiesKHR structure is 2864defined as: 2865 2866include::{generated}/api/structs/VkPhysicalDeviceAccelerationStructurePropertiesKHR.adoc[] 2867 2868 * pname:sType is a elink:VkStructureType value identifying this structure. 2869 * pname:pNext is `NULL` or a pointer to a structure extending this 2870 structure. 2871 * [[limits-maxGeometryCount]] pname:maxGeometryCount is the maximum number 2872 of geometries in the bottom level acceleration structure. 2873 * [[limits-maxInstanceCount]] pname:maxInstanceCount is the maximum number 2874 of instances in the top level acceleration structure. 2875 * [[limits-maxPrimitiveCount]] pname:maxPrimitiveCount is the maximum 2876 number of triangles or AABBs in all geometries in the bottom level 2877 acceleration structure. 2878 * [[limits-maxPerStageDescriptorAccelerationStructures]] 2879 pname:maxPerStageDescriptorAccelerationStructures is the maximum number 2880 of acceleration structure bindings that can: be accessible to a single 2881 shader stage in a pipeline layout. 2882 Descriptor bindings with a descriptor type of 2883 ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR count against this 2884 limit. 2885 Only descriptor bindings in descriptor set layouts created without the 2886 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 2887 count against this limit. 2888 * [[limits-maxPerStageDescriptorUpdateAfterBindAccelerationStructures]] 2889 pname:maxPerStageDescriptorUpdateAfterBindAccelerationStructures is 2890 similar to pname:maxPerStageDescriptorAccelerationStructures but counts 2891 descriptor bindings from descriptor sets created with or without the 2892 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2893 set. 2894 * [[limits-maxDescriptorSetAccelerationStructures]] 2895 pname:maxDescriptorSetAccelerationStructures is the maximum number of 2896 acceleration structure descriptors that can: be included in descriptor 2897 bindings in a pipeline layout across all pipeline shader stages and 2898 descriptor set numbers. 2899 Descriptor bindings with a descriptor type of 2900 ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR count against this 2901 limit. 2902 Only descriptor bindings in descriptor set layouts created without the 2903 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set 2904 count against this limit. 2905 * [[limits-maxDescriptorSetUpdateAfterBindAccelerationStructures]] 2906 pname:maxDescriptorSetUpdateAfterBindAccelerationStructures is similar 2907 to pname:maxDescriptorSetAccelerationStructures but counts descriptor 2908 bindings from descriptor sets created with or without the 2909 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit 2910 set. 2911 * [[limits-minAccelerationStructureScratchOffsetAlignment]] 2912 pname:minAccelerationStructureScratchOffsetAlignment is the minimum 2913 required: alignment, in bytes, for scratch data passed in to an 2914 acceleration structure build command. 2915 The value must: be a power of two. 2916 2917Due to the fact that the geometry, instance, and primitive counts are 2918specified at acceleration structure creation as 32-bit values, 2919<<limits-maxGeometryCount, pname:maxGeometryCount>>, 2920<<limits-maxInstanceCount, pname:maxInstanceCount>>, and 2921<<limits-maxPrimitiveCount, pname:maxPrimitiveCount>> must: not exceed 2922[eq]#2^32^-1#. 2923 2924:refpage: VkPhysicalDeviceAccelerationStructurePropertiesKHR 2925include::{chapters}/limits.adoc[tag=limits_desc] 2926 2927ifdef::VK_NV_ray_tracing[] 2928Limits specified by this structure must: match those specified with the same 2929name in slink:VkPhysicalDeviceRayTracingPropertiesNV. 2930endif::VK_NV_ray_tracing[] 2931 2932include::{generated}/validity/structs/VkPhysicalDeviceAccelerationStructurePropertiesKHR.adoc[] 2933-- 2934endif::VK_KHR_acceleration_structure[] 2935 2936ifdef::VK_KHR_ray_tracing_pipeline[] 2937[open,refpage='VkPhysicalDeviceRayTracingPipelinePropertiesKHR',desc='Properties of the physical device for ray tracing',type='structs'] 2938-- 2939The sname:VkPhysicalDeviceRayTracingPipelinePropertiesKHR structure is 2940defined as: 2941 2942include::{generated}/api/structs/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.adoc[] 2943 2944 * pname:sType is a elink:VkStructureType value identifying this structure. 2945 * pname:pNext is `NULL` or a pointer to a structure extending this 2946 structure. 2947 * pname:shaderGroupHandleSize is the size in bytes of the shader header. 2948 * [[limits-maxRayRecursionDepth]] pname:maxRayRecursionDepth is the 2949 maximum number of levels of ray recursion allowed in a trace command. 2950 * pname:maxShaderGroupStride is the maximum stride in bytes allowed 2951 between shader groups in the shader binding table. 2952 * pname:shaderGroupBaseAlignment is the required: alignment in bytes for 2953 the base of the shader binding table. 2954 * pname:shaderGroupHandleCaptureReplaySize is the number of bytes for the 2955 information required to do capture and replay for shader group handles. 2956 * pname:maxRayDispatchInvocationCount is the maximum number of ray 2957 generation shader invocations which may: be produced by a single 2958 flink:vkCmdTraceRaysIndirectKHR or flink:vkCmdTraceRaysKHR command. 2959 * pname:shaderGroupHandleAlignment is the required: alignment in bytes for 2960 each shader binding table entry. 2961 The value must: be a power of two. 2962 * pname:maxRayHitAttributeSize is the maximum size in bytes for a ray 2963 attribute structure 2964 2965:refpage: VkPhysicalDeviceRayTracingPipelinePropertiesKHR 2966include::{chapters}/limits.adoc[tag=limits_desc] 2967 2968ifdef::VK_NV_ray_tracing[] 2969Limits specified by this structure must: match those specified with the same 2970name in slink:VkPhysicalDeviceRayTracingPropertiesNV. 2971endif::VK_NV_ray_tracing[] 2972 2973include::{generated}/validity/structs/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.adoc[] 2974-- 2975endif::VK_KHR_ray_tracing_pipeline[] 2976 2977ifdef::VK_NV_cooperative_matrix[] 2978[open,refpage='VkPhysicalDeviceCooperativeMatrixPropertiesNV',desc='Structure describing cooperative matrix properties supported by an implementation',type='structs'] 2979-- 2980The sname:VkPhysicalDeviceCooperativeMatrixPropertiesNV structure is defined 2981as: 2982 2983include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixPropertiesNV.adoc[] 2984 2985 * pname:sType is a elink:VkStructureType value identifying this structure. 2986 * pname:pNext is `NULL` or a pointer to a structure extending this 2987 structure. 2988 * [[limits-cooperativeMatrixSupportedStages-NV]] 2989 pname:cooperativeMatrixSupportedStages is a bitfield of 2990 elink:VkShaderStageFlagBits describing the shader stages that 2991 cooperative matrix instructions are supported in. 2992 pname:cooperativeMatrixSupportedStages will have the 2993 ename:VK_SHADER_STAGE_COMPUTE_BIT bit set if any of the physical 2994 device's queues support ename:VK_QUEUE_COMPUTE_BIT. 2995 2996:refpage: VkPhysicalDeviceCooperativeMatrixPropertiesNV 2997include::{chapters}/limits.adoc[tag=limits_desc] 2998 2999include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixPropertiesNV.adoc[] 3000-- 3001endif::VK_NV_cooperative_matrix[] 3002 3003ifdef::VK_KHR_cooperative_matrix[] 3004[open,refpage='VkPhysicalDeviceCooperativeMatrixPropertiesKHR',desc='Structure describing cooperative matrix properties supported by an implementation',type='structs'] 3005-- 3006The sname:VkPhysicalDeviceCooperativeMatrixPropertiesKHR structure is 3007defined as: 3008 3009include::{generated}/api/structs/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.adoc[] 3010 3011 * pname:sType is a elink:VkStructureType value identifying this structure. 3012 * pname:pNext is `NULL` or a pointer to a structure extending this 3013 structure. 3014 * [[limits-cooperativeMatrixSupportedStages]] 3015 pname:cooperativeMatrixSupportedStages is a bitfield of 3016 elink:VkShaderStageFlagBits describing the shader stages that 3017 cooperative matrix instructions are supported in. 3018 pname:cooperativeMatrixSupportedStages will have the 3019 ename:VK_SHADER_STAGE_COMPUTE_BIT bit set if any of the physical 3020 device's queues support ename:VK_QUEUE_COMPUTE_BIT. 3021 3022pname:cooperativeMatrixSupportedStages must: not have any bits other than 3023ename:VK_SHADER_STAGE_COMPUTE_BIT set. 3024 3025:refpage: VkPhysicalDeviceCooperativeMatrixPropertiesKHR 3026include::{chapters}/limits.adoc[tag=limits_desc] 3027 3028include::{generated}/validity/structs/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.adoc[] 3029-- 3030endif::VK_KHR_cooperative_matrix[] 3031 3032ifdef::VK_NV_shader_sm_builtins[] 3033[open,refpage='VkPhysicalDeviceShaderSMBuiltinsPropertiesNV',desc='Structure describing shader SM Builtins properties supported by an implementation',type='structs'] 3034-- 3035The sname:VkPhysicalDeviceShaderSMBuiltinsPropertiesNV structure is defined 3036as: 3037 3038include::{generated}/api/structs/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.adoc[] 3039 3040 * pname:sType is a elink:VkStructureType value identifying this structure. 3041 * pname:pNext is `NULL` or a pointer to a structure extending this 3042 structure. 3043 * [[limits-shaderSMCount]] pname:shaderSMCount is the number of SMs on the 3044 device. 3045 * [[limits-shaderWarpsPerSM]] pname:shaderWarpsPerSM is the maximum number 3046 of simultaneously executing warps on an SM. 3047 3048:refpage: VkPhysicalDeviceShaderSMBuiltinsPropertiesNV 3049include::{chapters}/limits.adoc[tag=limits_desc] 3050 3051include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.adoc[] 3052-- 3053endif::VK_NV_shader_sm_builtins[] 3054 3055ifdef::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[] 3056[open,refpage='VkPhysicalDeviceTexelBufferAlignmentProperties',desc='Structure describing the texel buffer alignment requirements supported by an implementation',type='structs',alias='VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT'] 3057-- 3058The sname:VkPhysicalDeviceTexelBufferAlignmentProperties structure is 3059defined as: 3060 3061include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentProperties.adoc[] 3062 3063ifdef::VK_EXT_texel_buffer_alignment[] 3064or the equivalent 3065 3066include::{generated}/api/structs/VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT.adoc[] 3067endif::VK_EXT_texel_buffer_alignment[] 3068 3069 * pname:sType is a elink:VkStructureType value identifying this structure. 3070 * pname:pNext is `NULL` or a pointer to a structure extending this 3071 structure. 3072 3073// Must have preceding whitespace 3074ifdef::VK_VERSION_1_3[:anchor-prefix: extension-] 3075ifndef::VK_VERSION_1_3[:anchor-prefix:] 3076// tag::VK_EXT_texel_buffer_alignment-properties[] 3077 * [[{anchor-prefix}limits-storageTexelBufferOffsetAlignmentBytes]] 3078 pname:storageTexelBufferOffsetAlignmentBytes is a byte alignment that is 3079 sufficient for a storage texel buffer of any format. 3080 The value must: be a power of two. 3081 * [[{anchor-prefix}limits-storageTexelBufferOffsetSingleTexelAlignment]] 3082 pname:storageTexelBufferOffsetSingleTexelAlignment indicates whether 3083 single texel alignment is sufficient for a storage texel buffer of any 3084 format. 3085 * [[{anchor-prefix}limits-uniformTexelBufferOffsetAlignmentBytes]] 3086 pname:uniformTexelBufferOffsetAlignmentBytes is a byte alignment that is 3087 sufficient for a uniform texel buffer of any format. 3088 The value must: be a power of two. 3089 * [[{anchor-prefix}limits-uniformTexelBufferOffsetSingleTexelAlignment]] 3090 pname:uniformTexelBufferOffsetSingleTexelAlignment indicates whether 3091 single texel alignment is sufficient for a uniform texel buffer of any 3092 format. 3093// end::VK_EXT_texel_buffer_alignment-properties[] 3094 3095:refpage: VkPhysicalDeviceTexelBufferAlignmentProperties 3096include::{chapters}/limits.adoc[tag=limits_desc] 3097 3098If the single texel alignment property is ename:VK_FALSE, then the buffer 3099view's offset must: be aligned to the corresponding byte alignment value. 3100If the single texel alignment property is ename:VK_TRUE, then the buffer 3101view's offset must: be aligned to the lesser of the corresponding byte 3102alignment value or the size of a single texel, based on 3103slink:VkBufferViewCreateInfo::pname:format. 3104If the size of a single texel is a multiple of three bytes, then the size of 3105a single component of the format is used instead. 3106 3107These limits must: not advertise a larger alignment than the 3108<<limits-required, required>> maximum minimum value of 3109slink:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment, for any 3110format that supports use as a texel buffer. 3111 3112include::{generated}/validity/structs/VkPhysicalDeviceTexelBufferAlignmentProperties.adoc[] 3113-- 3114endif::VK_VERSION_1_3,VK_EXT_texel_buffer_alignment[] 3115 3116ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 3117[open,refpage='VkPhysicalDeviceTimelineSemaphoreProperties',desc='Structure describing timeline semaphore properties that can be supported by an implementation',type='structs',alias='VkPhysicalDeviceTimelineSemaphorePropertiesKHR'] 3118-- 3119The sname:VkPhysicalDeviceTimelineSemaphoreProperties structure is defined 3120as: 3121 3122include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphoreProperties.adoc[] 3123 3124ifdef::VK_KHR_timeline_semaphore[] 3125or the equivalent 3126 3127include::{generated}/api/structs/VkPhysicalDeviceTimelineSemaphorePropertiesKHR.adoc[] 3128endif::VK_KHR_timeline_semaphore[] 3129 3130 * pname:sType is a elink:VkStructureType value identifying this structure. 3131 * pname:pNext is `NULL` or a pointer to a structure extending this 3132 structure. 3133 3134// Must have preceding whitespace 3135ifdef::VK_VERSION_1_2[:anchor-prefix: extension-] 3136ifndef::VK_VERSION_1_2[:anchor-prefix:] 3137// tag::VK_KHR_timeline_semaphore-properties[] 3138 * [[{anchor-prefix}limits-maxTimelineSemaphoreValueDifference]] 3139 pname:maxTimelineSemaphoreValueDifference indicates the maximum 3140 difference allowed by the implementation between the current value of a 3141 timeline semaphore and any pending signal or wait operations. 3142// end::VK_KHR_timeline_semaphore-properties[] 3143 3144:refpage: VkPhysicalDeviceTimelineSemaphoreProperties 3145include::{chapters}/limits.adoc[tag=limits_desc] 3146 3147include::{generated}/validity/structs/VkPhysicalDeviceTimelineSemaphoreProperties.adoc[] 3148-- 3149endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 3150 3151ifdef::VK_EXT_line_rasterization[] 3152[open,refpage='VkPhysicalDeviceLineRasterizationPropertiesEXT',desc='Structure describing line rasterization properties supported by an implementation',type='structs'] 3153-- 3154The sname:VkPhysicalDeviceLineRasterizationPropertiesEXT structure is 3155defined as: 3156 3157include::{generated}/api/structs/VkPhysicalDeviceLineRasterizationPropertiesEXT.adoc[] 3158 3159 * pname:sType is a elink:VkStructureType value identifying this structure. 3160 * pname:pNext is `NULL` or a pointer to a structure extending this 3161 structure. 3162 * [[limits-lineSubPixelPrecisionBits]] pname:lineSubPixelPrecisionBits is 3163 the number of bits of subpixel precision in framebuffer coordinates 3164 [eq]#x~f~# and [eq]#y~f~# when rasterizing <<primsrast-lines,line 3165 segments>>. 3166 3167:refpage: VkPhysicalDeviceLineRasterizationPropertiesEXT 3168include::{chapters}/limits.adoc[tag=limits_desc] 3169 3170include::{generated}/validity/structs/VkPhysicalDeviceLineRasterizationPropertiesEXT.adoc[] 3171-- 3172endif::VK_EXT_line_rasterization[] 3173 3174ifdef::VK_EXT_robustness2[] 3175[open,refpage='VkPhysicalDeviceRobustness2PropertiesEXT',desc='Structure describing robust buffer access properties supported by an implementation',type='structs'] 3176-- 3177The sname:VkPhysicalDeviceRobustness2PropertiesEXT structure is defined as: 3178 3179include::{generated}/api/structs/VkPhysicalDeviceRobustness2PropertiesEXT.adoc[] 3180 3181 * pname:sType is a elink:VkStructureType value identifying this structure. 3182 * pname:pNext is `NULL` or a pointer to a structure extending this 3183 structure. 3184 * [[limits-robustStorageBufferAccessSizeAlignment]] 3185 pname:robustStorageBufferAccessSizeAlignment is the number of bytes that 3186 the range of a storage buffer descriptor is rounded up to when used for 3187 bounds-checking when the <<features-robustBufferAccess2, 3188 pname:robustBufferAccess2>> feature is enabled. 3189 This value must: be either 1 or 4. 3190 * [[limits-robustUniformBufferAccessSizeAlignment]] 3191 pname:robustUniformBufferAccessSizeAlignment is the number of bytes that 3192 the range of a uniform buffer descriptor is rounded up to when used for 3193 bounds-checking when the <<features-robustBufferAccess2, 3194 pname:robustBufferAccess2>> feature is enabled. 3195 This value must: be a power of two in the range [1, 256]. 3196 3197:refpage: VkPhysicalDeviceRobustness2PropertiesEXT 3198include::{chapters}/limits.adoc[tag=limits_desc] 3199 3200include::{generated}/validity/structs/VkPhysicalDeviceRobustness2PropertiesEXT.adoc[] 3201-- 3202endif::VK_EXT_robustness2[] 3203 3204ifdef::VK_NV_device_generated_commands[] 3205[open,refpage='VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV',desc='Structure describing push descriptor limits that can be supported by an implementation',type='structs'] 3206-- 3207The sname:VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV structure is 3208defined as: 3209 3210include::{generated}/api/structs/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.adoc[] 3211 3212 * pname:sType is a elink:VkStructureType value identifying this structure. 3213 * pname:pNext is `NULL` or a pointer to a structure extending this 3214 structure. 3215 * pname:maxGraphicsShaderGroupCount is the maximum number of shader groups 3216 in slink:VkGraphicsPipelineShaderGroupsCreateInfoNV. 3217 * pname:maxIndirectSequenceCount is the maximum number of sequences in 3218 slink:VkGeneratedCommandsInfoNV and in 3219 slink:VkGeneratedCommandsMemoryRequirementsInfoNV. 3220 * pname:maxIndirectCommandsTokenCount is the maximum number of tokens in 3221 slink:VkIndirectCommandsLayoutCreateInfoNV. 3222 * pname:maxIndirectCommandsStreamCount is the maximum number of streams in 3223 slink:VkIndirectCommandsLayoutCreateInfoNV. 3224 * pname:maxIndirectCommandsTokenOffset is the maximum offset in 3225 slink:VkIndirectCommandsLayoutTokenNV. 3226 * pname:maxIndirectCommandsStreamStride is the maximum stream stride in 3227 slink:VkIndirectCommandsLayoutCreateInfoNV. 3228 * pname:minSequencesCountBufferOffsetAlignment is the minimum alignment 3229 for memory addresses which can: be used in 3230 slink:VkGeneratedCommandsInfoNV. 3231 * pname:minSequencesIndexBufferOffsetAlignment is the minimum alignment 3232 for memory addresses which can: be used in 3233 slink:VkGeneratedCommandsInfoNV. 3234 * pname:minIndirectCommandsBufferOffsetAlignment is the minimum alignment 3235 for memory addresses used in slink:VkIndirectCommandsStreamNV, and as 3236 preprocess buffer in slink:VkGeneratedCommandsInfoNV. 3237 3238:refpage: VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV 3239include::{chapters}/limits.adoc[tag=limits_desc] 3240 3241include::{generated}/validity/structs/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.adoc[] 3242-- 3243 3244endif::VK_NV_device_generated_commands[] 3245 3246ifdef::VK_KHR_portability_subset[] 3247[open,refpage='VkPhysicalDevicePortabilitySubsetPropertiesKHR',desc='Structure describing additional properties supported by a portable implementation',type='structs'] 3248-- 3249The sname:VkPhysicalDevicePortabilitySubsetPropertiesKHR structure is 3250defined as: 3251 3252include::{generated}/api/structs/VkPhysicalDevicePortabilitySubsetPropertiesKHR.adoc[] 3253 3254 * pname:sType is a elink:VkStructureType value identifying this structure. 3255 * pname:pNext is `NULL` or a pointer to a structure extending this 3256 structure. 3257 * [[limits-minVertexInputBindingStrideAlignment]] 3258 pname:minVertexInputBindingStrideAlignment indicates the minimum 3259 alignment for vertex input strides. 3260 slink:VkVertexInputBindingDescription::pname:stride must: be a multiple 3261 of, and at least as large as, this value. 3262 The value must: be a power of two. 3263 3264:refpage: VkPhysicalDevicePortabilitySubsetPropertiesKHR 3265include::{chapters}/limits.adoc[tag=limits_desc] 3266 3267include::{generated}/validity/structs/VkPhysicalDevicePortabilitySubsetPropertiesKHR.adoc[] 3268-- 3269endif::VK_KHR_portability_subset[] 3270 3271 3272ifdef::VK_KHR_fragment_shading_rate[] 3273[open,refpage='VkPhysicalDeviceFragmentShadingRatePropertiesKHR',desc='Structure describing variable fragment shading rate limits that can be supported by an implementation',type='structs'] 3274-- 3275The sname:VkPhysicalDeviceFragmentShadingRatePropertiesKHR structure is 3276defined as: 3277 3278include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.adoc[] 3279 3280 * pname:sType is a elink:VkStructureType value identifying this structure. 3281 * pname:pNext is `NULL` or a pointer to a structure extending this 3282 structure. 3283 * [[limits-minFragmentShadingRateAttachmentTexelSize]] 3284 pname:minFragmentShadingRateAttachmentTexelSize indicates minimum 3285 supported width and height of the portion of the framebuffer 3286 corresponding to each texel in a fragment shading rate attachment. 3287 Each value must: be less than or equal to the values in 3288 pname:maxFragmentShadingRateAttachmentTexelSize. 3289 Each value must: be a power-of-two. 3290 It must: be [eq]#(0,0)# if the <<features-attachmentFragmentShadingRate, 3291 pname:attachmentFragmentShadingRate>> feature is not supported. 3292 * [[limits-maxFragmentShadingRateAttachmentTexelSize]] 3293 pname:maxFragmentShadingRateAttachmentTexelSize indicates maximum 3294 supported width and height of the portion of the framebuffer 3295 corresponding to each texel in a fragment shading rate attachment. 3296 Each value must: be greater than or equal to the values in 3297 pname:minFragmentShadingRateAttachmentTexelSize. 3298 Each value must: be a power-of-two. 3299 It must: be [eq]#(0,0)# if the <<features-attachmentFragmentShadingRate, 3300 pname:attachmentFragmentShadingRate>> feature is not supported. 3301 * [[limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio]] 3302 pname:maxFragmentShadingRateAttachmentTexelSizeAspectRatio indicates the 3303 maximum ratio between the width and height of the portion of the 3304 framebuffer corresponding to each texel in a fragment shading rate 3305 attachment. 3306 pname:maxFragmentShadingRateAttachmentTexelSizeAspectRatio must: be a 3307 power-of-two value, and must: be less than or equal to 3308 [eq]#max(pname:maxFragmentShadingRateAttachmentTexelSize.width / 3309 pname:minFragmentShadingRateAttachmentTexelSize.height, 3310 pname:maxFragmentShadingRateAttachmentTexelSize.height / 3311 pname:minFragmentShadingRateAttachmentTexelSize.width)#. 3312 It must: be 0 if the <<features-attachmentFragmentShadingRate, 3313 pname:attachmentFragmentShadingRate>> feature is not supported. 3314 * [[limits-primitiveFragmentShadingRateWithMultipleViewports]] 3315 pname:primitiveFragmentShadingRateWithMultipleViewports specifies 3316 whether the <<primsrast-fragment-shading-rate-primitive,primitive 3317 fragment shading rate>> can: be used when multiple viewports are used. 3318 If this value is ename:VK_FALSE, only a single viewport must: be used, 3319 and applications must: not write to the 3320ifdef::VK_NV_viewport_array2[] 3321 code:ViewportMaskNV or 3322endif::VK_NV_viewport_array2[] 3323 code:ViewportIndex built-in when setting code:PrimitiveShadingRateKHR. 3324 It must: be ename:VK_FALSE if 3325ifdef::VK_VERSION_1_2[] 3326 the <<features-shaderOutputViewportIndex, 3327 pname:shaderOutputViewportIndex>> feature, 3328endif::VK_VERSION_1_2[] 3329ifdef::VK_EXT_shader_viewport_index_layer[] 3330 the `apiext:VK_EXT_shader_viewport_index_layer` extension, 3331endif::VK_EXT_shader_viewport_index_layer[] 3332ifdef::VK_VERSION_1_2,VK_EXT_shader_viewport_index_layer[or] 3333 the <<features-geometryShader, pname:geometryShader>> feature is not 3334 supported, or if the <<features-primitiveFragmentShadingRate, 3335 pname:primitiveFragmentShadingRate>> feature is not supported. 3336 * [[limits-layeredShadingRateAttachments]] 3337 pname:layeredShadingRateAttachments specifies whether a shading rate 3338 attachment image view can: be created with multiple layers. 3339 If this value is ename:VK_FALSE, when creating an image view with a 3340 pname:usage that includes 3341 ename:VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, 3342 pname:layerCount must: be `1`. 3343 It must: be ename:VK_FALSE if 3344ifdef::VK_VERSION_1_1,VK_KHR_multiview[] 3345 the <<features-multiview, pname:multiview>> feature, 3346endif::VK_VERSION_1_1,VK_KHR_multiview[] 3347ifdef::VK_VERSION_1_2[] 3348 the <<features-shaderOutputViewportIndex, 3349 pname:shaderOutputViewportIndex>> feature, 3350endif::VK_VERSION_1_2[] 3351ifdef::VK_EXT_shader_viewport_index_layer[] 3352 the `apiext:VK_EXT_shader_viewport_index_layer` extension, 3353endif::VK_EXT_shader_viewport_index_layer[] 3354ifdef::VK_VERSION_1_1,VK_KHR_multiview,VK_VERSION_1_2,VK_EXT_shader_viewport_index_layer[or] 3355 the <<features-geometryShader, pname:geometryShader>> feature is not 3356 supported, or if the <<features-attachmentFragmentShadingRate, 3357 pname:attachmentFragmentShadingRate>> feature is not supported. 3358 * [[limits-fragmentShadingRateNonTrivialCombinerOps]] 3359 pname:fragmentShadingRateNonTrivialCombinerOps specifies whether 3360 elink:VkFragmentShadingRateCombinerOpKHR enums other than 3361 ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR or 3362 ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR can: be used. 3363 It must: be ename:VK_FALSE unless either the 3364 <<features-primitiveFragmentShadingRate, 3365 pname:primitiveFragmentShadingRate>> or 3366 <<features-attachmentFragmentShadingRate, 3367 pname:attachmentFragmentShadingRate>> feature is supported. 3368 * [[limits-maxFragmentSize]] pname:maxFragmentSize indicates the maximum 3369 supported width and height of a fragment. 3370 Its pname:width and pname:height members must: both be power-of-two 3371 values. 3372 This limit is purely informational, and is not validated. 3373 * [[limits-maxFragmentSizeAspectRatio]] pname:maxFragmentSizeAspectRatio 3374 indicates the maximum ratio between the width and height of a fragment. 3375 pname:maxFragmentSizeAspectRatio must: be a power-of-two value, and 3376 must: be less than or equal to the maximum of the pname:width and 3377 pname:height members of pname:maxFragmentSize. 3378 This limit is purely informational, and is not validated. 3379 * [[limits-maxFragmentShadingRateCoverageSamples]] 3380 pname:maxFragmentShadingRateCoverageSamples specifies the maximum number 3381 of coverage samples supported in a single fragment. 3382 pname:maxFragmentShadingRateCoverageSamples must: be less than or equal 3383 to the product of the pname:width and pname:height members of 3384 pname:maxFragmentSize, and the sample count reported by 3385 pname:maxFragmentShadingRateRasterizationSamples. 3386 pname:maxFragmentShadingRateCoverageSamples must: be less than or equal 3387 to [eq]#pname:maxSampleMaskWords {times} 32# if 3388 pname:fragmentShadingRateWithShaderSampleMask is supported. 3389 This limit is purely informational, and is not validated. 3390 * [[limits-maxFragmentShadingRateRasterizationSamples]] 3391 pname:maxFragmentShadingRateRasterizationSamples is a 3392 elink:VkSampleCountFlagBits value specifying the maximum sample rate 3393 supported when a fragment covers multiple pixels. 3394 This limit is purely informational, and is not validated. 3395 * [[limits-fragmentShadingRateWithShaderDepthStencilWrites]] 3396 pname:fragmentShadingRateWithShaderDepthStencilWrites specifies whether 3397 the implementation supports writing code:FragDepth 3398ifdef::VK_EXT_shader_stencil_export[] 3399 or code:FragStencilRefEXT 3400endif::VK_EXT_shader_stencil_export[] 3401 from a fragment shader for multi-pixel fragments. 3402 If this value is ename:VK_FALSE, writing to those built-ins will clamp 3403 the fragment shading rate to [eq]#(1,1)#. 3404 * [[limits-fragmentShadingRateWithSampleMask]] 3405 pname:fragmentShadingRateWithSampleMask specifies whether the 3406 implementation supports setting valid bits of 3407 slink:VkPipelineMultisampleStateCreateInfo::pname:pSampleMask to `0` for 3408 multi-pixel fragments. 3409 If this value is ename:VK_FALSE, zeroing valid bits in the sample mask 3410 will clamp the fragment shading rate to [eq]#(1,1)#. 3411 * [[limits-fragmentShadingRateWithShaderSampleMask]] 3412 pname:fragmentShadingRateWithShaderSampleMask specifies whether the 3413 implementation supports reading or writing code:SampleMask for 3414 multi-pixel fragments. 3415 If this value is ename:VK_FALSE, using that built-in will clamp the 3416 fragment shading rate to [eq]#(1,1)#. 3417 * [[limits-fragmentShadingRateWithConservativeRasterization]] 3418 pname:fragmentShadingRateWithConservativeRasterization 3419ifndef::VK_EXT_conservative_rasterization[] 3420 is reserved for future use. 3421endif::VK_EXT_conservative_rasterization[] 3422ifdef::VK_EXT_conservative_rasterization[] 3423 specifies whether <<primsrast-conservativeraster, conservative 3424 rasterization>> is supported for multi-pixel fragments. 3425 It must: be ename:VK_FALSE if `apiext:VK_EXT_conservative_rasterization` 3426 is not supported. 3427 If this value is ename:VK_FALSE, using <<primsrast-conservativeraster, 3428 conservative rasterization>> will clamp the fragment shading rate to 3429 [eq]#(1,1)#. 3430endif::VK_EXT_conservative_rasterization[] 3431 * [[limits-fragmentShadingRateWithFragmentShaderInterlock]] 3432 pname:fragmentShadingRateWithFragmentShaderInterlock 3433ifndef::VK_EXT_fragment_shader_interlock[] 3434 is reserved for future use. 3435endif::VK_EXT_fragment_shader_interlock[] 3436ifdef::VK_EXT_fragment_shader_interlock[] 3437 specifies whether <<fragops-shader-interlock, fragment shader 3438 interlock>> is supported for multi-pixel fragments. 3439 It must: be ename:VK_FALSE if `apiext:VK_EXT_fragment_shader_interlock` 3440 is not supported. 3441 If this value is ename:VK_FALSE, using <<fragops-shader-interlock, 3442 fragment shader interlock>> will clamp the fragment shading rate to 3443 [eq]#(1,1)#. 3444endif::VK_EXT_fragment_shader_interlock[] 3445 * [[limits-fragmentShadingRateWithCustomSampleLocations]] 3446 pname:fragmentShadingRateWithCustomSampleLocations 3447ifndef::VK_EXT_sample_locations[] 3448 is reserved for future use. 3449endif::VK_EXT_sample_locations[] 3450ifdef::VK_EXT_sample_locations[] 3451 specifies whether <<primsrast-samplelocations, custom sample locations>> 3452 are supported for multi-pixel fragments. 3453 It must: be ename:VK_FALSE if `apiext:VK_EXT_sample_locations` is not 3454 supported. 3455 If this value is ename:VK_FALSE, using <<primsrast-samplelocations, 3456 custom sample locations>> will clamp the fragment shading rate to 3457 [eq]#(1,1)#. 3458endif::VK_EXT_sample_locations[] 3459 * [[limits-fragmentShadingRateStrictMultiplyCombiner]] 3460 pname:fragmentShadingRateStrictMultiplyCombiner specifies whether 3461 ename:VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR accurately performs a 3462 multiplication or not. 3463 Implementations where this value is ename:VK_FALSE will instead combine 3464 rates with an addition. 3465 If pname:fragmentShadingRateNonTrivialCombinerOps is ename:VK_FALSE, 3466 implementations must: report this as ename:VK_FALSE. 3467 If pname:fragmentShadingRateNonTrivialCombinerOps is ename:VK_TRUE, 3468 implementations should: report this as ename:VK_TRUE. 3469 3470[NOTE] 3471.Note 3472==== 3473Multiplication of the combiner rates using the fragment width/height in 3474linear space is equivalent to an addition of those values in log2 space. 3475Some implementations inadvertently implemented an addition in linear space 3476due to unclear requirements originating outside of this specification. 3477This resulted in <<limits-fragmentShadingRateStrictMultiplyCombiner, 3478pname:fragmentShadingRateStrictMultiplyCombiner>> being added. 3479Fortunately, this only affects situations where a rate of 1 in either 3480dimension is combined with another rate of 1. 3481All other combinations result in the exact same result as if multiplication 3482was performed in linear space due to the clamping logic, and the fact that 3483both the sum and product of 2 and 2 are equal. 3484In many cases, this limit will not affect the correct operation of 3485applications. 3486==== 3487 3488:refpage: VkPhysicalDeviceFragmentShadingRatePropertiesKHR 3489include::{chapters}/limits.adoc[tag=limits_desc] 3490 3491These properties are related to <<primsrast-fragment-shading-rate, fragment 3492shading rates>>. 3493 3494include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.adoc[] 3495-- 3496endif::VK_KHR_fragment_shading_rate[] 3497 3498ifdef::VK_NV_fragment_shading_rate_enums[] 3499[open,refpage='VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV',desc='Structure describing fragment shading rate limits that can be supported by an implementation',type='structs'] 3500-- 3501The sname:VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV structure is 3502defined as: 3503 3504include::{generated}/api/structs/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.adoc[] 3505 3506 * pname:sType is a elink:VkStructureType value identifying this structure. 3507 * pname:pNext is `NULL` or a pointer to a structure extending this 3508 structure. 3509 * [[limits-maxFragmentShadingRateInvocationCount]] 3510 pname:maxFragmentShadingRateInvocationCount is a 3511 elink:VkSampleCountFlagBits value indicating the maximum number of 3512 fragment shader invocations per fragment supported in pipeline, 3513 primitive, and attachment fragment shading rates. 3514 3515:refpage: VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV 3516include::{chapters}/limits.adoc[tag=limits_desc] 3517 3518These properties are related to <<primsrast-fragment-shading-rate, fragment 3519shading rates>>. 3520 3521include::{generated}/validity/structs/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.adoc[] 3522-- 3523endif::VK_NV_fragment_shading_rate_enums[] 3524 3525ifdef::VK_EXT_custom_border_color[] 3526[open,refpage='VkPhysicalDeviceCustomBorderColorPropertiesEXT',desc='Structure describing whether custom border colors can be supported by an implementation',type='structs'] 3527-- 3528The sname:VkPhysicalDeviceCustomBorderColorPropertiesEXT structure is 3529defined as: 3530 3531include::{generated}/api/structs/VkPhysicalDeviceCustomBorderColorPropertiesEXT.adoc[] 3532 3533 * [[limits-maxCustomBorderColorSamplers]] 3534 pname:maxCustomBorderColorSamplers indicates the maximum number of 3535 samplers with custom border colors which can: simultaneously exist on a 3536 device. 3537 3538:refpage: VkPhysicalDeviceCustomBorderColorPropertiesEXT 3539include::{chapters}/limits.adoc[tag=limits_desc] 3540 3541include::{generated}/validity/structs/VkPhysicalDeviceCustomBorderColorPropertiesEXT.adoc[] 3542-- 3543endif::VK_EXT_custom_border_color[] 3544 3545ifdef::VK_EXT_provoking_vertex[] 3546[open,refpage='VkPhysicalDeviceProvokingVertexPropertiesEXT',desc='Structure describing provoking vertex properties supported by an implementation',type='structs'] 3547-- 3548The sname:VkPhysicalDeviceProvokingVertexPropertiesEXT structure is defined 3549as: 3550 3551include::{generated}/api/structs/VkPhysicalDeviceProvokingVertexPropertiesEXT.adoc[] 3552 3553 * pname:sType is a elink:VkStructureType value identifying this structure. 3554 * pname:pNext is `NULL` or a pointer to a structure extending this 3555 structure. 3556 * [[limits-provokingVertexModePerPipeline]] 3557 pname:provokingVertexModePerPipeline indicates whether the 3558 implementation supports graphics pipelines with different provoking 3559 vertex modes within the same render pass instance. 3560 * [[limits-transformFeedbackPreservesTriangleFanProvokingVertex]] 3561 pname:transformFeedbackPreservesTriangleFanProvokingVertex indicates 3562 whether the implementation can preserve the provoking vertex order when 3563 writing triangle fan vertices to transform feedback. 3564 3565:refpage: VkPhysicalDeviceProvokingVertexPropertiesEXT 3566include::{chapters}/limits.adoc[tag=limits_desc] 3567 3568include::{generated}/validity/structs/VkPhysicalDeviceProvokingVertexPropertiesEXT.adoc[] 3569-- 3570endif::VK_EXT_provoking_vertex[] 3571 3572ifdef::VK_EXT_descriptor_buffer[] 3573[open,refpage='VkPhysicalDeviceDescriptorBufferPropertiesEXT',desc='Structure describing descriptor buffer properties supported by an implementation',type='structs'] 3574-- 3575The sname:VkPhysicalDeviceDescriptorBufferPropertiesEXT structure is defined 3576as: 3577 3578include::{generated}/api/structs/VkPhysicalDeviceDescriptorBufferPropertiesEXT.adoc[] 3579 3580 * pname:sType is a elink:VkStructureType value identifying this structure. 3581 * pname:pNext is `NULL` or a pointer to a structure extending this 3582 structure. 3583 * [[limits-combinedImageSamplerDescriptorSingleArray]] 3584 pname:combinedImageSamplerDescriptorSingleArray indicates that the 3585 implementation does not require an array of 3586 `VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER` descriptors to be written 3587 into a descriptor buffer as an array of image descriptors, immediately 3588 followed by an array of sampler descriptors. 3589 * [[limits-bufferlessPushDescriptors]] pname:bufferlessPushDescriptors 3590 indicates that the implementation does not require a buffer created with 3591 `VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT` to be bound 3592 when using push descriptors. 3593 * [[limits-allowSamplerImageViewPostSubmitCreation]] 3594 pname:allowSamplerImageViewPostSubmitCreation indicates that the 3595 implementation does not restrict when the slink:VkSampler or 3596 slink:VkImageView objects used to retrieve descriptor data can: be 3597 created in relation to command buffer submission. 3598 If this value is ename:VK_FALSE, then the application must: create any 3599 slink:VkSampler or slink:VkImageView objects whose descriptor data is 3600 accessed during the execution of a command buffer, before the 3601 flink:vkQueueSubmit 3602ifdef::VK_VERSION_1_3,VK_KHR_synchronization2[] 3603 , or flink:vkQueueSubmit2, 3604endif::VK_VERSION_1_3,VK_KHR_synchronization2[] 3605 call that submits that command buffer. 3606 * [[limits-descriptorBufferOffsetAlignment]] 3607 pname:descriptorBufferOffsetAlignment indicates the required: alignment 3608 in bytes when setting offsets into the descriptor buffer. 3609 * [[limits-maxDescriptorBufferBindings]] pname:maxDescriptorBufferBindings 3610 indicates the maximum sum total number of descriptor buffers and 3611 embedded immutable sampler sets that can: be bound. 3612 * [[limits-maxResourceDescriptorBufferBindings]] 3613 pname:maxResourceDescriptorBufferBindings indicates the maximum number 3614 of resource descriptor buffers that can: be bound. 3615 * [[limits-maxSamplerDescriptorBufferBindings]] 3616 pname:maxSamplerDescriptorBufferBindings indicates the maximum number of 3617 sampler descriptor buffers that can: be bound. 3618 * [[limits-maxEmbeddedImmutableSamplerBindings]] 3619 pname:maxEmbeddedImmutableSamplerBindings indicates the maximum number 3620 of embedded immutable sampler sets that can: be bound. 3621 * [[limits-maxEmbeddedImmutableSamplers]] 3622 pname:maxEmbeddedImmutableSamplers indicates the maximum number of 3623 unique immutable samplers in descriptor set layouts created with 3624 ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT, 3625 and pipeline layouts created from them, which can: simultaneously exist 3626 on a device. 3627 * [[limits-bufferCaptureReplayDescriptorDataSize]] 3628 pname:bufferCaptureReplayDescriptorDataSize indicates the maximum size 3629 in bytes of the opaque data used for capture and replay with buffers. 3630 * [[limits-imageCaptureReplayDescriptorDataSize]] 3631 pname:imageCaptureReplayDescriptorDataSize indicates the maximum size in 3632 bytes of the opaque data used for capture and replay with images. 3633 * [[limits-imageViewCaptureReplayDescriptorDataSize]] 3634 pname:imageViewCaptureReplayDescriptorDataSize indicates the maximum 3635 size in bytes of the opaque data used for capture and replay with image 3636 views. 3637 * [[limits-samplerCaptureReplayDescriptorDataSize]] 3638 pname:samplerCaptureReplayDescriptorDataSize indicates the maximum size 3639 in bytes of the opaque data used for capture and replay with samplers. 3640 * [[limits-accelerationStructureCaptureReplayDescriptorDataSize]] 3641 pname:accelerationStructureCaptureReplayDescriptorDataSize indicates the 3642 maximum size in bytes of the opaque data used for capture and replay 3643 with acceleration structures. 3644 * [[limits-samplerDescriptorSize]] pname:samplerDescriptorSize indicates 3645 the size in bytes of a ename:VK_DESCRIPTOR_TYPE_SAMPLER descriptor. 3646 * [[limits-combinedImageSamplerDescriptorSize]] 3647 pname:combinedImageSamplerDescriptorSize indicates the size in bytes of 3648 a ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptor. 3649 * [[limits-sampledImageDescriptorSize]] pname:sampledImageDescriptorSize 3650 indicates the size in bytes of a ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE 3651 descriptor. 3652 * [[limits-storageImageDescriptorSize]] pname:storageImageDescriptorSize 3653 indicates the size in bytes of a ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE 3654 descriptor. 3655 * [[limits-uniformTexelBufferDescriptorSize]] 3656 pname:uniformTexelBufferDescriptorSize indicates the size in bytes of a 3657 ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor if the 3658 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is not 3659 enabled. 3660 * [[limits-robustUniformTexelBufferDescriptorSize]] 3661 pname:robustUniformTexelBufferDescriptorSize indicates the size in bytes 3662 of a ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER descriptor if the 3663 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is 3664 enabled. 3665 * [[limits-storageTexelBufferDescriptorSize]] 3666 pname:storageTexelBufferDescriptorSize indicates the size in bytes of a 3667 ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor if the 3668 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is not 3669 enabled. 3670 * [[limits-robustStorageTexelBufferDescriptorSize]] 3671 pname:robustStorageTexelBufferDescriptorSize indicates the size in bytes 3672 of a ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER descriptor if the 3673 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is 3674 enabled. 3675 * [[limits-uniformBufferDescriptorSize]] pname:uniformBufferDescriptorSize 3676 indicates the size in bytes of a ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER 3677 descriptor. 3678 * [[limits-robustUniformBufferDescriptorSize]] 3679 pname:robustUniformBufferDescriptorSize indicates the size in bytes of a 3680 ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER descriptor if the 3681 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is 3682 enabled. 3683 * [[limits-storageBufferDescriptorSize]] pname:storageBufferDescriptorSize 3684 indicates the size in bytes of a ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER 3685 descriptor. 3686 * [[limits-robustStorageBufferDescriptorSize]] 3687 pname:robustStorageBufferDescriptorSize indicates the size in bytes of a 3688 ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER descriptor if the 3689 <<features-robustBufferAccess, pname:robustBufferAccess>> feature is 3690 enabled. 3691 * [[limits-inputAttachmentDescriptorSize]] 3692 pname:inputAttachmentDescriptorSize indicates the size in bytes of a 3693 ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT descriptor. 3694 * [[limits-accelerationStructureDescriptorSize]] 3695 pname:accelerationStructureDescriptorSize indicates the size in bytes of 3696 a ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR or 3697 ename:VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV descriptor. 3698 * [[limits-maxSamplerDescriptorBufferRange]] 3699 pname:maxSamplerDescriptorBufferRange indicates the maximum range in 3700 bytes from the address of a sampler descriptor buffer binding that is 3701 accessible to a shader. 3702 * [[limits-maxResourceDescriptorBufferRange]] 3703 pname:maxResourceDescriptorBufferRange indicates the maximum range in 3704 bytes from the address of a resource descriptor buffer binding that is 3705 accessible to a shader. 3706 * [[limits-samplerDescriptorBufferAddressSpaceSize]] 3707 pname:samplerDescriptorBufferAddressSpaceSize indicates the total size 3708 in bytes of the address space available for descriptor buffers created 3709 with ename:VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT. 3710 * [[limits-resourceDescriptorBufferAddressSpaceSize]] 3711 pname:resourceDescriptorBufferAddressSpaceSize indicates the total size 3712 in bytes of the address space available for descriptor buffers created 3713 with ename:VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT. 3714 * [[limits-descriptorBufferAddressSpaceSize]] 3715 pname:descriptorBufferAddressSpaceSize indicates the total size in bytes 3716 of the address space available for descriptor buffers created with both 3717 ename:VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT and 3718 ename:VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT. 3719 3720ifdef::VK_VALVE_mutable_descriptor_type[] 3721A descriptor binding with type ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE has a 3722descriptor size which is implied by the descriptor types included in the 3723slink:VkMutableDescriptorTypeCreateInfoVALVE::pname:pDescriptorTypes list. 3724The descriptor size is equal to the maximum size of any descriptor type 3725included in the pname:pDescriptorTypes list. 3726endif::VK_VALVE_mutable_descriptor_type[] 3727 3728ifdef::VK_EXT_pipeline_robustness[] 3729As there is no way to request robust and non-robust descriptors separately, 3730or specify robust/non-robust descriptors in the set layout, if 3731<<features-robustBufferAccess, pname:robustBufferAccess>> is enabled then 3732robust descriptors are always used. 3733endif::VK_EXT_pipeline_robustness[] 3734 3735:refpage: VkPhysicalDeviceDescriptorBufferPropertiesEXT 3736include::{chapters}/limits.adoc[tag=limits_desc] 3737 3738include::{generated}/validity/structs/VkPhysicalDeviceDescriptorBufferPropertiesEXT.adoc[] 3739-- 3740 3741ifdef::VK_EXT_fragment_density_map[] 3742[open,refpage='VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT',desc='Structure describing descriptor buffer density map properties supported by an implementation',type='structs'] 3743-- 3744The sname:VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT structure 3745is defined as: 3746 3747include::{generated}/api/structs/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.adoc[] 3748 3749 * pname:sType is a elink:VkStructureType value identifying this structure. 3750 * pname:pNext is `NULL` or a pointer to a structure extending this 3751 structure. 3752 * [[limits-combinedImageSamplerDensityMapDescriptorSize]] 3753 pname:combinedImageSamplerDensityMapDescriptorSize indicates the size in 3754 bytes of a ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptor 3755 when creating the descriptor with 3756 ename:VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT set. 3757 3758:refpage: VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT 3759include::{chapters}/limits.adoc[tag=limits_desc] 3760 3761include::{generated}/validity/structs/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.adoc[] 3762-- 3763endif::VK_EXT_fragment_density_map[] 3764 3765endif::VK_EXT_descriptor_buffer[] 3766 3767ifdef::VK_EXT_host_image_copy[] 3768[open,refpage='VkPhysicalDeviceHostImageCopyPropertiesEXT',desc='Structure enumerating image layouts supported by an implementation for host memory copies',type='structs'] 3769-- 3770The sname:VkPhysicalDeviceHostImageCopyPropertiesEXT structure is defined 3771as: 3772 3773include::{generated}/api/structs/VkPhysicalDeviceHostImageCopyPropertiesEXT.adoc[] 3774 3775 * pname:sType is a elink:VkStructureType value identifying this structure. 3776 * pname:pNext is `NULL` or a pointer to a structure extending this 3777 structure. 3778 * pname:copySrcLayoutCount is an integer related to the number of image 3779 layouts for host copies from images available or queried, as described 3780 below. 3781 * pname:pCopySrcLayouts is a pointer to an array of elink:VkImageLayout in 3782 which supported image layouts for use with host copy operations from 3783 images are returned. 3784 * pname:copyDstLayoutCount is an integer related to the number of image 3785 layouts for host copies to images available or queried, as described 3786 below. 3787 * pname:pCopyDstLayouts is a pointer to an array of elink:VkImageLayout in 3788 which supported image layouts for use with host copy operations to 3789 images are returned. 3790 * pname:optimalTilingLayoutUUID is an array of ename:VK_UUID_SIZE 3791 code:uint8_t values representing a universally unique identifier for the 3792 implementation's swizzling layout of images created with 3793 ename:VK_IMAGE_TILING_OPTIMAL. 3794 * pname:identicalMemoryTypeRequirements indicates that specifying the 3795 ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT flag in 3796 slink:VkImageCreateInfo::pname:usage does not affect the memory type 3797 requirements of the image. 3798 3799:refpage: VkPhysicalDeviceHostImageCopyPropertiesEXT 3800include::{chapters}/limits.adoc[tag=limits_desc] 3801 3802If pname:pCopyDstLayouts is `NULL`, then the number of image layouts that 3803are supported in slink:VkCopyMemoryToImageInfoEXT::pname:dstImageLayout and 3804slink:VkCopyImageToImageInfoEXT::pname:dstImageLayout is returned in 3805pname:copyDstLayoutCount. 3806Otherwise, pname:copyDstLayoutCount must: be set by the user to the number 3807of elements in the pname:pCopyDstLayouts array, and on return the variable 3808is overwritten with the number of values actually written to 3809pname:pCopyDstLayouts. 3810If the value of pname:copyDstLayoutCount is less than the number of image 3811layouts that are supported, at most pname:copyDstLayoutCount values will be 3812written to pname:pCopyDstLayouts. 3813The implementation must: include the ename:VK_IMAGE_LAYOUT_GENERAL image 3814layout in pname:pCopyDstLayouts. 3815 3816If pname:pCopySrcLayouts is `NULL`, then the number of image layouts that 3817are supported in slink:VkCopyImageToMemoryInfoEXT::pname:srcImageLayout and 3818slink:VkCopyImageToImageInfoEXT::pname:srcImageLayout is returned in 3819pname:copySrcLayoutCount. 3820Otherwise, pname:copySrcLayoutCount must: be set by the user to the number 3821of elements in the pname:pCopySrcLayouts array, and on return the variable 3822is overwritten with the number of values actually written to 3823pname:pCopySrcLayouts. 3824If the value of pname:copySrcLayoutCount is less than the number of image 3825layouts that are supported, at most pname:copySrcLayoutCount values will be 3826written to pname:pCopySrcLayouts. 3827The implementation must: include the ename:VK_IMAGE_LAYOUT_GENERAL image 3828layout in pname:pCopySrcLayouts. 3829 3830The pname:optimalTilingLayoutUUID value can be used to ensure compatible 3831data layouts when using the ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT flag in 3832flink:vkCopyMemoryToImageEXT and flink:vkCopyImageToMemoryEXT. 3833 3834include::{generated}/validity/structs/VkPhysicalDeviceHostImageCopyPropertiesEXT.adoc[] 3835-- 3836endif::VK_EXT_host_image_copy[] 3837 3838ifdef::VK_HUAWEI_subpass_shading[] 3839[open,refpage='VkPhysicalDeviceSubpassShadingPropertiesHUAWEI',desc='Structure describing subpass shading properties supported by an implementation',type='structs'] 3840-- 3841The sname:VkPhysicalDeviceSubpassShadingPropertiesHUAWEI structure is 3842defined as: 3843 3844include::{generated}/api/structs/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.adoc[] 3845 3846 * pname:sType is a elink:VkStructureType value identifying this structure. 3847 * pname:pNext is `NULL` or a pointer to a structure extending this 3848 structure. 3849 * [[limits-maxSubpassShadingWorkgroupSizeAspectRatio]] 3850 pname:maxSubpassShadingWorkgroupSizeAspectRatio indicates the maximum 3851 ratio between the width and height of the portion of the subpass shading 3852 shader workgroup size. 3853 pname:maxSubpassShadingWorkgroupSizeAspectRatio must: be a power-of-two 3854 value, and must: be less than or equal to max(code:WorkgroupSize.x / 3855 code:WorkgroupSize.y, code:WorkgroupSize.y / code:WorkgroupSize.x). 3856 3857:refpage: VkPhysicalDeviceSubpassShadingPropertiesHUAWEI 3858include::{chapters}/limits.adoc[tag=limits_desc] 3859 3860include::{generated}/validity/structs/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.adoc[] 3861-- 3862endif::VK_HUAWEI_subpass_shading[] 3863 3864ifdef::VK_EXT_multi_draw[] 3865 3866[open,refpage='VkPhysicalDeviceMultiDrawPropertiesEXT',desc='Structure describing multidraw limits of an implementation',type='structs'] 3867-- 3868The sname:VkPhysicalDeviceMultiDrawPropertiesEXT structure is defined as: 3869 3870include::{generated}/api/structs/VkPhysicalDeviceMultiDrawPropertiesEXT.adoc[] 3871 3872The members of the sname:VkPhysicalDeviceMultiDrawPropertiesEXT structure 3873describe the following features: 3874 3875 * [[limits-maxMultiDrawCount]] pname:maxMultiDrawCount indicates the 3876 maximum number of draw calls which can: be batched into a single 3877 multidraw. 3878 3879:refpage: VkPhysicalDeviceMultiDrawPropertiesEXT 3880include::{chapters}/limits.adoc[tag=limits_desc] 3881 3882include::{generated}/validity/structs/VkPhysicalDeviceMultiDrawPropertiesEXT.adoc[] 3883-- 3884 3885endif::VK_EXT_multi_draw[] 3886 3887ifdef::VK_EXT_nested_command_buffer[] 3888 3889[open,refpage='VkPhysicalDeviceNestedCommandBufferPropertiesEXT',desc='Structure describing the nested command buffer limits of an implementation',type='structs'] 3890-- 3891The sname:VkPhysicalDeviceNestedCommandBufferPropertiesEXT structure is 3892defined as: 3893 3894include::{generated}/api/structs/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.adoc[] 3895 3896The members of the sname:VkPhysicalDeviceNestedCommandBufferPropertiesEXT 3897structure describe the following features: 3898 3899 * [[limits-maxCommandBufferNestingLevel]] 3900 pname:maxCommandBufferNestingLevel indicates the maximum nesting level 3901 of calls to flink:vkCmdExecuteCommands from <<glossary, Secondary 3902 Command Buffers>>. 3903 A pname:maxCommandBufferNestingLevel of code:UINT32_MAX means there is 3904 no limit to the nesting level. 3905 3906:refpage: VkPhysicalDeviceNestedCommandBufferPropertiesEXT 3907include::{chapters}/limits.adoc[tag=limits_desc] 3908 3909include::{generated}/validity/structs/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.adoc[] 3910-- 3911 3912endif::VK_EXT_nested_command_buffer[] 3913 3914ifdef::VK_EXT_graphics_pipeline_library[] 3915[open,refpage='VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT',desc='Structure describing additional properties of graphics pipeline libraries',type='structs'] 3916-- 3917The sname:VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT structure is 3918defined as: 3919 3920include::{generated}/api/structs/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.adoc[] 3921 3922 * [[limits-graphicsPipelineLibraryFastLinking]] 3923 pname:graphicsPipelineLibraryFastLinking indicates whether fast linking 3924 of graphics pipelines is supported. 3925 If it is ename:VK_TRUE, creating a graphics pipeline entirely from 3926 pipeline libraries without 3927 ename:VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT is comparable in 3928 cost to recording a command in a command buffer. 3929 * [[limits-graphicsPipelineLibraryIndependentInterpolationDecoration]] 3930 pname:graphicsPipelineLibraryIndependentInterpolationDecoration 3931 indicates whether code:NoPerspective and code:Flat interpolation 3932 decorations in the last vertex processing stage and the fragment shader 3933 are required to match when using graphics pipeline libraries. 3934 If it is ename:VK_TRUE, the interpolation decorations do not need to 3935 match. 3936 If it is ename:VK_FALSE, these decorations must: either be present in 3937 both stages or neither stage in order for a given interface variable to 3938 match. 3939 3940:refpage: VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT 3941include::{chapters}/limits.adoc[tag=limits_desc] 3942 3943include::{generated}/validity/structs/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.adoc[] 3944-- 3945 3946endif::VK_EXT_graphics_pipeline_library[] 3947ifdef::VK_KHR_fragment_shader_barycentric[] 3948 3949[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR',desc='Structure describing fragment shader barycentric limits of an implementation',type='structs'] 3950-- 3951The sname:VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR structure 3952is defined as: 3953 3954include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.adoc[] 3955 3956 * [[limits-triStripVertexOrderIndependentOfProvokingVertex]] When the 3957 <<vertexpostproc-flatshading,provoking vertex mode>> is 3958 ename:VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT, and the primitive order 3959 is odd in a triangle strip, the ordering of vertices is defined in 3960 <<primsrast-barycentric-order-table-last-vertex, last vertex table>>. 3961 pname:triStripVertexOrderIndependentOfProvokingVertex equal to 3962 ename:VK_TRUE indicates that the implementation ignores this and uses 3963 the vertex order defined by 3964 ename:VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT instead. 3965 3966:refpage: VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR 3967include::{chapters}/limits.adoc[tag=limits_desc] 3968 3969include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.adoc[] 3970-- 3971 3972endif::VK_KHR_fragment_shader_barycentric[] 3973 3974ifdef::VK_EXT_shader_module_identifier[] 3975[open,refpage='VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT',desc='Structure describing shader module identifier properties of an implementation',type='structs'] 3976-- 3977The sname:VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT structure is 3978defined as: 3979 3980include::{generated}/api/structs/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.adoc[] 3981 3982The members of the sname:VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT 3983structure describe the following: 3984 3985 * [[limits-shaderModuleIdentifierAlgorithmUUID]] 3986 pname:shaderModuleIdentifierAlgorithmUUID is an array of 3987 ename:VK_UUID_SIZE code:uint8_t values which uniquely represents the 3988 algorithm used to compute an identifier in 3989 flink:vkGetShaderModuleIdentifierEXT and 3990 flink:vkGetShaderModuleCreateInfoIdentifierEXT. 3991 Implementations should: not change this value in different driver 3992 versions if the algorithm used to compute an identifier is the same. 3993 3994[NOTE] 3995.Note 3996==== 3997The algorithm UUID may be the same in different ICDs if the algorithms are 3998guaranteed to produce the same results. 3999This may happen in driver stacks which support different kinds of hardware 4000with shared code. 4001 4002Khronos' conformance testing can not guarantee that 4003pname:shaderModuleIdentifierAlgorithmUUID values are actually unique, so 4004implementors should make their own best efforts to ensure that their UUID is 4005unlikely to conflict with other implementations which may use a different 4006algorithm. 4007In particular, hard-coded values which easily conflict, such as all-`0` 4008bits, should: never be used. 4009Hard-coded values are acceptable if best effort is ensured that the value 4010will not accidentally conflict. 4011==== 4012 4013:refpage: VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT 4014include::{chapters}/limits.adoc[tag=limits_desc] 4015 4016include::{generated}/validity/structs/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.adoc[] 4017-- 4018 4019endif::VK_EXT_shader_module_identifier[] 4020 4021ifdef::VK_EXT_pipeline_robustness[] 4022[open,refpage='VkPhysicalDevicePipelineRobustnessPropertiesEXT',desc='Structure describing the default robustness behavior of a physical device',type='structs'] 4023-- 4024The sname:VkPhysicalDevicePipelineRobustnessPropertiesEXT structure is 4025defined as: 4026 4027include::{generated}/api/structs/VkPhysicalDevicePipelineRobustnessPropertiesEXT.adoc[] 4028 4029 * pname:sType is a elink:VkStructureType value identifying this structure. 4030 * pname:pNext is `NULL` or a pointer to a structure extending this 4031 structure. 4032 * pname:defaultRobustnessStorageBuffers describes the behaviour of out of 4033 bounds accesses made to storage buffers when no robustness features are 4034 enabled 4035 * pname:defaultRobustnessUniformBuffers describes the behaviour of out of 4036 bounds accesses made to uniform buffers when no robustness features are 4037 enabled 4038 * pname:defaultRobustnessVertexInputs describes the behaviour of out of 4039 bounds accesses made to vertex input attributes when no robustness 4040 features are enabled 4041 * pname:defaultRobustnessImages describes the behaviour of out of bounds 4042 accesses made to images when no robustness features are enabled 4043 4044Some implementations of Vulkan may be able to guarantee that certain types 4045of accesses are always performed with robustness even when the Vulkan API's 4046robustness features are not explicitly enabled. 4047 4048Even when an implementation reports that accesses to a given resource type 4049are robust by default, it remains invalid to make an out of bounds access 4050without requesting the appropriate robustness feature. 4051 4052:refpage: VkPhysicalDevicePipelineRobustnessPropertiesEXT 4053include::{chapters}/limits.adoc[tag=limits_desc] 4054 4055include::{generated}/validity/structs/VkPhysicalDevicePipelineRobustnessPropertiesEXT.adoc[] 4056-- 4057endif::VK_EXT_pipeline_robustness[] 4058 4059ifdef::VK_EXT_extended_dynamic_state3[] 4060 4061[open,refpage='VkPhysicalDeviceExtendedDynamicState3PropertiesEXT',desc='Structure describing capabilities of extended dynamic state',type='structs'] 4062-- 4063The sname:VkPhysicalDeviceExtendedDynamicState3PropertiesEXT structure is 4064defined as: 4065 4066include::{generated}/api/structs/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.adoc[] 4067 4068 * [[limits-dynamicPrimitiveTopologyUnrestricted]] 4069 pname:dynamicPrimitiveTopologyUnrestricted indicates that the 4070 implementation allows fname:vkCmdSetPrimitiveTopology to use a different 4071 <<drawing-primitive-topology-class, primitive topology class>> to the 4072 one specified in the active graphics pipeline. 4073 4074:refpage: VkPhysicalDeviceExtendedDynamicState3PropertiesEXT 4075include::{chapters}/limits.adoc[tag=limits_desc] 4076 4077include::{generated}/validity/structs/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.adoc[] 4078-- 4079 4080endif::VK_EXT_extended_dynamic_state3[] 4081 4082ifdef::VK_NV_optical_flow[] 4083[open,refpage='VkPhysicalDeviceOpticalFlowPropertiesNV',desc='Structure describing properties supported by VK_NV_optical_flow',type='structs'] 4084-- 4085The sname:VkPhysicalDeviceOpticalFlowPropertiesNV structure is defined as: 4086 4087include::{generated}/api/structs/VkPhysicalDeviceOpticalFlowPropertiesNV.adoc[] 4088 4089 * pname:sType is a elink:VkStructureType value identifying this structure. 4090 * pname:pNext is `NULL` or a pointer to a structure extending this 4091 structure. 4092 * [[limits-supportedOutputGridSizes]] pname:supportedOutputGridSizes are 4093 the supported tlink:VkOpticalFlowGridSizeFlagsNV which can be specified 4094 in sname:VkOpticalFlowSessionCreateInfoNV::pname:outputGridSize. 4095 * [[limits-supportedHintGridSizes]] pname:supportedHintGridSizes are the 4096 supported tlink:VkOpticalFlowGridSizeFlagsNV which can be specified in 4097 sname:VkOpticalFlowSessionCreateInfoNV::pname:hintGridSize. 4098 * [[limits-hintSupported]] pname:hintSupported is a boolean describing 4099 whether using hint flow vector map is supported in an optical flow 4100 session. 4101 * [[limits-costSupported]] pname:costSupported is a boolean describing 4102 whether cost map generation is supported in an optical flow session. 4103 * [[limits-bidirectionalFlowSupported]] pname:bidirectionalFlowSupported 4104 is a boolean describing whether bi-directional flow generation is 4105 supported in an optical flow session. 4106 * [[limits-globalFlowSupported]] pname:globalFlowSupported is a boolean 4107 describing whether global flow vector map generation is supported in an 4108 optical flow session. 4109 * [[limits-minWidth]] pname:minWidth is the minimum width in pixels for 4110 images used in an optical flow session. 4111 * [[limits-minHeight]] pname:minHeight is the minimum height in pixels for 4112 images used in an optical flow session. 4113 * [[limits-maxWidth]] pname:maxWidth is the maximum width in pixels for 4114 images used in an optical flow session. 4115 * [[limits-maxHeight]] pname:maxHeight is the maximum height in pixels for 4116 images used in an optical flow session. 4117 * [[limits-maxNumRegionsOfInterest]] pname:maxNumRegionsOfInterest is the 4118 maximum number of regions of interest which can be used in an optical 4119 flow session. 4120 If this pname:maxNumRegionsOfInterest is 0, regions of interest are not 4121 supported in an optical flow session. 4122 4123:refpage: VkPhysicalDeviceOpticalFlowPropertiesNV 4124include::{chapters}/limits.adoc[tag=limits_desc] 4125 4126include::{generated}/validity/structs/VkPhysicalDeviceOpticalFlowPropertiesNV.adoc[] 4127-- 4128endif::VK_NV_optical_flow[] 4129 4130ifdef::VK_EXT_opacity_micromap[] 4131[open,refpage='VkPhysicalDeviceOpacityMicromapPropertiesEXT',desc='Structure describing the opacity micromap properties of a physical device',type='structs'] 4132-- 4133The sname:VkPhysicalDeviceOpacityMicromapPropertiesEXT structure is defined 4134as: 4135 4136include::{generated}/api/structs/VkPhysicalDeviceOpacityMicromapPropertiesEXT.adoc[] 4137 4138 * pname:sType is a elink:VkStructureType value identifying this structure. 4139 * pname:pNext is `NULL` or a pointer to a structure extending this 4140 structure. 4141 * pname:maxOpacity2StateSubdivisionLevel is the maximum allowed 4142 pname:subdivisionLevel when pname:format is 4143 ename:VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT 4144 * pname:maxOpacity4StateSubdivisionLevel is the maximum allowed 4145 pname:subdivisionLevel when pname:format is 4146 ename:VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT 4147 4148:refpage: VkPhysicalDeviceOpacityMicromapPropertiesEXT 4149include::{chapters}/limits.adoc[tag=limits_desc] 4150 4151include::{generated}/validity/structs/VkPhysicalDeviceOpacityMicromapPropertiesEXT.adoc[] 4152-- 4153endif::VK_EXT_opacity_micromap[] 4154 4155ifdef::VK_NV_displacement_micromap[] 4156[open,refpage='VkPhysicalDeviceDisplacementMicromapPropertiesNV',desc='Structure describing the displacement micromap properties of a physical device',type='structs'] 4157-- 4158The sname:VkPhysicalDeviceDisplacementMicromapPropertiesNV structure is 4159defined as: 4160 4161include::{generated}/api/structs/VkPhysicalDeviceDisplacementMicromapPropertiesNV.adoc[] 4162 4163 * pname:sType is a elink:VkStructureType value identifying this structure. 4164 * pname:pNext is `NULL` or a pointer to a structure extending this 4165 structure. 4166 * pname:maxDisplacementMicromapSubdivisionLevel is the maximum allowed 4167 pname:subdivisionLevel for displacement micromaps. 4168 4169:refpage: VkPhysicalDeviceDisplacementMicromapPropertiesNV 4170include::{chapters}/limits.adoc[tag=limits_desc] 4171 4172include::{generated}/validity/structs/VkPhysicalDeviceDisplacementMicromapPropertiesNV.adoc[] 4173-- 4174endif::VK_NV_displacement_micromap[] 4175 4176ifdef::VK_ARM_shader_core_builtins[] 4177[open,refpage='VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM',desc='Structure describing shader core builtins properties supported by an implementation',type='structs'] 4178-- 4179The sname:VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM structure is 4180defined as: 4181 4182include::{generated}/api/structs/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.adoc[] 4183 4184 * pname:sType is a elink:VkStructureType value identifying this structure. 4185 * pname:pNext is `NULL` or a pointer to a structure extending this 4186 structure. 4187 * [[limits-shaderCoreMask]] pname:shaderCoreMask is a bitfield where each 4188 bit set represents the presence of a shader core whose ID is the bit 4189 position. 4190 The highest ID for any shader core on the device is the position of the 4191 most significant bit set. 4192 * [[limits-shaderCoreCount]] pname:shaderCoreCount is the number of shader 4193 cores on the device. 4194 * [[limits-shaderWarpsPerCore]] pname:shaderWarpsPerCore is the maximum 4195 number of simultaneously executing warps on a shader core. 4196 4197:refpage: VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM 4198include::{chapters}/limits.adoc[tag=limits_desc] 4199 4200include::{generated}/validity/structs/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.adoc[] 4201-- 4202endif::VK_ARM_shader_core_builtins[] 4203 4204ifdef::VK_NV_ray_tracing_invocation_reorder[] 4205[open,refpage='VkRayTracingInvocationReorderModeNV',desc='Enum providing a hint on how the application may: reorder',type='enums'] 4206-- 4207Values which may: be returned in the 4208pname:rayTracingInvocationReorderReorderingHint field of 4209sname:VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV are: 4210 4211include::{generated}/api/enums/VkRayTracingInvocationReorderModeNV.adoc[] 4212 4213 * ename:VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV indicates that the 4214 implementation is likely to not reorder at reorder calls. 4215 * ename:VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV indicates that 4216 the implementation is likely to reorder at reorder calls. 4217-- 4218 4219[open,refpage='VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV',desc='Structure describing shader module identifier properties of an implementation',type='structs'] 4220-- 4221The sname:VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV structure 4222is defined as: 4223 4224include::{generated}/api/structs/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.adoc[] 4225 4226 * pname:rayTracingInvocationReorderReorderingHint is a hint indicating if 4227 the implementation will actually reorder at the reorder calls. 4228 4229[NOTE] 4230.Note 4231==== 4232Because the extension changes how hits are managed there is a compatibility 4233reason to expose the extension even when an implementation does not have 4234sorting active. 4235==== 4236 4237:refpage: VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV 4238include::{chapters}/limits.adoc[tag=limits_desc] 4239 4240include::{generated}/validity/structs/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.adoc[] 4241-- 4242endif::VK_NV_ray_tracing_invocation_reorder[] 4243 4244ifdef::VK_HUAWEI_cluster_culling_shader[] 4245[open,refpage='VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI',desc='Structure describing cluster culling shader properties supported by an implementation',type='structs'] 4246-- 4247The sname:VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI structure is 4248defined as: 4249 4250include::{generated}/api/structs/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.adoc[] 4251 4252 * pname:sType is a elink:VkStructureType value identifying this structure. 4253 * pname:pNext is `NULL` or a pointer to a structure extending this 4254 structure. 4255 * pname:maxWorkGroupCount[3] is the maximum number of local workgroups 4256 that can be launched by a single command. 4257 These three value represent the maximum local workgroup count in the X, 4258 Y and Z dimensions, respectively. 4259 In the current implementation, the values of Y and Z are both implicitly 4260 set as one. 4261 groupCountX of DrawCluster command must be less than or equal to 4262 maxWorkGroupCount[0]. 4263 * pname:maxWorkGroupSize[3] is the maximum size of a local workgroup. 4264 These three value represent the maximum local workgroup size in the X, Y 4265 and Z dimensions, respectively. 4266 The x, y and z sizes, as specified by the code:LocalSize 4267ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[or code:LocalSizeId] 4268 execution mode or by the object decorated by the WorkgroupSize 4269 decoration in shader modules, must be less than or equal to the 4270 corresponding limit. 4271 In the current implementation, the maximum workgroup size of the X 4272 dimension is 32, the others are 1. 4273 * pname:maxOutputClusterCount is the maximum number of output cluster a 4274 single cluster culling shader workgroup can emit. 4275 * pname:indirectBufferOffsetAlignment indicates the alignment for cluster 4276 drawing command buffer stride. 4277 flink:vkCmdDrawClusterIndirectHUAWEI::pname:offset must be a multiple of 4278 this value. 4279 4280:refpage: VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI 4281include::{chapters}/limits.adoc[tag=limits_desc] 4282 4283include::{generated}/validity/structs/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.adoc[] 4284-- 4285endif::VK_HUAWEI_cluster_culling_shader[] 4286 4287ifdef::VK_ARM_shader_core_properties[] 4288[open,refpage='VkPhysicalDeviceShaderCorePropertiesARM',desc='Structure describing shader core properties that can be supported by an implementation',type='structs'] 4289-- 4290The sname:VkPhysicalDeviceShaderCorePropertiesARM structure is defined as: 4291 4292include::{generated}/api/structs/VkPhysicalDeviceShaderCorePropertiesARM.adoc[] 4293 4294 * pname:sType is a elink:VkStructureType value identifying this structure. 4295 * pname:pNext is `NULL` or a pointer to a structure extending this 4296 structure. 4297 * pname:pixelRate is an unsigned integer value indicating the maximum 4298 number of pixels output per clock per shader core. 4299 * pname:texelRate is an unsigned integer value indicating the maximum 4300 number of texels per clock per shader core. 4301 * pname:fmaRate is an unsigned integer value indicating the maximum number 4302 of single-precision fused multiply-add operations per clock per shader 4303 core. 4304 4305If a throughput rate cannot be determined on the physical device, the value 4306`0` will be returned for that rate. 4307 4308:refpage: VkPhysicalDeviceShaderCorePropertiesARM 4309include::{chapters}/limits.adoc[tag=limits_desc] 4310 4311include::{generated}/validity/structs/VkPhysicalDeviceShaderCorePropertiesARM.adoc[] 4312-- 4313endif::VK_ARM_shader_core_properties[] 4314 4315ifdef::VK_EXT_shader_object[] 4316[open,refpage='VkPhysicalDeviceShaderObjectPropertiesEXT',desc='Structure describing shader object properties supported by an implementation',type='structs'] 4317-- 4318The sname:VkPhysicalDeviceShaderObjectPropertiesEXT structure is defined as: 4319 4320include::{generated}/api/structs/VkPhysicalDeviceShaderObjectPropertiesEXT.adoc[] 4321 4322 * pname:sType is a elink:VkStructureType value identifying this structure. 4323 * pname:pNext is `NULL` or a pointer to a structure extending this 4324 structure. 4325 * [[limits-shaderBinaryUUID]] pname:shaderBinaryUUID is an array of 4326 ename:VK_UUID_SIZE code:uint8_t values representing a universally unique 4327 identifier for one or more implementations whose shader binaries are 4328 guaranteed to be compatible with each other. 4329 * [[limits-shaderBinaryVersion]] pname:shaderBinaryVersion is an unsigned 4330 integer incremented to represent backwards compatible differences 4331 between implementations with the same pname:shaderBinaryUUID. 4332 4333The purpose and usage of the values of this structure are described in 4334greater detail in <<shaders-objects-binary-compatibility, Binary Shader 4335Compatibility>>. 4336 4337:refpage: VkPhysicalDeviceShaderObjectPropertiesEXT 4338include::{chapters}/limits.adoc[tag=limits_desc] 4339 4340include::{generated}/validity/structs/VkPhysicalDeviceShaderObjectPropertiesEXT.adoc[] 4341-- 4342endif::VK_EXT_shader_object[] 4343 4344 4345ifdef::VK_AMDX_shader_enqueue[] 4346[open,refpage='VkPhysicalDeviceShaderEnqueuePropertiesAMDX',desc='Structure describing shader enqueue limits of an implementation',type='structs'] 4347-- 4348The sname:VkPhysicalDeviceShaderEnqueuePropertiesAMDX structure is defined 4349as: 4350 4351include::{generated}/api/structs/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.adoc[] 4352 4353The members of the sname:VkPhysicalDeviceShaderEnqueuePropertiesAMDX 4354structure describe the following limits: 4355 4356 * pname:sType is a elink:VkStructureType value identifying this structure. 4357 * pname:pNext is `NULL` or a pointer to a structure extending this 4358 structure. 4359 * [[limits-maxExecutionGraphDepth]] pname:maxExecutionGraphDepth defines 4360 the maximum node chain depth in the graph. 4361 The dispatched node is at depth 1 and the node enqueued by it is at 4362 depth 2, and so on. 4363 If a node enqueues itself, each recursive enqueue increases the depth by 4364 1 as well. 4365 * [[limits-maxExecutionGraphShaderOutputNodes]] 4366 pname:maxExecutionGraphShaderOutputNodes specifies the maximum number of 4367 unique nodes that can be dispatched from a single shader, and must be at 4368 least 256. 4369 * [[limits-maxExecutionGraphShaderPayloadSize]] 4370 pname:maxExecutionGraphShaderPayloadSize specifies the maximum total 4371 size of payload declarations in a shader. 4372 For any payload declarations that share resources, indicated by 4373 code:NodeSharesPayloadLimitsWithAMDX decorations, the maximum size of 4374 each set of shared payload declarations is taken. 4375 The sum of each shared set's maximum size and the size of each unshared 4376 payload is counted against this limit. 4377 * [[limits-maxExecutionGraphShaderPayloadCount]] 4378 pname:maxExecutionGraphShaderPayloadCount specifies the maximum number 4379 of output payloads that can be initialized in a single workgroup. 4380 * [[limits-executionGraphDispatchAddressAlignment]] 4381 pname:executionGraphDispatchAddressAlignment specifies the alignment of 4382 non-scratch basetype:VkDeviceAddress arguments consumed by graph 4383 dispatch commands. 4384 4385:refpage: VkPhysicalDeviceShaderEnqueuePropertiesAMDX 4386include::{chapters}/limits.adoc[tag=limits_desc] 4387 4388include::{generated}/validity/structs/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.adoc[] 4389-- 4390endif::VK_AMDX_shader_enqueue[] 4391 4392ifdef::VK_NV_extended_sparse_address_space[] 4393[open,refpage='VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV',desc='Structure describing sparse address space limits of an implementation',type='structs'] 4394-- 4395The sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV structure 4396is defined as: 4397 4398include::{generated}/api/structs/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.adoc[] 4399 4400 * pname:sType is a elink:VkStructureType value identifying this structure. 4401 * pname:pNext is `NULL` or a pointer to a structure extending this 4402 structure. 4403 * [[limits-extendedSparseAddressSpaceSize]] 4404 pname:extendedSparseAddressSpaceSize is the total amount of address 4405 space available, in bytes, for sparse memory resources of all usages if 4406 the <<features-extendedSparseAddressSpace, 4407 pname:extendedSparseAddressSpace>> feature is enabled. 4408 This must: be greater than or equal to 4409 sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize, and the 4410 difference in space must: only be used with usages allowed below. 4411 This is an upper bound on the sum of the sizes of all sparse resources, 4412 regardless of whether any memory is bound to them. 4413 * [[limits-extendedSparseImageUsageFlags]] 4414 pname:extendedSparseImageUsageFlags is a bitmask of 4415 elink:VkImageUsageFlagBits of usages which may: allow an implementation 4416 to use the full pname:extendedSparseAddressSpaceSize space. 4417 * [[limits-extendedSparseBufferUsageFlags]] 4418 pname:extendedSparseBufferUsageFlags is a bitmask of 4419 elink:VkBufferUsageFlagBits of usages which may: allow an implementation 4420 to use the full pname:extendedSparseAddressSpaceSize space. 4421 4422:refpage: VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV 4423include::{chapters}/limits.adoc[tag=limits_desc] 4424 4425include::{generated}/validity/structs/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.adoc[] 4426-- 4427endif::VK_NV_extended_sparse_address_space[] 4428 4429ifdef::VK_NV_cuda_kernel_launch[] 4430[open,refpage='VkPhysicalDeviceCudaKernelLaunchPropertiesNV',desc='Structure describing the compute capability version available',type='structs'] 4431-- 4432The sname:VkPhysicalDeviceCudaKernelLaunchPropertiesNV structure is defined 4433as: 4434 4435include::{generated}/api/structs/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.adoc[] 4436 4437The members of the sname:VkPhysicalDeviceCudaKernelLaunchPropertiesNV 4438structure describe the following features: 4439 4440 * [[limits-computeCapabilityMinor]] pname:computeCapabilityMinor indicates 4441 the minor version number of the compute code. 4442 * [[limits-computeCapabilityMajor]] pname:computeCapabilityMajor indicates 4443 the major version number of the compute code. 4444 4445:refpage: VkPhysicalDeviceCudaKernelLaunchPropertiesNV 4446include::{chapters}/limits.adoc[tag=limits_desc] 4447 4448include::{generated}/validity/structs/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.adoc[] 4449-- 4450endif::VK_NV_cuda_kernel_launch[] 4451 4452ifdef::VK_ANDROID_external_format_resolve[] 4453[open,refpage='VkPhysicalDeviceExternalFormatResolvePropertiesANDROID',desc='Structure describing external format resolve supported by an implementation',type='structs'] 4454-- 4455The sname:VkPhysicalDeviceExternalFormatResolvePropertiesANDROID structure 4456is defined as: 4457 4458include::{generated}/api/structs/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.adoc[] 4459 4460 * pname:sType is a elink:VkStructureType value identifying this structure. 4461 * pname:pNext is `NULL` or a pointer to a structure extending this 4462 structure. 4463 * [[limits-nullColorAttachmentWithExternalFormatResolve]] 4464 pname:nullColorAttachmentWithExternalFormatResolve indicates that there 4465 must: be no color attachment image when performing external format 4466 resolves if it is ename:VK_TRUE. 4467 * [[limits-externalFormatResolveChromaOffsetX]] 4468 pname:externalFormatResolveChromaOffsetX indicates the 4469 elink:VkChromaLocation that an implementation uses in the X axis for 4470 accesses to an external format image as a resolve attachment. 4471 This must: be consistent between external format resolves and load 4472 operations from external format resolve attachments to color attachments 4473 when pname:nullColorAttachmentWithExternalFormatResolve is 4474 ename:VK_TRUE. 4475 * [[limits-externalFormatResolveChromaOffsetY]] 4476 pname:externalFormatResolveChromaOffsetY indicates the 4477 elink:VkChromaLocation that an implementation uses in the Y axis for 4478 accesses to an external format image as a resolve attachment. 4479 This must: be consistent between external format resolves and load 4480 operations from external format resolve attachments to color attachments 4481 when pname:nullColorAttachmentWithExternalFormatResolve is 4482 ename:VK_TRUE. 4483 4484:refpage: VkPhysicalDeviceExternalFormatResolvePropertiesANDROID 4485include::{chapters}/limits.adoc[tag=limits_desc] 4486 4487include::{generated}/validity/structs/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.adoc[] 4488-- 4489endif::VK_ANDROID_external_format_resolve[] 4490 4491ifdef::VK_ARM_render_pass_striped[] 4492 4493[open,refpage='VkPhysicalDeviceRenderPassStripedPropertiesARM',desc='Structure describing striped rendering limits of an implementation',type='structs'] 4494-- 4495The sname:VkPhysicalDeviceRenderPassStripedPropertiesARM structure is 4496defined as: 4497 4498include::{generated}/api/structs/VkPhysicalDeviceRenderPassStripedPropertiesARM.adoc[] 4499 4500The members of the sname:VkPhysicalDeviceRenderPassStripedPropertiesARM 4501structure describe the following limits: 4502 4503 * pname:sType is a elink:VkStructureType value identifying this structure. 4504 * pname:pNext is `NULL` or a pointer to a structure extending this 4505 structure. 4506 * [[limits-renderPassStripeGranularity]] pname:renderPassStripeGranularity 4507 indicates the minimum supported granularity of striped render pass 4508 regions. 4509 * [[limits-maxRenderPassStripes]] pname:maxRenderPassStripes indicates the 4510 maximum number of stripes supported in striped rendering. 4511 4512:refpage: VkPhysicalDeviceRenderPassStripedPropertiesARM 4513include::{chapters}/limits.adoc[tag=limits_desc] 4514 4515include::{generated}/validity/structs/VkPhysicalDeviceRenderPassStripedPropertiesARM.adoc[] 4516-- 4517 4518endif::VK_ARM_render_pass_striped[] 4519 4520[[limits-minmax]] 4521== Limit Requirements 4522 4523The following table specifies the required: minimum/maximum for all Vulkan 4524graphics implementations. 4525Where a limit corresponds to a fine-grained device feature which is 4526optional:, the feature name is listed with two required: limits, one when 4527the feature is supported and one when it is not supported. 4528If an implementation supports a feature, the limits reported are the same 4529whether or not the feature is enabled. 4530 4531[[limits-types]] 4532.Required Limit Types 4533[width="100%",cols="<20%,<50%,<30%",options="header"] 4534|==== 4535| Type | Limit | Feature 4536| code:uint32_t | pname:maxImageDimension1D | - 4537| code:uint32_t | pname:maxImageDimension2D | - 4538| code:uint32_t | pname:maxImageDimension3D | - 4539| code:uint32_t | pname:maxImageDimensionCube | - 4540| code:uint32_t | pname:maxImageArrayLayers | - 4541| code:uint32_t | pname:maxTexelBufferElements | - 4542| code:uint32_t | pname:maxUniformBufferRange | - 4543| code:uint32_t | pname:maxStorageBufferRange | - 4544| code:uint32_t | pname:maxPushConstantsSize | - 4545| code:uint32_t | pname:maxMemoryAllocationCount | - 4546| code:uint32_t | pname:maxSamplerAllocationCount | - 4547| basetype:VkDeviceSize | pname:bufferImageGranularity | - 4548| basetype:VkDeviceSize | pname:sparseAddressSpaceSize | pname:sparseBinding 4549| code:uint32_t | pname:maxBoundDescriptorSets | - 4550| code:uint32_t | pname:maxPerStageDescriptorSamplers | - 4551| code:uint32_t | pname:maxPerStageDescriptorUniformBuffers | - 4552| code:uint32_t | pname:maxPerStageDescriptorStorageBuffers | - 4553| code:uint32_t | pname:maxPerStageDescriptorSampledImages | - 4554| code:uint32_t | pname:maxPerStageDescriptorStorageImages | - 4555| code:uint32_t | pname:maxPerStageDescriptorInputAttachments| - 4556| code:uint32_t | pname:maxPerStageResources | - 4557| code:uint32_t | pname:maxDescriptorSetSamplers | - 4558| code:uint32_t | pname:maxDescriptorSetUniformBuffers | - 4559| code:uint32_t | pname:maxDescriptorSetUniformBuffersDynamic| - 4560| code:uint32_t | pname:maxDescriptorSetStorageBuffers | - 4561| code:uint32_t | pname:maxDescriptorSetStorageBuffersDynamic| - 4562| code:uint32_t | pname:maxDescriptorSetSampledImages | - 4563| code:uint32_t | pname:maxDescriptorSetStorageImages | - 4564| code:uint32_t | pname:maxDescriptorSetInputAttachments | - 4565| code:uint32_t | pname:maxVertexInputAttributes | - 4566| code:uint32_t | pname:maxVertexInputBindings | - 4567| code:uint32_t | pname:maxVertexInputAttributeOffset | - 4568| code:uint32_t | pname:maxVertexInputBindingStride | - 4569| code:uint32_t | pname:maxVertexOutputComponents | - 4570| code:uint32_t | pname:maxTessellationGenerationLevel | pname:tessellationShader 4571| code:uint32_t | pname:maxTessellationPatchSize | pname:tessellationShader 4572| code:uint32_t | pname:maxTessellationControlPerVertexInputComponents | pname:tessellationShader 4573| code:uint32_t | pname:maxTessellationControlPerVertexOutputComponents | pname:tessellationShader 4574| code:uint32_t | pname:maxTessellationControlPerPatchOutputComponents | pname:tessellationShader 4575| code:uint32_t | pname:maxTessellationControlTotalOutputComponents | pname:tessellationShader 4576| code:uint32_t | pname:maxTessellationEvaluationInputComponents | pname:tessellationShader 4577| code:uint32_t | pname:maxTessellationEvaluationOutputComponents | pname:tessellationShader 4578| code:uint32_t | pname:maxGeometryShaderInvocations | pname:geometryShader 4579| code:uint32_t | pname:maxGeometryInputComponents | pname:geometryShader 4580| code:uint32_t | pname:maxGeometryOutputComponents | pname:geometryShader 4581| code:uint32_t | pname:maxGeometryOutputVertices | pname:geometryShader 4582| code:uint32_t | pname:maxGeometryTotalOutputComponents | pname:geometryShader 4583| code:uint32_t | pname:maxFragmentInputComponents | - 4584| code:uint32_t | pname:maxFragmentOutputAttachments | - 4585| code:uint32_t | pname:maxFragmentDualSrcAttachments | pname:dualSrcBlend 4586| code:uint32_t | pname:maxFragmentCombinedOutputResources | - 4587| code:uint32_t | pname:maxComputeSharedMemorySize | - 4588| 3 {times} code:uint32_t | pname:maxComputeWorkGroupCount | - 4589| code:uint32_t | pname:maxComputeWorkGroupInvocations | - 4590| 3 {times} code:uint32_t | pname:maxComputeWorkGroupSize | - 4591| code:uint32_t | pname:subPixelPrecisionBits | - 4592| code:uint32_t | pname:subTexelPrecisionBits | - 4593| code:uint32_t | pname:mipmapPrecisionBits | - 4594| code:uint32_t | pname:maxDrawIndexedIndexValue | pname:fullDrawIndexUint32 4595| code:uint32_t | pname:maxDrawIndirectCount | pname:multiDrawIndirect 4596| code:float | pname:maxSamplerLodBias | - 4597| code:float | pname:maxSamplerAnisotropy | pname:samplerAnisotropy 4598| code:uint32_t | pname:maxViewports | pname:multiViewport 4599| 2 {times} code:uint32_t | pname:maxViewportDimensions | - 4600| 2 {times} code:float | pname:viewportBoundsRange | - 4601| code:uint32_t | pname:viewportSubPixelBits | - 4602| code:size_t | pname:minMemoryMapAlignment | - 4603| basetype:VkDeviceSize | pname:minTexelBufferOffsetAlignment | - 4604| basetype:VkDeviceSize | pname:minUniformBufferOffsetAlignment | - 4605| basetype:VkDeviceSize | pname:minStorageBufferOffsetAlignment | - 4606| code:int32_t | pname:minTexelOffset | - 4607| code:uint32_t | pname:maxTexelOffset | - 4608| code:int32_t | pname:minTexelGatherOffset | pname:shaderImageGatherExtended 4609| code:uint32_t | pname:maxTexelGatherOffset | pname:shaderImageGatherExtended 4610| code:float | pname:minInterpolationOffset | pname:sampleRateShading 4611| code:float | pname:maxInterpolationOffset | pname:sampleRateShading 4612| code:uint32_t | pname:subPixelInterpolationOffsetBits | pname:sampleRateShading 4613| code:uint32_t | pname:maxFramebufferWidth | - 4614| code:uint32_t | pname:maxFramebufferHeight | - 4615| code:uint32_t | pname:maxFramebufferLayers | 4616ifdef::VKSC_VERSION_1_0[pname:geometryShader, pname:shaderOutputLayer] 4617ifndef::VKSC_VERSION_1_0[-] 4618| tlink:VkSampleCountFlags | pname:framebufferColorSampleCounts | - 4619ifdef::VK_VERSION_1_2[] 4620| tlink:VkSampleCountFlags | pname:framebufferIntegerColorSampleCounts | - 4621endif::VK_VERSION_1_2[] 4622| tlink:VkSampleCountFlags | pname:framebufferDepthSampleCounts | - 4623| tlink:VkSampleCountFlags | pname:framebufferStencilSampleCounts | - 4624| tlink:VkSampleCountFlags | pname:framebufferNoAttachmentsSampleCounts | - 4625| code:uint32_t | pname:maxColorAttachments | - 4626| tlink:VkSampleCountFlags | pname:sampledImageColorSampleCounts | - 4627| tlink:VkSampleCountFlags | pname:sampledImageIntegerSampleCounts | - 4628| tlink:VkSampleCountFlags | pname:sampledImageDepthSampleCounts | - 4629| tlink:VkSampleCountFlags | pname:sampledImageStencilSampleCounts | - 4630| tlink:VkSampleCountFlags | pname:storageImageSampleCounts | pname:shaderStorageImageMultisample 4631| code:uint32_t | pname:maxSampleMaskWords | - 4632| basetype:VkBool32 | pname:timestampComputeAndGraphics | - 4633| code:float | pname:timestampPeriod | - 4634| code:uint32_t | pname:maxClipDistances | pname:shaderClipDistance 4635| code:uint32_t | pname:maxCullDistances | pname:shaderCullDistance 4636| code:uint32_t | pname:maxCombinedClipAndCullDistances | pname:shaderCullDistance 4637| code:uint32_t | pname:discreteQueuePriorities | - 4638| 2 {times} code:float | pname:pointSizeRange | pname:largePoints 4639| 2 {times} code:float | pname:lineWidthRange | pname:wideLines 4640| code:float | pname:pointSizeGranularity | pname:largePoints 4641| code:float | pname:lineWidthGranularity | pname:wideLines 4642| basetype:VkBool32 | pname:strictLines | - 4643| basetype:VkBool32 | pname:standardSampleLocations | - 4644| basetype:VkDeviceSize | pname:optimalBufferCopyOffsetAlignment | - 4645| basetype:VkDeviceSize | pname:optimalBufferCopyRowPitchAlignment | - 4646| basetype:VkDeviceSize | pname:nonCoherentAtomSize | - 4647ifdef::VK_EXT_discard_rectangles[] 4648| code:uint32_t | pname:maxDiscardRectangles | `apiext:VK_EXT_discard_rectangles` 4649endif::VK_EXT_discard_rectangles[] 4650ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 4651| basetype:VkBool32 | pname:filterMinmaxSingleComponentFormats | 4652ifdef::VK_VERSION_1_2[`<<features-samplerFilterMinmax, pname:samplerFilterMinmax>>` ] 4653ifdef::VK_EXT_sampler_filter_minmax[`apiext:VK_EXT_sampler_filter_minmax`] 4654| basetype:VkBool32 | pname:filterMinmaxImageComponentMapping | 4655ifdef::VK_VERSION_1_2[`<<features-samplerFilterMinmax, pname:samplerFilterMinmax>>` ] 4656ifdef::VK_EXT_sampler_filter_minmax[`apiext:VK_EXT_sampler_filter_minmax`] 4657endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 4658ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[] 4659| basetype:VkDeviceSize | pname:maxBufferSize | `<<features-maintenance4, pname:maintenance4>>` 4660endif::VK_VERSION_1_3,VK_KHR_maintenance4[] 4661ifdef::VK_EXT_conservative_rasterization[] 4662| code:float | pname:primitiveOverestimationSize | `apiext:VK_EXT_conservative_rasterization` 4663| basetype:VkBool32 | pname:maxExtraPrimitiveOverestimationSize | `apiext:VK_EXT_conservative_rasterization` 4664| code:float | pname:extraPrimitiveOverestimationSizeGranularity | `apiext:VK_EXT_conservative_rasterization` 4665| basetype:VkBool32 | pname:degenerateTriangleRasterized | `apiext:VK_EXT_conservative_rasterization` 4666| code:float | pname:degenerateLinesRasterized | `apiext:VK_EXT_conservative_rasterization` 4667| basetype:VkBool32 | pname:fullyCoveredFragmentShaderInputVariable | `apiext:VK_EXT_conservative_rasterization` 4668| basetype:VkBool32 | pname:conservativeRasterizationPostDepthCoverage | `apiext:VK_EXT_conservative_rasterization` 4669endif::VK_EXT_conservative_rasterization[] 4670ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4671| code:uint32_t | pname:maxUpdateAfterBindDescriptorsInAllPools | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4672| basetype:VkBool32 | pname:shaderUniformBufferArrayNonUniformIndexingNative | - 4673| basetype:VkBool32 | pname:shaderSampledImageArrayNonUniformIndexingNative | - 4674| basetype:VkBool32 | pname:shaderStorageBufferArrayNonUniformIndexingNative | - 4675| basetype:VkBool32 | pname:shaderStorageImageArrayNonUniformIndexingNative | - 4676| basetype:VkBool32 | pname:shaderInputAttachmentArrayNonUniformIndexingNative | - 4677| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindSamplers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4678| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4679| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4680| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindSampledImages | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4681| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindStorageImages | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4682| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindInputAttachments| `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4683| code:uint32_t | pname:maxPerStageUpdateAfterBindResources | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4684| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindSamplers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4685| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindUniformBuffers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4686| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic| `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4687| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindStorageBuffers | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4688| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic| `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4689| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindSampledImages | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4690| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindStorageImages | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4691| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindInputAttachments | `<<features-descriptorIndexing, pname:descriptorIndexing>>` 4692endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 4693ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 4694| code:uint32_t | pname:maxInlineUniformBlockSize |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4695| code:uint32_t | pname:maxPerStageDescriptorInlineUniformBlocks |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4696| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4697| code:uint32_t | pname:maxDescriptorSetInlineUniformBlocks |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4698| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindInlineUniformBlocks |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4699endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 4700ifdef::VK_VERSION_1_3[] 4701| code:uint32_t | pname:maxInlineUniformTotalSize |`<<features-inlineUniformBlock, pname:inlineUniformBlock>>` 4702endif::VK_VERSION_1_3[] 4703ifdef::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] 4704| code:uint32_t | pname:maxVertexAttribDivisor | 4705ifdef::VK_KHR_vertex_attribute_divisor[`apiext:VK_KHR_vertex_attribute_divisor`] 4706ifndef::VK_KHR_vertex_attribute_divisor[`apiext:VK_EXT_vertex_attribute_divisor`] 4707endif::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] 4708ifdef::VK_NV_mesh_shader[] 4709| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxDrawMeshTasksCount | `apiext:VK_NV_mesh_shader` 4710| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskWorkGroupInvocations | `apiext:VK_NV_mesh_shader` 4711| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskWorkGroupSize | `apiext:VK_NV_mesh_shader` 4712| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskTotalMemorySize | `apiext:VK_NV_mesh_shader` 4713| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskOutputCount | `apiext:VK_NV_mesh_shader` 4714| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshWorkGroupInvocations | `apiext:VK_NV_mesh_shader` 4715| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshWorkGroupSize | `apiext:VK_NV_mesh_shader` 4716| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshTotalMemorySize | `apiext:VK_NV_mesh_shader` 4717| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshOutputVertices | `apiext:VK_NV_mesh_shader` 4718| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshOutputPrimitives | `apiext:VK_NV_mesh_shader` 4719| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshMultiviewViewCount | `apiext:VK_NV_mesh_shader` 4720| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:meshOutputPerVertexGranularity | `apiext:VK_NV_mesh_shader` 4721| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:meshOutputPerPrimitiveGranularity | `apiext:VK_NV_mesh_shader` 4722endif::VK_NV_mesh_shader[] 4723ifdef::VK_EXT_mesh_shader[] 4724| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupTotalCount | `apiext:VK_EXT_mesh_shader` 4725| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupCount | `apiext:VK_EXT_mesh_shader` 4726| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupInvocations | `apiext:VK_EXT_mesh_shader` 4727| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupSize | `apiext:VK_EXT_mesh_shader` 4728| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskPayloadSize | `apiext:VK_EXT_mesh_shader` 4729| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskSharedMemorySize | `apiext:VK_EXT_mesh_shader` 4730| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskPayloadAndSharedMemorySize | `apiext:VK_EXT_mesh_shader` 4731| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupTotalCount | `apiext:VK_EXT_mesh_shader` 4732| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupCount | `apiext:VK_EXT_mesh_shader` 4733| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupInvocations | `apiext:VK_EXT_mesh_shader` 4734| 3 {times} code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupSize | `apiext:VK_EXT_mesh_shader` 4735| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshSharedMemorySize | `apiext:VK_EXT_mesh_shader` 4736| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshPayloadAndSharedMemorySize | `apiext:VK_EXT_mesh_shader` 4737| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputMemorySize | `apiext:VK_EXT_mesh_shader` 4738| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshPayloadAndOutputMemorySize | `apiext:VK_EXT_mesh_shader` 4739| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputComponents | `apiext:VK_EXT_mesh_shader` 4740| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputVertices | `apiext:VK_EXT_mesh_shader` 4741| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputPrimitives | `apiext:VK_EXT_mesh_shader` 4742| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputLayers | `apiext:VK_EXT_mesh_shader` 4743| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshMultiviewViewCount | `apiext:VK_EXT_mesh_shader` 4744| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:meshOutputPerVertexGranularity | `apiext:VK_EXT_mesh_shader` 4745| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:meshOutputPerPrimitiveGranularity | `apiext:VK_EXT_mesh_shader` 4746| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxPreferredTaskWorkGroupInvocations | `apiext:VK_EXT_mesh_shader` 4747| code:uint32_t | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxPreferredMeshWorkGroupInvocations | `apiext:VK_EXT_mesh_shader` 4748| basetype:VkBool32 | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersLocalInvocationVertexOutput | `apiext:VK_EXT_mesh_shader` 4749| basetype:VkBool32 | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersLocalInvocationPrimitiveOutput | `apiext:VK_EXT_mesh_shader` 4750| basetype:VkBool32 | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersCompactVertexOutput | `apiext:VK_EXT_mesh_shader` 4751| basetype:VkBool32 | slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersCompactPrimitiveOutput | `apiext:VK_EXT_mesh_shader` 4752endif::VK_EXT_mesh_shader[] 4753ifdef::VK_EXT_transform_feedback[] 4754| code:uint32_t | pname:maxTransformFeedbackStreams | `apiext:VK_EXT_transform_feedback` 4755| code:uint32_t | pname:maxTransformFeedbackBuffers | `apiext:VK_EXT_transform_feedback` 4756| basetype:VkDeviceSize | pname:maxTransformFeedbackBufferSize | `apiext:VK_EXT_transform_feedback` 4757| code:uint32_t | pname:maxTransformFeedbackStreamDataSize | `apiext:VK_EXT_transform_feedback` 4758| code:uint32_t | pname:maxTransformFeedbackBufferDataSize | `apiext:VK_EXT_transform_feedback` 4759| code:uint32_t | pname:maxTransformFeedbackBufferDataStride | `apiext:VK_EXT_transform_feedback` 4760| basetype:VkBool32 | pname:transformFeedbackQueries | `apiext:VK_EXT_transform_feedback` 4761| basetype:VkBool32 | pname:transformFeedbackStreamsLinesTriangles | `apiext:VK_EXT_transform_feedback` 4762| basetype:VkBool32 | pname:transformFeedbackRasterizationStreamSelect | `apiext:VK_EXT_transform_feedback` 4763| basetype:VkBool32 | pname:transformFeedbackDraw | `apiext:VK_EXT_transform_feedback` 4764endif::VK_EXT_transform_feedback[] 4765ifdef::VK_EXT_fragment_density_map[] 4766| slink:VkExtent2D | pname:minFragmentDensityTexelSize | `<<features-fragmentDensityMap, pname:fragmentDensityMap>>` 4767| slink:VkExtent2D | pname:maxFragmentDensityTexelSize | `<<features-fragmentDensityMap, pname:fragmentDensityMap>>` 4768| basetype:VkBool32 | pname:fragmentDensityInvocations | `<<features-fragmentDensityMap, pname:fragmentDensityMap>>` 4769ifdef::VK_EXT_fragment_density_map2[] 4770| basetype:VkBool32 | pname:subsampledLoads | `apiext:VK_EXT_fragment_density_map2` 4771| basetype:VkBool32 | pname:subsampledCoarseReconstructionEarlyAccess | `apiext:VK_EXT_fragment_density_map2` 4772| code:uint32_t | pname:maxSubsampledArrayLayers | `apiext:VK_EXT_fragment_density_map2` 4773| code:uint32_t | pname:maxDescriptorSetSubsampledSamplers | `apiext:VK_EXT_fragment_density_map2` 4774endif::VK_EXT_fragment_density_map2[] 4775ifdef::VK_QCOM_fragment_density_map_offset[] 4776| slink:VkExtent2D | pname:fragmentDensityOffsetGranularity | `<<features-fragmentDensityMapOffsets, pname:fragmentDensityMapOffset>>` 4777endif::VK_QCOM_fragment_density_map_offset[] 4778endif::VK_EXT_fragment_density_map[] 4779ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[] 4780| code:uint32_t | pname:maxGeometryCount | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_acceleration_structure` 4781| code:uint32_t | pname:maxInstanceCount | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_acceleration_structure` 4782endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[] 4783ifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 4784| code:uint32_t | pname:shaderGroupHandleSize | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_ray_tracing_pipeline` 4785| code:uint32_t | pname:maxShaderGroupStride | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_ray_tracing_pipeline` 4786| code:uint32_t | pname:shaderGroupBaseAlignment | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_ray_tracing_pipeline` 4787endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 4788ifdef::VK_NV_ray_tracing[] 4789| code:uint32_t | pname:maxRecursionDepth | `apiext:VK_NV_ray_tracing` 4790| code:uint32_t | pname:maxTriangleCount | `apiext:VK_NV_ray_tracing` 4791endif::VK_NV_ray_tracing[] 4792ifdef::VK_KHR_acceleration_structure[] 4793| code:uint32_t | pname:maxPerStageDescriptorAccelerationStructures 4794 | `apiext:VK_KHR_acceleration_structure` 4795| code:uint32_t | pname:maxPerStageDescriptorUpdateAfterBindAccelerationStructures 4796 | `apiext:VK_KHR_acceleration_structure` 4797endif::VK_KHR_acceleration_structure[] 4798ifdef::VK_NV_ray_tracing,VK_KHR_acceleration_structure[] 4799| code:uint32_t | pname:maxDescriptorSetAccelerationStructures | `apiext:VK_NV_ray_tracing`, `apiext:VK_KHR_acceleration_structure` 4800endif::VK_NV_ray_tracing,VK_KHR_acceleration_structure[] 4801ifdef::VK_KHR_acceleration_structure[] 4802| code:uint32_t | pname:maxDescriptorSetUpdateAfterBindAccelerationStructures 4803 | `apiext:VK_KHR_acceleration_structure` 4804| code:uint32_t | pname:minAccelerationStructureScratchOffsetAlignment 4805 | `apiext:VK_KHR_acceleration_structure` 4806endif::VK_KHR_acceleration_structure[] 4807ifdef::VK_KHR_ray_tracing_pipeline[] 4808| code:uint32_t | pname:maxRayRecursionDepth | `apiext:VK_KHR_ray_tracing_pipeline` 4809| code:uint32_t | pname:shaderGroupHandleCaptureReplaySize | `apiext:VK_KHR_ray_tracing_pipeline` 4810| code:uint32_t | pname:maxRayDispatchInvocationCount | `apiext:VK_KHR_ray_tracing_pipeline` 4811| code:uint32_t | pname:shaderGroupHandleAlignment | `apiext:VK_KHR_ray_tracing_pipeline` 4812| code:uint32_t | pname:maxRayHitAttributeSize | `apiext:VK_KHR_ray_tracing_pipeline` 4813endif::VK_KHR_ray_tracing_pipeline[] 4814ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 4815| code:uint64_t | pname:maxTimelineSemaphoreValueDifference | `<<features-timelineSemaphore, pname:timelineSemaphore>>` 4816endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 4817ifdef::VK_EXT_line_rasterization[] 4818| code:uint32_t | pname:lineSubPixelPrecisionBits | `apiext:VK_EXT_line_rasterization` 4819endif::VK_EXT_line_rasterization[] 4820ifdef::VK_EXT_custom_border_color[] 4821| code:uint32_t | pname:maxCustomBorderColorSamplers | `apiext:VK_EXT_custom_border_color` 4822endif::VK_EXT_custom_border_color[] 4823ifdef::VK_EXT_robustness2[] 4824| basetype:VkDeviceSize | pname:robustStorageBufferAccessSizeAlignment | `apiext:VK_EXT_robustness2` 4825| basetype:VkDeviceSize | pname:robustUniformBufferAccessSizeAlignment | `apiext:VK_EXT_robustness2` 4826endif::VK_EXT_robustness2[] 4827ifdef::VK_KHR_fragment_shading_rate[] 4828| 2 {times} code:uint32_t | pname:minFragmentShadingRateAttachmentTexelSize | `<<features-attachmentFragmentShadingRate, pname:attachmentFragmentShadingRate>>` 4829| 2 {times} code:uint32_t | pname:maxFragmentShadingRateAttachmentTexelSize | `<<features-attachmentFragmentShadingRate, pname:attachmentFragmentShadingRate>>` 4830| code:uint32_t | pname:maxFragmentShadingRateAttachmentTexelSizeAspectRatio | `<<features-attachmentFragmentShadingRate, pname:attachmentFragmentShadingRate>>` 4831| basetype:VkBool32 | pname:primitiveFragmentShadingRateWithMultipleViewports | `<<features-primitiveFragmentShadingRate, pname:primitiveFragmentShadingRate>>` 4832| basetype:VkBool32 | pname:layeredShadingRateAttachments | `<<features-attachmentFragmentShadingRate, pname:attachmentFragmentShadingRate>>` 4833| basetype:VkBool32 | pname:fragmentShadingRateNonTrivialCombinerOps | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4834| 2 {times} code:uint32_t | pname:maxFragmentSize | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4835| code:uint32_t | pname:maxFragmentSizeAspectRatio | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4836| code:uint32_t | pname:maxFragmentShadingRateCoverageSamples | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4837| elink:VkSampleCountFlagBits | pname:maxFragmentShadingRateRasterizationSamples | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4838| basetype:VkBool32 | pname:fragmentShadingRateWithShaderDepthStencilWrites | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4839| basetype:VkBool32 | pname:fragmentShadingRateWithSampleMask | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4840| basetype:VkBool32 | pname:fragmentShadingRateWithShaderSampleMask | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4841| basetype:VkBool32 | pname:fragmentShadingRateWithConservativeRasterization | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4842| basetype:VkBool32 | pname:fragmentShadingRateWithFragmentShaderInterlock | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4843| basetype:VkBool32 | pname:fragmentShadingRateWithCustomSampleLocations | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4844| basetype:VkBool32 | pname:fragmentShadingRateStrictMultiplyCombiner | `<<features-pipelineFragmentShadingRate, pname:pipelineFragmentShadingRate>>` 4845endif::VK_KHR_fragment_shading_rate[] 4846ifdef::VK_NV_fragment_shading_rate_enums[] 4847| elink:VkSampleCountFlagBits | pname:maxFragmentShadingRateInvocationCount | `<<features-supersampleFragmentShadingRates, pname:supersampleFragmentShadingRates>>` 4848endif::VK_NV_fragment_shading_rate_enums[] 4849ifdef::VK_EXT_descriptor_buffer[] 4850| basetype:VkBool32 | pname:combinedImageSamplerDescriptorSingleArray | `<<VK_EXT_descriptor_buffer>>` 4851| basetype:VkBool32 | pname:bufferlessPushDescriptors | `<<VK_EXT_descriptor_buffer>>` 4852| basetype:VkBool32 | pname:allowSamplerImageViewPostSubmitCreation | `<<VK_EXT_descriptor_buffer>>` 4853| basetype:VkDeviceSize | pname:descriptorBufferOffsetAlignment | `<<VK_EXT_descriptor_buffer>>` 4854| code:uint32_t | pname:maxDescriptorBufferBindings | `<<VK_EXT_descriptor_buffer>>` 4855| code:uint32_t | pname:maxResourceDescriptorBufferBindings | `<<VK_EXT_descriptor_buffer>>` 4856| code:uint32_t | pname:maxSamplerDescriptorBufferBindings | `<<VK_EXT_descriptor_buffer>>` 4857| code:uint32_t | pname:maxEmbeddedImmutableSamplerBindings | `<<VK_EXT_descriptor_buffer>>` 4858| code:uint32_t | pname:maxEmbeddedImmutableSamplers | `<<VK_EXT_descriptor_buffer>>` 4859| code:size_t | pname:bufferCaptureReplayDescriptorDataSize | `<<VK_EXT_descriptor_buffer>>` 4860| code:size_t | pname:imageCaptureReplayDescriptorDataSize | `<<VK_EXT_descriptor_buffer>>` 4861| code:size_t | pname:imageViewCaptureReplayDescriptorDataSize | `<<VK_EXT_descriptor_buffer>>` 4862| code:size_t | pname:samplerCaptureReplayDescriptorDataSize | `<<VK_EXT_descriptor_buffer>>` 4863| code:size_t | pname:accelerationStructureCaptureReplayDescriptorDataSize | `<<VK_EXT_descriptor_buffer>>` 4864| code:size_t | pname:samplerDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4865| code:size_t | pname:combinedImageSamplerDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4866| code:size_t | pname:sampledImageDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4867| code:size_t | pname:storageImageDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4868| code:size_t | pname:uniformTexelBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4869| code:size_t | pname:robustUniformTexelBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4870| code:size_t | pname:storageTexelBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4871| code:size_t | pname:robustStorageTexelBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4872| code:size_t | pname:uniformBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4873| code:size_t | pname:robustUniformBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4874| code:size_t | pname:storageBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4875| code:size_t | pname:robustStorageBufferDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4876| code:size_t | pname:inputAttachmentDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4877| code:size_t | pname:accelerationStructureDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4878| basetype:VkDeviceSize | pname:maxSamplerDescriptorBufferRange | `<<VK_EXT_descriptor_buffer>>` 4879| basetype:VkDeviceSize | pname:maxResourceDescriptorBufferRange | `<<VK_EXT_descriptor_buffer>>` 4880| basetype:VkDeviceSize | pname:samplerDescriptorBufferAddressSpaceSize | `<<VK_EXT_descriptor_buffer>>` 4881| basetype:VkDeviceSize | pname:resourceDescriptorBufferAddressSpaceSize | `<<VK_EXT_descriptor_buffer>>` 4882| basetype:VkDeviceSize | pname:descriptorBufferAddressSpaceSize | `<<VK_EXT_descriptor_buffer>>` 4883ifdef::VK_EXT_fragment_density_map[] 4884| code:size_t | pname:combinedImageSamplerDensityMapDescriptorSize | `<<VK_EXT_descriptor_buffer>>` 4885endif::VK_EXT_fragment_density_map[] 4886endif::VK_EXT_descriptor_buffer[] 4887ifdef::VK_HUAWEI_subpass_shading[] 4888| code:uint32_t | pname:maxSubpassShadingWorkgroupSizeAspectRatio | `<<features-subpassShading, pname:subpassShading>>` 4889endif::VK_HUAWEI_subpass_shading[] 4890ifdef::VKSC_VERSION_1_0[] 4891| basetype:VkBool32 | pname:deviceNoDynamicHostAllocations | - 4892| basetype:VkBool32 | pname:deviceDestroyFreesMemory | - 4893| basetype:VkBool32 | pname:commandPoolMultipleCommandBuffersRecording | - 4894| basetype:VkBool32 | pname:commandPoolResetCommandBuffer | - 4895| basetype:VkBool32 | pname:commandBufferSimultaneousUse | - 4896| basetype:VkBool32 | pname:secondaryCommandBufferNullOrImagelessFramebuffer | - 4897| basetype:VkBool32 | pname:recycleDescriptorSetMemory | - 4898| basetype:VkBool32 | pname:recyclePipelineMemory | - 4899| code:uint32_t | pname:maxRenderPassSubpasses | - 4900| code:uint32_t | pname:maxRenderPassDependencies | - 4901| code:uint32_t | pname:maxSubpassInputAttachments | - 4902| code:uint32_t | pname:maxSubpassPreserveAttachments | - 4903| code:uint32_t | pname:maxFramebufferAttachments | - 4904| code:uint32_t | pname:maxDescriptorSetLayoutBindings | - 4905| code:uint32_t | pname:maxQueryFaultCount | - 4906| code:uint32_t | pname:maxCallbackFaultCount | - 4907| code:uint32_t | pname:maxCommandPoolCommandBuffers | - 4908| basetype:VkDeviceSize | pname:maxCommandBufferSize | - 4909endif::VKSC_VERSION_1_0[] 4910ifdef::VK_EXT_graphics_pipeline_library[] 4911| basetype:VkBool32 | pname:graphicsPipelineLibraryFastLinking | `<<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>>` 4912| basetype:VkBool32 | pname:graphicsPipelineLibraryIndependentInterpolationDecoration | `<<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>>` 4913endif::VK_EXT_graphics_pipeline_library[] 4914ifdef::VK_KHR_fragment_shader_barycentric[] 4915| basetype:VkBool32 | pname:triStripVertexOrderIndependentOfProvokingVertex | - 4916endif::VK_KHR_fragment_shader_barycentric[] 4917ifdef::VK_QCOM_image_processing[] 4918| code:uint32_t | pname:maxWeightFilterPhases | `<<features-textureSampleWeighted, pname:textureSampleWeighted>>` 4919| 2 {times} code:uint32_t | pname:maxWeightFilterDimension | `<<features-textureSampleWeighted, pname:textureSampleWeighted>>` 4920| 2 {times} code:uint32_t | pname:maxBlockMatchRegion | `<<features-textureBlockMatch, pname:textureBlockMatch>>` 4921| 2 {times} code:uint32_t | pname:maxBoxFilterBlockSize | `<<features-textureBoxFilter, pname:textureBoxFilter>>` 4922endif::VK_QCOM_image_processing[] 4923ifdef::VK_EXT_extended_dynamic_state3[] 4924| basetype:VkBool32 | pname:dynamicPrimitiveTopologyUnrestricted | `apiext:VK_EXT_extended_dynamic_state3` 4925endif::VK_EXT_extended_dynamic_state3[] 4926ifdef::VK_EXT_opacity_micromap[] 4927| code:uint32_t | pname:maxOpacity2StateSubdivisionLevel | `apiext:VK_EXT_opacity_micromap` 4928| code:uint32_t | pname:maxOpacity4StateSubdivisionLevel | `apiext:VK_EXT_opacity_micromap` 4929endif::VK_EXT_opacity_micromap[] 4930ifdef::VK_NV_memory_decompression[] 4931| code:uint64_t | pname:maxDecompressionIndirectCount | `apiext:VK_NV_memory_decompression` 4932endif::VK_NV_memory_decompression[] 4933ifdef::VK_HUAWEI_cluster_culling_shader[] 4934| 3 {times} code:uint32_t | 4935pname:maxWorkGroupCount | `apiext:VK_HUAWEI_cluster_culling_shader` 4936| 3 {times} code:uint32_t | 4937pname:maxWorkGroupSize | `apiext:VK_HUAWEI_cluster_culling_shader` 4938| code:uint32_t | 4939pname:maxOutputClusterCount | `apiext:VK_HUAWEI_cluster_culling_shader` 4940| basetype:VkDeviceSize | 4941pname:indirectBufferOffsetAlignment | `apiext:VK_HUAWEI_cluster_culling_shader` 4942endif::VK_HUAWEI_cluster_culling_shader[] 4943ifdef::VK_AMDX_shader_enqueue[] 4944| code:uint32_t | pname:maxExecutionGraphDepth | `<<features-shaderEnqueue,pname:shaderEnqueue>>` 4945| code:uint32_t | pname:maxExecutionGraphShaderOutputNodes | `<<features-shaderEnqueue,pname:shaderEnqueue>>` 4946| code:uint32_t | pname:maxExecutionGraphShaderPayloadSize | `<<features-shaderEnqueue,pname:shaderEnqueue>>` 4947| code:uint32_t | pname:maxExecutionGraphShaderPayloadCount | `<<features-shaderEnqueue,pname:shaderEnqueue>>` 4948| code:uint32_t | pname:executionGraphDispatchAddressAlignment | `<<features-shaderEnqueue,pname:shaderEnqueue>>` 4949endif::VK_AMDX_shader_enqueue[] 4950ifdef::VK_NV_extended_sparse_address_space[] 4951| basetype:VkDeviceSize | pname:extendedSparseAddressSpaceSize | pname:sparseBinding, `<<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>>` 4952endif::VK_NV_extended_sparse_address_space[] 4953|==== 4954 4955[[limits-required]] 4956.Required Limits 4957[width="100%",cols="<35,<9,<14,<11",options="header"] 4958|==== 4959| Limit | Unsupported Limit | Supported Limit | Limit Type^1^ 4960| pname:maxImageDimension1D | - | 4096 | min 4961| pname:maxImageDimension2D | - | 4096 | min 4962| pname:maxImageDimension3D | - | 256 | min 4963| pname:maxImageDimensionCube | - | 4096 | min 4964| pname:maxImageArrayLayers | - | 256 | min 4965| pname:maxTexelBufferElements | - | 65536 | min 4966| pname:maxUniformBufferRange | - | 16384 | min 4967| pname:maxStorageBufferRange | - | 2^27^ | min 4968| pname:maxPushConstantsSize | - | 128 | min 4969| pname:maxMemoryAllocationCount | - | 4096 | min 4970| pname:maxSamplerAllocationCount | - | 4000 | min 4971| pname:bufferImageGranularity | - | 131072 | max 4972| pname:sparseAddressSpaceSize | 0 | 2^31^ | min 4973| pname:maxBoundDescriptorSets | - | 4 | min 4974| pname:maxPerStageDescriptorSamplers | - | 16 | min 4975| pname:maxPerStageDescriptorUniformBuffers | - | 12 | min 4976| pname:maxPerStageDescriptorStorageBuffers | - | 4 | min 4977| pname:maxPerStageDescriptorSampledImages | - | 16 | min 4978| pname:maxPerStageDescriptorStorageImages | - | 4 | min 4979| pname:maxPerStageDescriptorInputAttachments| - | 4 | min 4980| pname:maxPerStageResources | - | 128 ^2^ | min 4981| pname:maxDescriptorSetSamplers | - | 96 ^8^ | min, _n_ {times} PerStage 4982| pname:maxDescriptorSetUniformBuffers | - | 72 ^8^ | min, _n_ {times} PerStage 4983| pname:maxDescriptorSetUniformBuffersDynamic| - | 8 | min 4984| pname:maxDescriptorSetStorageBuffers | - | 24 ^8^ | min, _n_ {times} PerStage 4985| pname:maxDescriptorSetStorageBuffersDynamic| - | 4 | min 4986| pname:maxDescriptorSetSampledImages | - | 96 ^8^ | min, _n_ {times} PerStage 4987| pname:maxDescriptorSetStorageImages | - | 24 ^8^ | min, _n_ {times} PerStage 4988| pname:maxDescriptorSetInputAttachments | - | 4 | min 4989| pname:maxVertexInputAttributes | - | 16 | min 4990ifndef::VK_KHR_portability_subset[] 4991| pname:maxVertexInputBindings | - | 16 | min 4992endif::VK_KHR_portability_subset[] 4993ifdef::VK_KHR_portability_subset[] 4994| pname:maxVertexInputBindings | - | 16 ^10^ | min 4995endif::VK_KHR_portability_subset[] 4996| pname:maxVertexInputAttributeOffset | - | 2047 | min 4997| pname:maxVertexInputBindingStride | - | 2048 | min 4998| pname:maxVertexOutputComponents | - | 64 | min 4999| pname:maxTessellationGenerationLevel | 0 | 64 | min 5000| pname:maxTessellationPatchSize | 0 | 32 | min 5001| pname:maxTessellationControlPerVertexInputComponents | 0 |64 | min 5002| pname:maxTessellationControlPerVertexOutputComponents | 0 |64 | min 5003| pname:maxTessellationControlPerPatchOutputComponents | 0 |120 | min 5004| pname:maxTessellationControlTotalOutputComponents | 0 |2048 | min 5005| pname:maxTessellationEvaluationInputComponents | 0 |64 | min 5006| pname:maxTessellationEvaluationOutputComponents | 0 |64 | min 5007| pname:maxGeometryShaderInvocations | 0 | 32 | min 5008| pname:maxGeometryInputComponents | 0 | 64 | min 5009| pname:maxGeometryOutputComponents | 0 | 64 | min 5010| pname:maxGeometryOutputVertices | 0 | 256 | min 5011| pname:maxGeometryTotalOutputComponents | 0 | 1024 | min 5012| pname:maxFragmentInputComponents | - | 64 | min 5013| pname:maxFragmentOutputAttachments | - | 4 | min 5014| pname:maxFragmentDualSrcAttachments | 0 | 1 | min 5015| pname:maxFragmentCombinedOutputResources | - | 4 | min 5016| pname:maxComputeSharedMemorySize | - | 16384 | min 5017| pname:maxComputeWorkGroupCount | - | (65535,65535,65535) | min 5018| pname:maxComputeWorkGroupInvocations | - | 128 | min 5019| pname:maxComputeWorkGroupSize | - | (128,128,64) | min 5020| pname:subPixelPrecisionBits | - | 4 | min 5021| pname:subTexelPrecisionBits | - | 4 | min 5022| pname:mipmapPrecisionBits | - | 4 | min 5023| pname:maxDrawIndexedIndexValue | 2^24^-1 | 2^32^-1 | min 5024| pname:maxDrawIndirectCount | 1 | 2^16^-1 | min 5025| pname:maxSamplerLodBias | - | 2 | min 5026| pname:maxSamplerAnisotropy | 1 | 16 | min 5027| pname:maxViewports | 1 | 16 | min 5028| pname:maxViewportDimensions | - | (4096,4096) ^3^ | min 5029| pname:viewportBoundsRange | - | (-8192,8191) ^4^ | (max,min) 5030| pname:viewportSubPixelBits | - | 0 | min 5031| pname:minMemoryMapAlignment | - | 64 | min 5032| pname:minTexelBufferOffsetAlignment | - | 256 | max 5033| pname:minUniformBufferOffsetAlignment | - | 256 | max 5034| pname:minStorageBufferOffsetAlignment | - | 256 | max 5035| pname:minTexelOffset | - | -8 | max 5036| pname:maxTexelOffset | - | 7 | min 5037| pname:minTexelGatherOffset | 0 | -8 | max 5038| pname:maxTexelGatherOffset | 0 | 7 | min 5039| pname:minInterpolationOffset |0.0| -0.5 ^5^ | max 5040| pname:maxInterpolationOffset |0.0| 0.5 - (1 ULP) ^5^ | min 5041| pname:subPixelInterpolationOffsetBits | 0 | 4 ^5^ | min 5042| pname:maxFramebufferWidth | - | 4096 | min 5043| pname:maxFramebufferHeight | - | 4096 | min 5044| pname:maxFramebufferLayers | 5045ifdef::VKSC_VERSION_1_0[1] 5046ifndef::VKSC_VERSION_1_0[-] 5047| 256 | min 5048| pname:framebufferColorSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5049ifdef::VK_VERSION_1_2[] 5050| pname:framebufferIntegerColorSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT) | min 5051endif::VK_VERSION_1_2[] 5052| pname:framebufferDepthSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5053| pname:framebufferStencilSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5054| pname:framebufferNoAttachmentsSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5055| pname:maxColorAttachments | - | 4 | min 5056| pname:sampledImageColorSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5057| pname:sampledImageIntegerSampleCounts | - | ename:VK_SAMPLE_COUNT_1_BIT | min 5058| pname:sampledImageDepthSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5059| pname:sampledImageStencilSampleCounts | - | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5060| pname:storageImageSampleCounts | ename:VK_SAMPLE_COUNT_1_BIT | (ename:VK_SAMPLE_COUNT_1_BIT \| ename:VK_SAMPLE_COUNT_4_BIT) | min 5061| pname:maxSampleMaskWords | - | 1 | min 5062| pname:timestampComputeAndGraphics | - | - |implementation-dependent 5063| pname:timestampPeriod | - | - |duration 5064| pname:maxClipDistances | 0 | 8 | min 5065| pname:maxCullDistances | 0 | 8 | min 5066| pname:maxCombinedClipAndCullDistances | 0 | 8 | min 5067| pname:discreteQueuePriorities | - | 2 | min 5068| pname:pointSizeRange | (1.0,1.0) | (1.0,64.0 - ULP)^6^| (max,min) 5069| pname:lineWidthRange | (1.0,1.0) | (1.0,8.0 - ULP)^7^ | (max,min) 5070| pname:pointSizeGranularity | 0.0 | 1.0 ^6^ | max, fixed point increment 5071| pname:lineWidthGranularity | 0.0 | 1.0 ^7^ | max, fixed point increment 5072| pname:strictLines | - | - | implementation-dependent 5073| pname:standardSampleLocations | - | - | implementation-dependent 5074| pname:optimalBufferCopyOffsetAlignment | - | - | recommendation 5075| pname:optimalBufferCopyRowPitchAlignment | - | - | recommendation 5076| pname:nonCoherentAtomSize | - | 256 | max 5077ifdef::VK_KHR_push_descriptor[] 5078| pname:maxPushDescriptors | - | 32 | min 5079endif::VK_KHR_push_descriptor[] 5080ifdef::VK_VERSION_1_1,VK_KHR_multiview[] 5081| pname:maxMultiviewViewCount | - | 6 | min 5082| pname:maxMultiviewInstanceIndex | - | 2^27^-1 | min 5083endif::VK_VERSION_1_1,VK_KHR_multiview[] 5084ifdef::VK_EXT_discard_rectangles[] 5085| pname:maxDiscardRectangles | 0 | 4 | min 5086endif::VK_EXT_discard_rectangles[] 5087ifdef::VK_EXT_sample_locations[] 5088| pname:sampleLocationSampleCounts | - | ename:VK_SAMPLE_COUNT_4_BIT | min 5089| pname:maxSampleLocationGridSize | - | (1,1) | min 5090| pname:sampleLocationCoordinateRange | - | (0.0, 0.9375) | (max,min) 5091| pname:sampleLocationSubPixelBits | - | 4 | min 5092| pname:variableSampleLocations | - |false| implementation-dependent 5093endif::VK_EXT_sample_locations[] 5094ifdef::VK_EXT_external_memory_host[] 5095| pname:minImportedHostPointerAlignment | - | 65536 | max 5096endif::VK_EXT_external_memory_host[] 5097ifdef::VK_NVX_multiview_per_view_attributes[] 5098| pname:perViewPositionAllComponents | - | - | implementation-dependent 5099endif::VK_NVX_multiview_per_view_attributes[] 5100ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 5101| pname:filterMinmaxSingleComponentFormats | - | - | implementation-dependent 5102| pname:filterMinmaxImageComponentMapping | - | - | implementation-dependent 5103endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] 5104ifdef::VK_EXT_blend_operation_advanced[] 5105| pname:advancedBlendMaxColorAttachments | - | 1 | min 5106| pname:advancedBlendIndependentBlend | - |false| implementation-dependent 5107| pname:advancedBlendNonPremultipliedSrcColor | - |false| implementation-dependent 5108| pname:advancedBlendNonPremultipliedDstColor | - |false| implementation-dependent 5109| pname:advancedBlendCorrelatedOverlap | - |false| implementation-dependent 5110| pname:advancedBlendAllOperations | - |false| implementation-dependent 5111endif::VK_EXT_blend_operation_advanced[] 5112ifdef::VK_VERSION_1_1,VK_KHR_maintenance3[] 5113| pname:maxPerSetDescriptors | - |1024 | min 5114| pname:maxMemoryAllocationSize | - | 2^30^ | min 5115endif::VK_VERSION_1_1,VK_KHR_maintenance3[] 5116ifdef::VK_VERSION_1_3,VK_KHR_maintenance4[] 5117| pname:maxBufferSize | - | 2^30^ | min 5118endif::VK_VERSION_1_3,VK_KHR_maintenance4[] 5119ifdef::VK_EXT_conservative_rasterization[] 5120| pname:primitiveOverestimationSize | - |0.0 | min 5121| pname:maxExtraPrimitiveOverestimationSize | - |0.0 | min 5122| pname:extraPrimitiveOverestimationSizeGranularity | - |0.0 | min 5123| pname:primitiveUnderestimation | - |false | implementation-dependent 5124| pname:conservativePointAndLineRasterization | - |false | implementation-dependent 5125| pname:degenerateTrianglesRasterized | - |false | implementation-dependent 5126| pname:degenerateLinesRasterized | - |false | implementation-dependent 5127| pname:fullyCoveredFragmentShaderInputVariable | - |false | implementation-dependent 5128| pname:conservativeRasterizationPostDepthCoverage | - |false | implementation-dependent 5129endif::VK_EXT_conservative_rasterization[] 5130ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 5131| pname:maxUpdateAfterBindDescriptorsInAllPools | 0 |500000| min 5132| pname:shaderUniformBufferArrayNonUniformIndexingNative | - |false| implementation-dependent 5133| pname:shaderSampledImageArrayNonUniformIndexingNative | - |false| implementation-dependent 5134| pname:shaderStorageBufferArrayNonUniformIndexingNative | - |false| implementation-dependent 5135| pname:shaderStorageImageArrayNonUniformIndexingNative | - |false| implementation-dependent 5136| pname:shaderInputAttachmentArrayNonUniformIndexingNative | - |false| implementation-dependent 5137| pname:maxPerStageDescriptorUpdateAfterBindSamplers | 0^9^ |500000 ^9^ | min 5138| pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers | 0^9^ |12 ^9^ | min 5139| pname:maxPerStageDescriptorUpdateAfterBindStorageBuffers | 0^9^ |500000 ^9^ | min 5140| pname:maxPerStageDescriptorUpdateAfterBindSampledImages | 0^9^ |500000 ^9^ | min 5141| pname:maxPerStageDescriptorUpdateAfterBindStorageImages | 0^9^ |500000 ^9^ | min 5142| pname:maxPerStageDescriptorUpdateAfterBindInputAttachments| 0^9^ |4 ^9^ | min 5143| pname:maxPerStageUpdateAfterBindResources | 0^9^ |500000 ^9^ | min 5144| pname:maxDescriptorSetUpdateAfterBindSamplers | 0^9^ |500000 ^9^ | min 5145| pname:maxDescriptorSetUpdateAfterBindUniformBuffers | 0^9^ |72 ^8^ ^9^ | min, _n_ {times} PerStage 5146| pname:maxDescriptorSetUpdateAfterBindUniformBuffersDynamic| 0^9^ |8 ^9^ | min 5147| pname:maxDescriptorSetUpdateAfterBindStorageBuffers | 0^9^ |500000 ^9^ | min 5148| pname:maxDescriptorSetUpdateAfterBindStorageBuffersDynamic| 0^9^ |4 ^9^ | min 5149| pname:maxDescriptorSetUpdateAfterBindSampledImages | 0^9^ |500000 ^9^ | min 5150| pname:maxDescriptorSetUpdateAfterBindStorageImages | 0^9^ |500000 ^9^ | min 5151| pname:maxDescriptorSetUpdateAfterBindInputAttachments | 0^9^ |4 ^9^ | min 5152endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 5153ifdef::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 5154| pname:maxInlineUniformBlockSize | - | 256 | min 5155| pname:maxPerStageDescriptorInlineUniformBlocks | - | 4 | min 5156| pname:maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks | - | 4 | min 5157| pname:maxDescriptorSetInlineUniformBlocks | - | 4 | min 5158| pname:maxDescriptorSetUpdateAfterBindInlineUniformBlocks | - | 4 | min 5159endif::VK_VERSION_1_3,VK_EXT_inline_uniform_block[] 5160ifdef::VK_VERSION_1_3[] 5161| pname:maxInlineUniformTotalSize | - | 256 | min 5162endif::VK_VERSION_1_3[] 5163ifdef::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] 5164| pname:maxVertexAttribDivisor | - | 2^16^-1 | min 5165endif::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] 5166ifdef::VK_NV_mesh_shader[] 5167| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxDrawMeshTasksCount | - | 2^16^-1 | min 5168| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskWorkGroupInvocations | - | 32 | min 5169| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskWorkGroupSize | - | (32,1,1) | min 5170| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskTotalMemorySize | - | 16384 | min 5171| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxTaskOutputCount | - | 2^16^-1 | min 5172| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshWorkGroupInvocations | - | 32 | min 5173| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshWorkGroupSize | - | (32,1,1) | min 5174| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshTotalMemorySize | - | 16384 | min 5175| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshOutputVertices | - | 256 | min 5176| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshOutputPrimitives | - | 256 | min 5177| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:maxMeshMultiviewViewCount | - | 1 | min 5178| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:meshOutputPerVertexGranularity | - | - | implementation-dependent 5179| slink:VkPhysicalDeviceMeshShaderPropertiesNV::pname:meshOutputPerPrimitiveGranularity | - | - | implementation-dependent 5180endif::VK_NV_mesh_shader[] 5181ifdef::VK_EXT_mesh_shader[] 5182| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupTotalCount | - | 2^22 | min 5183| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupCount | - | (65535,65535,65535) | min 5184| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupInvocations | - | 128 | min 5185| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskWorkGroupSize | - | (128,128,128) | min 5186| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskPayloadSize | - | 16384 | min 5187| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskSharedMemorySize | - | 32768 | min 5188| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxTaskPayloadAndSharedMemorySize | - | 32768 | min 5189| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupTotalCount | - | 2^22 | min 5190| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupCount | - | (65535,65535,65535) | min 5191| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupInvocations | - | 128 | min 5192| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshWorkGroupSize | - | (128,128,128) | min 5193| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshSharedMemorySize | - | 28672 | min 5194| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshPayloadAndSharedMemorySize | - | 28672 | min 5195| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputMemorySize | - | 32768 | min 5196| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshPayloadAndOutputMemorySize | - | 48128 | min 5197| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputComponents | - | 128 | min 5198| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputVertices | - | 256 | min 5199| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputPrimitives | - | 256 | min 5200| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshOutputLayers | - | 8 | min 5201| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxMeshMultiviewViewCount | - | 1 | min 5202| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:meshOutputPerVertexGranularity | 0 | 32 | max 5203| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:meshOutputPerPrimitiveGranularity | 0 | 32 | max 5204| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxPreferredTaskWorkGroupInvocations | - | - | implementation-dependent 5205| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:maxPreferredMeshWorkGroupInvocations | - | - | implementation-dependent 5206| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersLocalInvocationVertexOutput | - | - | implementation-dependent 5207| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersLocalInvocationPrimitiveOutput | - | - | implementation-dependent 5208| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersCompactVertexOutput | - | - | implementation-dependent 5209| slink:VkPhysicalDeviceMeshShaderPropertiesEXT::pname:prefersCompactPrimitiveOutput | - | - | implementation-dependent 5210endif::VK_EXT_mesh_shader[] 5211ifdef::VK_EXT_transform_feedback[] 5212| pname:maxTransformFeedbackStreams | - | 1 | min 5213| pname:maxTransformFeedbackBuffers | - | 1 | min 5214| pname:maxTransformFeedbackBufferSize | - | 2^27^ | min 5215| pname:maxTransformFeedbackStreamDataSize | - | 512 | min 5216| pname:maxTransformFeedbackBufferDataSize | - | 512 | min 5217| pname:maxTransformFeedbackBufferDataStride | - | 512 | min 5218| pname:transformFeedbackQueries | - | false | implementation-dependent 5219| pname:transformFeedbackStreamsLinesTriangles | - | false | implementation-dependent 5220| pname:transformFeedbackRasterizationStreamSelect | - | false | implementation-dependent 5221| pname:transformFeedbackDraw | - | false | implementation-dependent 5222endif::VK_EXT_transform_feedback[] 5223ifdef::VK_EXT_fragment_density_map[] 5224| pname:minFragmentDensityTexelSize | - | (1,1) | min 5225| pname:maxFragmentDensityTexelSize | - | (1,1) | min 5226| pname:fragmentDensityInvocations | - | - | implementation-dependent 5227ifdef::VK_EXT_fragment_density_map2[] 5228| pname:subsampledLoads | true | false | implementation-dependent 5229| pname:subsampledCoarseReconstructionEarlyAccess | false | false | implementation-dependent 5230| pname:maxSubsampledArrayLayers | 2 | 2 | min 5231| pname:maxDescriptorSetSubsampledSamplers | 1 | 1 | min 5232endif::VK_EXT_fragment_density_map2[] 5233ifdef::VK_QCOM_fragment_density_map_offset[] 5234| pname:fragmentDensityOffsetGranularity | - | (1024,1024) | max 5235endif::VK_QCOM_fragment_density_map_offset[] 5236endif::VK_EXT_fragment_density_map[] 5237ifdef::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 5238ifdef::VK_NV_ray_tracing[] 5239| slink:VkPhysicalDeviceRayTracingPropertiesNV::pname:shaderGroupHandleSize | - | 16 | min 5240| slink:VkPhysicalDeviceRayTracingPropertiesNV::pname:maxRecursionDepth | - | 31 | min 5241endif::VK_NV_ray_tracing[] 5242ifdef::VK_KHR_ray_tracing_pipeline[] 5243| slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:shaderGroupHandleSize | - | 32 | exact 5244| slink:VkPhysicalDeviceRayTracingPipelinePropertiesKHR::pname:maxRayRecursionDepth | - | 1 | min 5245endif::VK_KHR_ray_tracing_pipeline[] 5246| pname:maxShaderGroupStride | - | 4096 | min 5247| pname:shaderGroupBaseAlignment | - | 64 | max 5248| pname:maxGeometryCount | - | 2^24^-1 | min 5249| pname:maxInstanceCount | - | 2^24^-1 | min 5250ifdef::VK_NV_ray_tracing[] 5251| pname:maxTriangleCount | - | 2^29^-1 | min 5252endif::VK_NV_ray_tracing[] 5253ifdef::VK_KHR_acceleration_structure[] 5254| pname:maxPrimitiveCount | - | 2^29^-1 | min 5255| pname:maxPerStageDescriptorAccelerationStructures | - | 16 | min 5256| pname:maxPerStageDescriptorUpdateAfterBindAccelerationStructures | - | 500000 ^9^ | min 5257endif::VK_KHR_acceleration_structure[] 5258| pname:maxDescriptorSetAccelerationStructures | - | 16 | min 5259endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] 5260ifdef::VK_KHR_acceleration_structure[] 5261| pname:maxDescriptorSetUpdateAfterBindAccelerationStructures | - | 500000 ^9^ | min 5262| pname:minAccelerationStructureScratchOffsetAlignment | - | 256 | max 5263endif::VK_KHR_acceleration_structure[] 5264ifdef::VK_KHR_ray_tracing_pipeline[] 5265| pname:shaderGroupHandleCaptureReplaySize | - | 64 | max 5266| pname:maxRayDispatchInvocationCount | - | 2^30^ | min 5267| pname:shaderGroupHandleAlignment | - | 32 | max 5268| pname:maxRayHitAttributeSize | - | 32 | min 5269endif::VK_KHR_ray_tracing_pipeline[] 5270ifdef::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 5271| pname:maxTimelineSemaphoreValueDifference | - | 2^31^-1 | min 5272endif::VK_VERSION_1_2,VK_KHR_timeline_semaphore[] 5273ifdef::VK_EXT_line_rasterization[] 5274| pname:lineSubPixelPrecisionBits | - | 4 | min 5275endif::VK_EXT_line_rasterization[] 5276ifdef::VK_NV_device_generated_commands[] 5277| pname:maxGraphicsShaderGroupCount | - | 2^12^ | min 5278| pname:maxIndirectSequenceCount | - | 2^20^ | min 5279| pname:maxIndirectCommandsTokenCount | - | 16 | min 5280| pname:maxIndirectCommandsStreamCount | - | 16 | min 5281| pname:maxIndirectCommandsTokenOffset | - | 2047 | min 5282| pname:maxIndirectCommandsStreamStride | - | 2048 | min 5283| pname:minSequencesCountBufferOffsetAlignment | - | 256 | max 5284| pname:minSequencesIndexBufferOffsetAlignment | - | 256 | max 5285| pname:minIndirectCommandsBufferOffsetAlignment | - | 256 | max 5286endif::VK_NV_device_generated_commands[] 5287ifdef::VK_EXT_custom_border_color[] 5288| pname:maxCustomBorderColorSamplers | - | 32 | min 5289endif::VK_EXT_custom_border_color[] 5290ifdef::VK_EXT_robustness2[] 5291| pname:robustStorageBufferAccessSizeAlignment | - | 4 | max 5292| pname:robustUniformBufferAccessSizeAlignment | - | 256 | max 5293endif::VK_EXT_robustness2[] 5294ifdef::VK_KHR_fragment_shading_rate[] 5295| pname:minFragmentShadingRateAttachmentTexelSize | (0,0) | (32,32) | max 5296| pname:maxFragmentShadingRateAttachmentTexelSize | (0,0) | (8,8) | min 5297| pname:maxFragmentShadingRateAttachmentTexelSizeAspectRatio | 0 | 1 | min 5298| pname:primitiveFragmentShadingRateWithMultipleViewports | false | false | implementation-dependent 5299| pname:layeredShadingRateAttachments | false | false | implementation-dependent 5300| pname:fragmentShadingRateNonTrivialCombinerOps | - | false | implementation-dependent 5301| pname:maxFragmentSize | - | (2,2) | min 5302| pname:maxFragmentSizeAspectRatio | - | 2 | min 5303| pname:maxFragmentShadingRateCoverageSamples | - | 16 | min 5304| pname:maxFragmentShadingRateRasterizationSamples | - | ename:VK_SAMPLE_COUNT_4_BIT | min 5305| pname:fragmentShadingRateWithShaderDepthStencilWrites | - | false | implementation-dependent 5306| pname:fragmentShadingRateWithSampleMask | - | false | implementation-dependent 5307| pname:fragmentShadingRateWithShaderSampleMask | - | false | implementation-dependent 5308| pname:fragmentShadingRateWithConservativeRasterization | - | false | implementation-dependent 5309| pname:fragmentShadingRateWithFragmentShaderInterlock | - | false | implementation-dependent 5310| pname:fragmentShadingRateWithCustomSampleLocations | - | false | implementation-dependent 5311| pname:fragmentShadingRateStrictMultiplyCombiner | - | false | implementation-dependent 5312endif::VK_KHR_fragment_shading_rate[] 5313ifdef::VK_NV_fragment_shading_rate_enums[] 5314| pname:maxFragmentShadingRateInvocationCount | - | ename:VK_SAMPLE_COUNT_4_BIT | min 5315endif::VK_NV_fragment_shading_rate_enums[] 5316ifdef::VK_EXT_descriptor_buffer[] 5317| pname:combinedImageSamplerDescriptorSingleArray | - | false | implementation-dependent 5318| pname:bufferlessPushDescriptors | - | false | implementation-dependent 5319| pname:allowSamplerImageViewPostSubmitCreation | - | false | implementation-dependent 5320| pname:descriptorBufferOffsetAlignment | - | 256 | max 5321| pname:maxDescriptorBufferBindings | - | 3 | min 5322| pname:maxResourceDescriptorBufferBindings | - | 1 | min 5323| pname:maxSamplerDescriptorBufferBindings | - | 1 | min 5324| pname:maxEmbeddedImmutableSamplerBindings | - | 1 | min 5325| pname:maxEmbeddedImmutableSamplers | - | 2032 | min 5326| pname:bufferCaptureReplayDescriptorDataSize | - | 64 | max 5327| pname:imageCaptureReplayDescriptorDataSize | - | 64 | max 5328| pname:imageViewCaptureReplayDescriptorDataSize | - | 64 | max 5329| pname:samplerCaptureReplayDescriptorDataSize | - | 64 | max 5330| pname:accelerationStructureCaptureReplayDescriptorDataSize | - | 64 | max 5331| pname:samplerDescriptorSize | - | 256 | max 5332| pname:combinedImageSamplerDescriptorSize | - | 256 | max 5333| pname:sampledImageDescriptorSize | - | 256 | max 5334| pname:storageImageDescriptorSize | - | 256 | max 5335| pname:uniformTexelBufferDescriptorSize | - | 256 | max 5336| pname:robustUniformTexelBufferDescriptorSize | - | 256 | max 5337| pname:storageTexelBufferDescriptorSize | - | 256 | max 5338| pname:robustStorageTexelBufferDescriptorSize | - | 256 | max 5339| pname:uniformBufferDescriptorSize | - | 256 | max 5340| pname:robustUniformBufferDescriptorSize | - | 256 | max 5341| pname:storageBufferDescriptorSize | - | 256 | max 5342| pname:robustStorageBufferDescriptorSize | - | 256 | max 5343| pname:inputAttachmentDescriptorSize | - | 256 | max 5344| pname:accelerationStructureDescriptorSize | - | 256 | max 5345| pname:maxSamplerDescriptorBufferRange | - | [eq]#2^11^ {times} pname:samplerDescriptorSize# | min 5346| pname:maxResourceDescriptorBufferRange | - | [eq]#(2^20^ - 2^15^) {times} ptext:maxResourceDescriptorSize# ^12^ | min 5347| pname:samplerDescriptorBufferAddressSpaceSize | - | 2^27^ | min 5348| pname:resourceDescriptorBufferAddressSpaceSize | - | 2^27^ | min 5349| pname:descriptorBufferAddressSpaceSize | - | 2^27^ | min 5350ifdef::VK_EXT_fragment_density_map[] 5351| pname:combinedImageSamplerDensityMapDescriptorSize | - | 256 | max 5352endif::VK_EXT_fragment_density_map[] 5353endif::VK_EXT_descriptor_buffer[] 5354ifdef::VK_HUAWEI_subpass_shading[] 5355| pname:maxSubpassShadingWorkgroupSizeAspectRatio | 0 | 1 | min 5356endif::VK_HUAWEI_subpass_shading[] 5357ifdef::VK_EXT_multi_draw[] 5358| pname:maxMultiDrawCount | - | 1024 | min 5359endif::VK_EXT_multi_draw[] 5360ifdef::VK_EXT_nested_command_buffer[] 5361| pname:maxCommandBufferNestingLevel | - | 1 | min 5362endif::VK_EXT_nested_command_buffer[] 5363ifdef::VKSC_VERSION_1_0[] 5364| pname:deviceNoDynamicHostAllocations | - | - | implementation-dependent 5365| pname:deviceDestroyFreesMemory | - | - | implementation-dependent 5366| pname:commandPoolMultipleCommandBuffersRecording | - | - | implementation-dependent 5367| pname:commandPoolResetCommandBuffer | - | - | implementation-dependent 5368| pname:commandBufferSimultaneousUse | - | - | implementation-dependent 5369| pname:secondaryCommandBufferNullOrImagelessFramebuffer | - | - | implementation-dependent 5370| pname:recycleDescriptorSetMemory | - | - | implementation-dependent 5371| pname:recyclePipelineMemory | - | - | implementation-dependent 5372| pname:maxRenderPassSubpasses | - | 1 | min 5373| pname:maxRenderPassDependencies | - | 18 | min 5374| pname:maxSubpassInputAttachments | - | 0 | min 5375| pname:maxSubpassPreserveAttachments | - | 0 | min 5376| pname:maxFramebufferAttachments | - | 9 ^11^ | min 5377| pname:maxDescriptorSetLayoutBindings | - | 64 | min 5378| pname:maxQueryFaultCount | - | 16 | min 5379| pname:maxCallbackFaultCount | - | 1 | min 5380| pname:maxCommandPoolCommandBuffers | - | 256 | min 5381| pname:maxCommandBufferSize | - | 2^20^ | min 5382endif::VKSC_VERSION_1_0[] 5383ifdef::VK_EXT_graphics_pipeline_library[] 5384| pname:graphicsPipelineLibraryFastLinking | - | false | implementation-dependent 5385| pname:graphicsPipelineLibraryIndependentInterpolationDecoration | - | false | implementation-dependent 5386endif::VK_EXT_graphics_pipeline_library[] 5387ifdef::VK_KHR_fragment_shader_barycentric[] 5388| pname:triStripVertexOrderIndependentOfProvokingVertex | - | false | implementation-dependent 5389endif::VK_KHR_fragment_shader_barycentric[] 5390ifdef::VK_QCOM_image_processing[] 5391| pname:maxWeightFilterPhases | - | 1024 | min 5392| pname:maxWeightFilterDimension | - | (64,64) | min 5393| pname:maxBlockMatchRegion | - | (64,64) | min 5394| pname:maxBoxFilterBlockSize | - | (64,64) | min 5395endif::VK_QCOM_image_processing[] 5396ifdef::VK_EXT_extended_dynamic_state3[] 5397| pname:dynamicPrimitiveTopologyUnrestricted | - | - | implementation-dependent 5398endif::VK_EXT_extended_dynamic_state3[] 5399ifdef::VK_EXT_opacity_micromap[] 5400| pname:maxOpacity2StateSubdivisionLevel | - | 3 | min 5401| pname:maxOpacity4StateSubdivisionLevel | - | 3 | min 5402endif::VK_EXT_opacity_micromap[] 5403ifdef::VK_NV_memory_decompression[] 5404| pname:maxDecompressionIndirectCount | 1 | 2^16^-1 | min 5405endif::VK_NV_memory_decompression[] 5406ifdef::VK_HUAWEI_cluster_culling_shader[] 5407| pname:maxWorkGroupCount | - | (65536,1,1) | min 5408| pname:maxWorkGroupSize | - | (32,1,1) | min 5409| pname:maxOutputClusterCount | - | 1024 | min 5410| pname:indirectBufferOffsetAlignment | - | - | implementation-dependent 5411endif::VK_HUAWEI_cluster_culling_shader[] 5412ifdef::VK_AMDX_shader_enqueue[] 5413| pname:maxExecutionGraphDepth | - | 32 | min 5414| pname:maxExecutionGraphShaderOutputNodes | - | 256 | min 5415| pname:maxExecutionGraphShaderPayloadSize | - | 32768 | min 5416| pname:maxExecutionGraphShaderPayloadCount | - | 256 | min 5417| pname:executionGraphDispatchAddressAlignment | - | 4 | max 5418endif::VK_AMDX_shader_enqueue[] 5419ifdef::VK_NV_extended_sparse_address_space[] 5420| pname:extendedSparseAddressSpaceSize | 0 | pname:sparseAddressSpaceSize | min 5421endif::VK_NV_extended_sparse_address_space[] 5422ifdef::VK_ARM_render_pass_striped[] 5423| pname:renderPassStripeGranularity | - | (64,64) | max 5424| pname:maxRenderPassStripes | - | 32 | min 5425endif::VK_ARM_render_pass_striped[] 5426|==== 5427 54281:: 5429 The *Limit Type* column specifies the limit is either the minimum limit 5430 all implementations must: support, the maximum limit all implementations 5431 must: support, or the exact value all implementations must: support. 5432 For bitmasks a minimum limit is the least bits all implementations must: 5433 set, but they may: have additional bits set beyond this minimum. 5434 54352:: 5436 The pname:maxPerStageResources must: be at least the smallest of the 5437 following: 5438+ 5439 * the sum of the pname:maxPerStageDescriptorUniformBuffers, 5440 pname:maxPerStageDescriptorStorageBuffers, 5441 pname:maxPerStageDescriptorSampledImages, 5442 pname:maxPerStageDescriptorStorageImages, 5443 pname:maxPerStageDescriptorInputAttachments, pname:maxColorAttachments 5444 limits, or 5445 * 128. 5446+ 5447It may: not be possible to reach this limit in every stage. 5448 54493:: 5450 See <<limits-maxViewportDimensions, pname:maxViewportDimensions>> for 5451 the required: relationship to other limits. 5452 54534:: 5454 See <<limits-viewportboundsrange, pname:viewportBoundsRange>> for the 5455 required: relationship to other limits. 5456 54575:: 5458 The values pname:minInterpolationOffset and pname:maxInterpolationOffset 5459 describe the closed interval of supported interpolation offsets: 5460 [pname:minInterpolationOffset, pname:maxInterpolationOffset]. 5461 The ULP is determined by pname:subPixelInterpolationOffsetBits. 5462 If pname:subPixelInterpolationOffsetBits is 4, this provides increments 5463 of (1/2^4^) = 0.0625, and thus the range of supported interpolation 5464 offsets would be [eq]#[-0.5, 0.4375]#. 5465 54666:: 5467 The point size ULP is determined by pname:pointSizeGranularity. 5468 If the pname:pointSizeGranularity is 0.125, the range of supported point 5469 sizes must: be at least [1.0, 63.875]. 5470 54717:: 5472 The line width ULP is determined by pname:lineWidthGranularity. 5473 If the pname:lineWidthGranularity is 0.0625, the range of supported line 5474 widths must: be at least [1.0, 7.9375]. 5475 54768:: 5477 The minimum ptext:maxDescriptorSet* limit is _n_ times the corresponding 5478 _specification_ minimum ptext:maxPerStageDescriptor* limit, where _n_ is 5479 the number of shader stages supported by the slink:VkPhysicalDevice. 5480 If all shader stages are supported, _n_ = 6 (vertex, tessellation 5481 control, tessellation evaluation, geometry, fragment, compute). 5482 5483ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 54849:: 5485 The ptext:UpdateAfterBind descriptor limits must: each be greater than 5486 or equal to the corresponding ptext:non-UpdateAfterBind limit. 5487endif::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] 5488 5489ifdef::VK_KHR_portability_subset[] 549010:: 5491 If the `apiext:VK_KHR_portability_subset` extension is enabled, the 5492 required minimum value of pname:maxVertexInputBindings is code:8. 5493endif::VK_KHR_portability_subset[] 5494 5495ifdef::VKSC_VERSION_1_0[] 549611:: ptext:maxFramebufferAttachments must: be greater than or equal to two 5497 times pname:maxColorAttachments (for color and resolve attachments) 5498 plus one (for the depth/stencil attachment), or else must: be equal to 5499 2^32^-1. 5500endif::VKSC_VERSION_1_0[] 5501 5502ifdef::VK_EXT_descriptor_buffer[] 550312:: 5504 ptext:maxResourceDescriptorSize is defined as the maximum value of 5505 pname:storageImageDescriptorSize, pname:sampledImageDescriptorSize, 5506 pname:robustUniformTexelBufferDescriptorSize, 5507 pname:robustStorageTexelBufferDescriptorSize, 5508 pname:robustUniformBufferDescriptorSize, 5509 pname:robustStorageBufferDescriptorSize, 5510 pname:inputAttachmentDescriptorSize, and 5511 pname:accelerationStructureDescriptorSize. 5512endif::VK_EXT_descriptor_buffer[] 5513 5514 5515ifdef::VK_EXT_sample_locations[] 5516[[limits-multisample]] 5517== Additional Multisampling Capabilities 5518 5519[open,refpage='vkGetPhysicalDeviceMultisamplePropertiesEXT',desc='Report sample count specific multisampling capabilities of a physical device',type='protos'] 5520-- 5521To query additional multisampling capabilities which may: be supported for a 5522specific sample count, beyond the minimum capabilities described for 5523<<limits, Limits>> above, call: 5524 5525include::{generated}/api/protos/vkGetPhysicalDeviceMultisamplePropertiesEXT.adoc[] 5526 5527 * pname:physicalDevice is the physical device from which to query the 5528 additional multisampling capabilities. 5529 * pname:samples is a elink:VkSampleCountFlagBits value specifying the 5530 sample count to query capabilities for. 5531 * pname:pMultisampleProperties is a pointer to a 5532 slink:VkMultisamplePropertiesEXT structure in which information about 5533 additional multisampling capabilities specific to the sample count is 5534 returned. 5535 5536include::{generated}/validity/protos/vkGetPhysicalDeviceMultisamplePropertiesEXT.adoc[] 5537-- 5538 5539[open,refpage='VkMultisamplePropertiesEXT',desc='Structure returning information about sample count specific additional multisampling capabilities',type='structs'] 5540-- 5541The sname:VkMultisamplePropertiesEXT structure is defined as 5542 5543include::{generated}/api/structs/VkMultisamplePropertiesEXT.adoc[] 5544 5545 * pname:sType is a elink:VkStructureType value identifying this structure. 5546 * pname:pNext is `NULL` or a pointer to a structure extending this 5547 structure. 5548 * pname:maxSampleLocationGridSize is the maximum size of the pixel grid in 5549 which sample locations can: vary. 5550 5551include::{generated}/validity/structs/VkMultisamplePropertiesEXT.adoc[] 5552-- 5553 5554If the sample count for which additional multisampling capabilities are 5555requested using fname:vkGetPhysicalDeviceMultisamplePropertiesEXT is set in 5556<<limits-sampleLocationSampleCounts, pname:sampleLocationSampleCounts>> the 5557pname:width and pname:height members of 5558sname:VkMultisamplePropertiesEXT::pname:maxSampleLocationGridSize must: be 5559greater than or equal to the corresponding members of 5560<<limits-maxSampleLocationGridSize, pname:maxSampleLocationGridSize>>, 5561respectively, otherwise both members must: be `0`. 5562 5563endif::VK_EXT_sample_locations[] 5564 5565// If you are adding a new features structure, it must be placed at the end 5566// of the previous section (immediately before <<limits-multisample>>). 5567 5568 5569ifdef::VK_VERSION_1_3[] 5570[[profile-limits]] 5571== Profile Limits 5572 5573 5574[[profile-limits-roadmap-2022]] 5575=== Roadmap 2022 5576 5577Implementations that claim support for the <<roadmap-2022, Roadmap 2022>> 5578profile must: satisfy the following additional limit requirements: 5579 5580[width="100%",cols="<35,<14,<11",options="header"] 5581|==== 5582| Limit | Supported Limit | Limit Type^1^ 5583| pname:maxImageDimension1D | 8192 | min 5584| pname:maxImageDimension2D | 8192 | min 5585| pname:maxImageDimensionCube | 8192 | min 5586| pname:maxImageArrayLayers | 2048 | min 5587| pname:maxUniformBufferRange | 65536 | min 5588| pname:bufferImageGranularity | 4096 | max 5589| pname:maxPerStageDescriptorSamplers | 64 | min 5590| pname:maxPerStageDescriptorUniformBuffers | 15 | min 5591| pname:maxPerStageDescriptorStorageBuffers | 30 | min 5592| pname:maxPerStageDescriptorSampledImages | 200 | min 5593| pname:maxPerStageDescriptorStorageImages | 16 | min 5594| pname:maxPerStageResources | 200 | min 5595| pname:maxDescriptorSetSamplers | 576 | min 5596| pname:maxDescriptorSetUniformBuffers | 90 | min 5597| pname:maxDescriptorSetStorageBuffers | 96 | min 5598| pname:maxDescriptorSetSampledImages | 1800 | min 5599| pname:maxDescriptorSetStorageImages | 144 | min 5600| pname:maxFragmentCombinedOutputResources | 16 | min 5601| pname:maxComputeWorkGroupInvocations | 256 | min 5602| pname:maxComputeWorkGroupSize | (256,256,64) | min 5603| pname:subTexelPrecisionBits | 8 | min 5604| pname:mipmapPrecisionBits | 6 | min 5605| pname:maxSamplerLodBias | 14 | min 5606| pname:pointSizeGranularity | 0.125 | max 5607| pname:lineWidthGranularity | 0.5 | max 5608| pname:standardSampleLocations | ename:VK_TRUE | Boolean 5609| pname:maxColorAttachments | 7 | min 5610| pname:subgroupSize | 4 | min 5611| pname:subgroupSupportedStages | ename:VK_SHADER_STAGE_COMPUTE_BIT + 5612 ename:VK_SHADER_STAGE_FRAGMENT_BIT 5613 | bitfield 5614| pname:subgroupSupportedOperations | ename:VK_SUBGROUP_FEATURE_BASIC_BIT + 5615 ename:VK_SUBGROUP_FEATURE_VOTE_BIT + 5616 ename:VK_SUBGROUP_FEATURE_ARITHMETIC_BIT + 5617 ename:VK_SUBGROUP_FEATURE_BALLOT_BIT + 5618 ename:VK_SUBGROUP_FEATURE_SHUFFLE_BIT + 5619 ename:VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT + 5620 ename:VK_SUBGROUP_FEATURE_QUAD_BIT 5621 | bitfield 5622| pname:shaderSignedZeroInfNanPreserveFloat16 | ename:VK_TRUE | Boolean 5623| pname:shaderSignedZeroInfNanPreserveFloat32 | ename:VK_TRUE | Boolean 5624| pname:maxSubgroupSize | 4 | min 5625| pname:maxPerStageDescriptorUpdateAfterBindInputAttachments | 7 | min 5626|==== 5627endif::VK_VERSION_1_3[] 5628