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

The Khronos® Vulkan Working Group
version 1.4.350, 2026-05-13 16:39:32Z
from git branch: makepkg commit: 81b1d516cbf42f04a3c7f781977c499945b5e5dc

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, 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

  - `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 125. Vulkan 1.0 Limits
Limit Name | Unsupported Limit | Core Limit | Milestone 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 126. Vulkan 1.1 Limits
Limit Name | Unsupported Limit | Core Limit | Milestone 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 127. Vulkan 1.2 Limits
Limit Name | Unsupported Limit | Core Limit | Milestone Limit | Limit Type1
--- | --- | --- | --- | ---
`shaderSignedZeroInfNanPreserveFloat16` | - | - | VK_TRUE | implementation-dependent
`shaderSignedZeroInfNanPreserveFloat32` | - | - | VK_TRUE | implementation-dependent
`maxPerStageDescriptorUpdateAfterBindInputAttachments` | 0 | 4 | 7 | min

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

#### Required Extensions

The following extensions are required

VK_KHR_global_priority

### 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

  - `multiDrawIndirect`

  - `shaderImageGatherExtended`

  - `shaderInt16`

- Vulkan 1.1 Optional Features

  - `shaderDrawParameters`

  - `storageBuffer16BitAccess`

- Vulkan 1.2 Optional Features

  - `shaderInt8`

  - `shaderFloat16`

  - `storageBuffer8BitAccess`

#### Required Limits

The following core increased limits are required

Table 129. Vulkan 1.0 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`maxBoundDescriptorSets` | - | 4 | 7 | min
`maxColorAttachments` | - | 4 | 8 | min
`timestampComputeAndGraphics` | - | FALSE | TRUE | Boolean

Table 130. Vulkan 1.2 Limits
Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type1
--- | --- | --- | --- | ---
`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

  - `hostImageCopy`

- VK_KHR_robustness2 Features

  - `robustBufferAccess2`

  - `robustImageAccess2`

  - `nullDescriptor`

#### Required Limits

The following core increased limits are required

Table 131. Vulkan 1.0 Limits
Limit Name | Core | 2026 | Limit Type1
--- | --- | --- | ---
`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