Author: The Khronos® Vulkan Working Group

# Vulkan® 1.3.253 - A Specification (with all registered extensions)

The Khronos® Vulkan Working Group
version 1.3.253, 2023-06-11 11:28:02Z
from git branch: Git branch not available commit: Git commit not available

Loading… please wait.

Search:

## Appendix F: Vulkan Roadmap Milestones

Roadmap milestones are intended to be supported by mid-to-high-end smartphones, tablets, laptops, consoles, and desktop devices.

Each milestone indicates support for a set of extensions, features, limits, and formats across these devices, and should be supported by all such new hardware shipping by the end of the target year or shortly thereafter.

### Roadmap 2022

The Roadmap 2022 milestone is intended to be supported by newer mid-to-high-end devices shipping in 2022 or shortly thereafter across mainstream smartphone, tablet, laptops, console and desktop devices.

#### Required API versions

This profile requires Vulkan 1.3.

#### Required Features

The following core optional features are required to be supported:

- Vulkan 1.0 Optional Features

  - `fullDrawIndexUint32`

  - `imageCubeArray`

  - `independentBlend`

  - `sampleRateShading`

  - `drawIndirectFirstInstance`

  - `depthClamp`

  - `depthBiasClamp`

  - `samplerAnisotropy`

  - `occlusionQueryPrecise`

  - `fragmentStoresAndAtomics`

  - `shaderStorageImageExtendedFormats`

  - `shaderUniformBufferArrayDynamicIndexing`

  - `shaderSampledImageArrayDynamicIndexing`

  - `shaderStorageBufferArrayDynamicIndexing`

  - `shaderStorageImageArrayDynamicIndexing`

- Vulkan 1.1 Optional Features

  - `samplerYcbcrConversion`

- Vulkan 1.2 Optional Features

  - `samplerMirrorClampToEdge`

  - `descriptorIndexing`

  - `shaderUniformTexelBufferArrayDynamicIndexing`

  - `shaderStorageTexelBufferArrayDynamicIndexing`

  - `shaderUniformBufferArrayNonUniformIndexing`

  - `shaderSampledImageArrayNonUniformIndexing`

  - `shaderStorageBufferArrayNonUniformIndexing`

  - `shaderStorageImageArrayNonUniformIndexing`

  - `shaderUniformTexelBufferArrayNonUniformIndexing`

  - `shaderStorageTexelBufferArrayNonUniformIndexing`

  - `descriptorBindingSampledImageUpdateAfterBind`

  - `descriptorBindingStorageImageUpdateAfterBind`

  - `descriptorBindingStorageBufferUpdateAfterBind`

  - `descriptorBindingUniformTexelBufferUpdateAfterBind`

  - `descriptorBindingStorageTexelBufferUpdateAfterBind`

  - `descriptorBindingUpdateUnusedWhilePending`

  - `descriptorBindingPartiallyBound`

  - `descriptorBindingVariableDescriptorCount`

  - `runtimeDescriptorArray`

  - `scalarBlockLayout`

#### Required Limits

The following core increased limits are required

Table 97. Vulkan 1.0 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`maxImageDimension1D` | - | 4096 | 8192 | min
`maxImageDimension2D` | - | 4096 | 8192 | min
`maxImageDimensionCube` | - | 4096 | 8192 | min
`maxImageArrayLayers` | - | 256 | 2048 | min
`maxUniformBufferRange` | - | 16384 | 65536 | min
`bufferImageGranularity` | - | 131072 | 4096 | max
`maxPerStageDescriptorSamplers` | - | 16 | 64 | min
`maxPerStageDescriptorUniformBuffers` | - | 12 | 15 | min
`maxPerStageDescriptorStorageBuffers` | - | 4 | 30 | min
`maxPerStageDescriptorSampledImages` | - | 16 | 200 | min
`maxPerStageDescriptorStorageImages` | - | 4 | 16 | min
`maxPerStageResources` | - | 128 | 200 | min
`maxDescriptorSetSamplers` | - | 96 | 576 | min, n × PerStage
`maxDescriptorSetUniformBuffers` | - | 72 | 90 | min, n × PerStage
`maxDescriptorSetStorageBuffers` | - | 24 | 96 | min, n × PerStage
`maxDescriptorSetSampledImages` | - | 96 | 1800 | min, n × PerStage
`maxDescriptorSetStorageImages` | - | 24 | 144 | min, n × PerStage
`maxFragmentCombinedOutputResources` | - | 4 | 16 | min
`maxComputeWorkGroupInvocations` | - | 128 | 256 | min
`maxComputeWorkGroupSize` | - | (128,128,64) | (256,256,64) | min
`subTexelPrecisionBits` | - | 4 | 8 | min
`mipmapPrecisionBits` | - | 4 | 6 | min
`maxSamplerLodBias` | - | 2 | 14 | min
`pointSizeGranularity` | 0.0 | 1.0 | 0.125 | max, fixed point increment
`lineWidthGranularity` | 0.0 | 1.0 | 0.5 | max, fixed point increment
`standardSampleLocations` | - | - | `VK_TRUE` | implementation-dependent
`maxColorAttachments` | - | 4 | 7 | min

Table 98. Vulkan 1.1 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`subgroupSize` | - | 1/4 | 4 | implementation-dependent
`subgroupSupportedStages` | - | `VK_SHADER_STAGE_COMPUTE_BIT` | `VK_SHADER_STAGE_COMPUTE_BIT` `VK_SHADER_STAGE_FRAGMENT_BIT` | implementation-dependent
`subgroupSupportedOperations` | - | `VK_SUBGROUP_FEATURE_BASIC_BIT` | `VK_SUBGROUP_FEATURE_BASIC_BIT` `VK_SUBGROUP_FEATURE_VOTE_BIT` `VK_SUBGROUP_FEATURE_ARITHMETIC_BIT` `VK_SUBGROUP_FEATURE_BALLOT_BIT` `VK_SUBGROUP_FEATURE_SHUFFLE_BIT` `VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT` `VK_SUBGROUP_FEATURE_QUAD_BIT` | implementation-dependent

Table 99. Vulkan 1.2 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`shaderSignedZeroInfNanPreserveFloat16` | - | - | `VK_TRUE` | implementation-dependent
`shaderSignedZeroInfNanPreserveFloat32` | - | - | `VK_TRUE` | implementation-dependent
`maxPerStageDescriptorUpdateAfterBindInputAttachments` | 0 | 4 | 7 | min

Table 100. Vulkan 1.3 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`maxSubgroupSize` | - | - | 4 | min

#### Required extensions

The following extensions are required

VK_KHR_global_priority