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, laptop, console, and desktop devices.
Required API Versions
This milestone requires Vulkan 1.3.
Required Features
The following core optional features are required to be supported:
- Vulkan 1.0 Optional Features
fullDrawIndexUint32imageCubeArrayindependentBlendsampleRateShadingdrawIndirectFirstInstancedepthClampdepthBiasClampsamplerAnisotropyocclusionQueryPrecisefragmentStoresAndAtomicsshaderStorageImageExtendedFormatsshaderUniformBufferArrayDynamicIndexingshaderSampledImageArrayDynamicIndexingshaderStorageBufferArrayDynamicIndexingshaderStorageImageArrayDynamicIndexing
- Vulkan 1.1 Optional Features
- Vulkan 1.2 Optional Features
samplerMirrorClampToEdgedescriptorIndexingshaderUniformTexelBufferArrayDynamicIndexingshaderStorageTexelBufferArrayDynamicIndexingshaderUniformBufferArrayNonUniformIndexingshaderSampledImageArrayNonUniformIndexingshaderStorageBufferArrayNonUniformIndexingshaderStorageImageArrayNonUniformIndexingshaderUniformTexelBufferArrayNonUniformIndexingshaderStorageTexelBufferArrayNonUniformIndexingdescriptorBindingSampledImageUpdateAfterBinddescriptorBindingStorageImageUpdateAfterBinddescriptorBindingStorageBufferUpdateAfterBinddescriptorBindingUniformTexelBufferUpdateAfterBinddescriptorBindingStorageTexelBufferUpdateAfterBinddescriptorBindingUpdateUnusedWhilePendingdescriptorBindingPartiallyBounddescriptorBindingVariableDescriptorCountruntimeDescriptorArrayscalarBlockLayout
Required Limits
The following core increased limits are required
| Limit Name | Unsupported Limit | Core Limit | Milestone Limit | Limit Type |
|---|---|---|---|---|
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 |
| Limit Name | Unsupported Limit | Core Limit | Milestone Limit | Limit Type |
|---|---|---|---|---|
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 |
| Limit Name | Unsupported Limit | Core Limit | Milestone Limit | Limit Type |
|---|---|---|---|---|
shaderSignedZeroInfNanPreserveFloat16 | - | - | VK_TRUE | implementation-dependent |
shaderSignedZeroInfNanPreserveFloat32 | - | - | VK_TRUE | implementation-dependent |
maxPerStageDescriptorUpdateAfterBindInputAttachments | 0 | 4 | 7 | min |
| Limit Name | Unsupported Limit | Core Limit | Milestone Limit | Limit Type |
|---|---|---|---|---|
maxSubgroupSize | - | - | 4 | min |
Required Extensions
The following extensions are required
Roadmap 2024
The Roadmap 2024 milestone is intended to be supported by newer mid-to-high-end devices shipping in 2024 or shortly thereafter across mainstream smartphone, tablet, laptop, console, and desktop devices.
Two of the core aims of this roadmap profile are to enable developers to rely on a number of important rasterization and shader features have been available for a long time, but until now have not enjoyed wide support.
Shader features required include smaller types (8/16-bit integers and 16-bit floats), reconvergence guarantees for subgroup ops (VK_KHR_shader_maximal_reconvergence and VK_KHR_shader_quad_control), and more consistent floating-point handling (VK_KHR_shader_float_controls2 and round-to-nearest-even for 32-/16-bit floats). Rasterization features include requiring support for multi-draw indirect, shader draw parameters, 8-bit indices, better line rasterization definitions, and local reads when using dynamic rendering. A few other features have been added opportunistically, in lieu of shipping a Vulkan 1.4 in the same time frame, such as push descriptors and the various minor improvements included in VK_KHR_maintenance5.
Required Milestones
This milestone requires the Roadmap 2022 profile.
Required Features
The following core optional features are required to be supported:
- Vulkan 1.0 Optional Features
- Vulkan 1.1 Optional Features
- Vulkan 1.2 Optional Features
Required Limits
The following core increased limits are required
| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type |
|---|---|---|---|---|
maxBoundDescriptorSets | - | 4 | 7 | min |
maxColorAttachments | - | 4 | 8 | min |
timestampComputeAndGraphics | - | FALSE | TRUE | Boolean |
| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type |
|---|---|---|---|---|
shaderRoundingModeRTEFloat16 | - | FALSE | TRUE | Boolean |
shaderRoundingModeRTEFloat32 | - | FALSE | TRUE | Boolean |
Required Extensions
The following extensions are required
- VK_KHR_dynamic_rendering_local_read
- VK_KHR_load_store_op_none
- VK_KHR_shader_quad_control
- VK_KHR_shader_maximal_reconvergence
- VK_KHR_shader_subgroup_uniform_control_flow
- VK_KHR_shader_subgroup_rotate
- VK_KHR_shader_float_controls2
- VK_KHR_shader_expect_assume
- VK_KHR_line_rasterization
- VK_KHR_vertex_attribute_divisor
- VK_KHR_index_type_uint8
- VK_KHR_map_memory2
- VK_KHR_maintenance5
- VK_KHR_push_descriptor
Roadmap 2026
The Roadmap 2026 milestone is intended to be supported by newer mid-to-high-end devices shipping in 2026 or shortly thereafter across mainstream smartphone, tablet, laptop, console, and desktop devices.
This milestone raises the baseline feature support of Vulkan implementations as with prior milestones. In addition, this milestone makes guarantees about swapchain and presentation support for implementations.
Highlights of this roadmap include support for the following extensions:
- VK_KHR_fragment_shading_rate
- VK_KHR_shader_clock
- VK_KHR_compute_shader_derivatives
- VK_KHR_cooperative_matrix
- VK_KHR_surface and VK_KHR_swapchain
- VK_KHR_present_mode_fifo_latest_ready
- VK_KHR_present_id2 and VK_KHR_present_wait2
Several other extensions and limits are also required by this milestone as indicated below.
Required Milestones
This requires the Roadmap 2024 milestone.
Required Versions
Vulkan 1.4 is required by this milestone.
Required Features
The following core optional features are required to be supported:
- Vulkan 1.4 Optional Features
- VK_KHR_robustness2 Features
Required Limits
The following core increased limits are required
| Limit Name | Core | 2026 | Limit Type |
|---|---|---|---|
maxPerStageDescriptorUniformBuffers | 15 | 200 | min |
maxPerStageDescriptorStorageBuffers | 4 | 200 | min |
maxPerStageDescriptorInputAttachments | 4 | 8 | min |
maxDescriptorSetStorageBuffers | 96 | 1800 | min |
maxDescriptorSetUniformBuffers | 96 | 1800 | min |
maxDescriptorSetInputAttachments | 4 | 8 | min |
maxVertexOutputComponents | 64 | 124 | min |
maxTessellationControlPerVertexInputComponents | 64 | 128 | min |
maxTessellationControlPerVertexOutputComponents | 64 | 128 | min |
maxTessellationControlTotalOutputComponents | 2048 | 4096 | min |
maxTessellationEvaluationInputComponents | 64 | 128 | min |
maxTessellationEvaluationOutputComponents | 64 | 128 | min |
maxGeometryOutputComponents | 64 | 128 | min |
maxFragmentInputComponents | 64 | 112 | min |
maxFragmentOutputAttachments | 4 | 8 | min |
maxComputeSharedMemorySize | 16384 | 32768 | min |
subPixelPrecisionBits | 4 | 8 | min |
maxViewportDimensions.width | 7680 | 8192 | min |
maxViewportDimensions.height | 7680 | 8192 | min |
maxFramebufferWidth | 7680 | 8192 | min |
maxFramebufferHeight | 7680 | 8192 | min |
Required Extensions
The following extensions are required
- VK_KHR_robustness2
- VK_KHR_pipeline_binary
- VK_KHR_fragment_shading_rate
- VK_KHR_shader_clock
- VK_KHR_workgroup_memory_explicit_layout
- VK_KHR_compute_shader_derivatives
- VK_KHR_maintenance7
- VK_KHR_maintenance8
- VK_KHR_maintenance9
- VK_KHR_depth_clamp_zero_one
- VK_KHR_copy_memory_indirect
- VK_KHR_shader_untyped_pointers
- VK_KHR_surface
- VK_KHR_swapchain
- VK_KHR_present_mode_fifo_latest_ready
- VK_KHR_present_id2
- VK_KHR_present_wait2
- VK_KHR_surface_maintenance1
- VK_KHR_swapchain_maintenance1
- VK_KHR_cooperative_matrix