VK_VERSION_1_4(3)

# VK_VERSION_1_4(3) Manual Page

## Name

VK_VERSION_1_4 - Vulkan version 1.4

## Description

Vulkan Version 1.4 promoted a number of key extensions into the core API:

- VK_KHR_dynamic_rendering_local_read

- VK_KHR_global_priority

- VK_KHR_index_type_uint8

- VK_KHR_line_rasterization

- VK_KHR_load_store_op_none

- VK_KHR_maintenance5

- VK_KHR_maintenance6

- VK_KHR_map_memory2

- VK_KHR_push_descriptor

- VK_KHR_shader_expect_assume

- VK_KHR_shader_float_controls2

- VK_KHR_shader_subgroup_rotate

- VK_KHR_vertex_attribute_divisor

- VK_EXT_host_image_copy

- VK_EXT_pipeline_protected_access

- VK_EXT_pipeline_robustness

All differences in behavior between these extensions and the corresponding Vulkan 1.4 functionality are summarized below.

Differences Relative to `VK_KHR_dynamic_rendering_local_read`

  If the VK_KHR_dynamic_rendering_local_read extension is not supported, Vulkan 1.4 implementations must support local read only for storage resources and single sampled color attachments.

  Support for reading depth/stencil attachments and multi-sampled attachments are respectively gated behind the new boolean `dynamicRenderingLocalReadDepthStencilAttachments` and `dynamicRenderingLocalReadMultisampledAttachments` properties.

  - If `dynamicRenderingLocalReadDepthStencilAttachments` is VK_FALSE, implementations do not support depth/stencil attachment access within dynamic rendering.

  - If `dynamicRenderingLocalReadMultisampledAttachments` is VK_FALSE, implementations do not support multisampled attachment access within dynamic rendering.

  - If both properties are VK_TRUE, the full functionality of the extension is supported.

Differences Relative to `VK_EXT_host_image_copy`

  If the VK_EXT_host_image_copy extension is not supported, support for it is optional in Vulkan 1.4.

  - An implementation that has a VK_QUEUE_GRAPHICS_BIT queue must support either:

    - the `hostImageCopy` feature; or

    - an additional queue that supports VK_QUEUE_TRANSFER_BIT.

Differences Relative to `VK_KHR_push_descriptor`

  VK_KHR_push_descriptor did not include a feature bit, so a new feature bit has been added to VkPhysicalDeviceVulkan14Features to gate its functionality: `pushDescriptor`. Enabling this new feature has the same effect as enabling the extension.

Differences Relative to `VK_EXT_pipeline_protected_access`

  VK_EXT_pipeline_protected_access is only useful when the `protectedMemory` feature is supported. As the `protectedMemory` feature is optional in core Vulkan, the `pipelineProtectedAccess` feature is only required when the `protectedMemory` feature is supported.

Differences Relative to `VK_KHR_line_rasterization`

  The `bresenhamLines` feature is required, rather than just any one of the line style features.

Differences Relative to `VK_KHR_shader_subgroup_rotate`

  The `shaderSubgroupRotateClustered` feature is required in addition to `shaderSubgroupRotate`.

Additional Vulkan 1.4 Feature Support

  In addition to the promoted extensions described above, Vulkan 1.4 added required support for:

  - All queues supporting VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT must also advertise VK_QUEUE_TRANSFER_BIT.

  - Clustered subgroup operations must be advertised in Vulkan 1.4 via setting both VK_SUBGROUP_FEATURE_CLUSTERED_BIT and VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT (as an interaction with the promoted VK_KHR_shader_subgroup_rotate functionality) in `supportedOperations`.

  - The following features that were optional in earlier versions:

    - `fullDrawIndexUint32`

    - `imageCubeArray`

    - `independentBlend`

    - `sampleRateShading`

    - `drawIndirectFirstInstance`

    - `depthClamp`

    - `depthBiasClamp`

    - `samplerAnisotropy`

    - `fragmentStoresAndAtomics`

    - `shaderStorageImageExtendedFormats`

    - `shaderUniformBufferArrayDynamicIndexing`

    - `shaderSampledImageArrayDynamicIndexing`

    - `shaderStorageBufferArrayDynamicIndexing`

    - `shaderStorageImageArrayDynamicIndexing`

    - `shaderImageGatherExtended`

    - `shaderInt16`

    - `largePoints`

    - `samplerYcbcrConversion`

    - `storageBuffer16BitAccess`

    - `variablePointers`

    - `variablePointersStorageBuffer`

    - `samplerMirrorClampToEdge`

    - `scalarBlockLayout`

    - `shaderUniformTexelBufferArrayDynamicIndexing`

    - `shaderStorageTexelBufferArrayDynamicIndexing`

    - `shaderInt8`

    - `storageBuffer8BitAccess`

Updated Vulkan 1.4 Limit Support

  Vulkan 1.4 also requires support for the following updated limits:

  - `maxImageDimension1D` is increased from 4096 to 8192

  - `maxImageDimension2D` is increased from 4096 to 8192

  - `maxImageDimension3D` is increased from 256 to 512

  - `maxImageDimensionCube` is increased from 4096 to 8192

  - `maxImageArrayLayers` is increased from 256 to 2048

  - `maxUniformBufferRange` is increased from 16384 to 65536

  - `maxPushConstantsSize` is increased from 128 to 256

  - `bufferImageGranularity` is decreased from 131072 to 4096

  - `maxBoundDescriptorSets` is increased from 4 to 7

  - `maxPerStageDescriptorUniformBuffers` is increased from 12 to 15

  - `maxPerStageResources` is increased from 128 to 200

  - `maxDescriptorSetUniformBuffers` is increased from 72 to 90

  - `maxDescriptorSetStorageBuffers` is increased from 24 to 96

  - `maxDescriptorSetStorageImages` is increased from 24 to 144

  - `maxFragmentCombinedOutputResources` is increased from 4 to 16

  - `maxComputeWorkGroupInvocations` is increased from 128 to 256

  - `maxComputeWorkGroupSize` is increased from (128,128,64) to (256,256,64)

  - `shaderSignedZeroInfNanPreserveFloat16` is changed from unspecified to VK_TRUE

  - `shaderSignedZeroInfNanPreserveFloat32` is changed from unspecified to VK_TRUE

  - `subTexelPrecisionBits` is increased from 4 to 8

  - `mipmapPrecisionBits` is increased from 4 to 6

  - `maxSamplerLodBias` is increased from 2 to 14

  - `maxViewportDimensions` is increased from (4096,4096) to (7680,7680)

  - `viewportBoundsRange` is increased from (-8192,8191) to (-15360,15359)

  - `maxFramebufferWidth` is increased from 4096 to 7680

  - `maxFramebufferHeight` is increased from 4096 to 7680

  - `maxColorAttachments` is increased from 7 to 8

  - `timestampComputeAndGraphics` is changed from unspecified to VK_TRUE

  - `pointSizeRange` is increased from (1.0,64.0 - ULP) to (1.0,256.0 - `pointSizeGranularity`)

  - `pointSizeGranularity` is decreased from 1.0 to 0.125

  - `lineWidthGranularity` is decreased from 1.0 to 0.5

  - `maxPushDescriptors` is increased from 16 to 32

  - `standardSampleLocations` is changed from unspecified to VK_TRUE

### New Macros

- VK_API_VERSION_1_4

### New Commands

- vkCmdBindDescriptorSets2

- vkCmdBindIndexBuffer2

- vkCmdPushConstants2

- vkCmdPushDescriptorSet

- vkCmdPushDescriptorSet2

- vkCmdPushDescriptorSetWithTemplate

- vkCmdPushDescriptorSetWithTemplate2

- vkCmdSetLineStipple

- vkCmdSetRenderingAttachmentLocations

- vkCmdSetRenderingInputAttachmentIndices

- vkCopyImageToImage

- vkCopyImageToMemory

- vkCopyMemoryToImage

- vkGetDeviceImageSubresourceLayout

- vkGetImageSubresourceLayout2

- vkGetRenderingAreaGranularity

- vkMapMemory2

- vkTransitionImageLayout

- vkUnmapMemory2

### New Structures

- VkBindDescriptorSetsInfo

- VkCopyImageToImageInfo

- VkCopyImageToMemoryInfo

- VkCopyMemoryToImageInfo

- VkDeviceImageSubresourceInfo

- VkHostImageLayoutTransitionInfo

- VkImageSubresource2

- VkImageToMemoryCopy

- VkMemoryMapInfo

- VkMemoryToImageCopy

- VkMemoryUnmapInfo

- VkPushConstantsInfo

- VkPushDescriptorSetInfo

- VkPushDescriptorSetWithTemplateInfo

- VkRenderingAreaInfo

- VkSubresourceLayout2

- VkVertexInputBindingDivisorDescription

- Extending VkBindBufferMemoryInfo, VkBindImageMemoryInfo:

  - VkBindMemoryStatus

- Extending VkBufferViewCreateInfo, VkBufferCreateInfo, VkPhysicalDeviceExternalBufferInfo, VkDescriptorBufferBindingInfoEXT:

  - VkBufferUsageFlags2CreateInfo

- Extending VkComputePipelineCreateInfo, VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineCreateFlags2CreateInfo

- Extending VkDeviceQueueCreateInfo:

  - VkDeviceQueueGlobalPriorityCreateInfo

- Extending VkGraphicsPipelineCreateInfo, VkCommandBufferInheritanceInfo:

  - VkRenderingAttachmentLocationInfo

  - VkRenderingInputAttachmentIndexInfo

- Extending VkGraphicsPipelineCreateInfo, VkComputePipelineCreateInfo, VkPipelineShaderStageCreateInfo, VkRayTracingPipelineCreateInfoKHR:

  - VkPipelineRobustnessCreateInfo

- Extending VkImageFormatProperties2:

  - VkHostImageCopyDevicePerformanceQuery

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceDynamicRenderingLocalReadFeatures

  - VkPhysicalDeviceGlobalPriorityQueryFeatures

  - VkPhysicalDeviceHostImageCopyFeatures

  - VkPhysicalDeviceIndexTypeUint8Features

  - VkPhysicalDeviceLineRasterizationFeatures

  - VkPhysicalDeviceMaintenance5Features

  - VkPhysicalDeviceMaintenance6Features

  - VkPhysicalDevicePipelineProtectedAccessFeatures

  - VkPhysicalDevicePipelineRobustnessFeatures

  - VkPhysicalDeviceShaderExpectAssumeFeatures

  - VkPhysicalDeviceShaderFloatControls2Features

  - VkPhysicalDeviceShaderSubgroupRotateFeatures

  - VkPhysicalDeviceVertexAttributeDivisorFeatures

  - VkPhysicalDeviceVulkan14Features

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceHostImageCopyProperties

  - VkPhysicalDeviceLineRasterizationProperties

  - VkPhysicalDeviceMaintenance5Properties

  - VkPhysicalDeviceMaintenance6Properties

  - VkPhysicalDevicePipelineRobustnessProperties

  - VkPhysicalDevicePushDescriptorProperties

  - VkPhysicalDeviceVertexAttributeDivisorProperties

  - VkPhysicalDeviceVulkan14Properties

- Extending VkPipelineRasterizationStateCreateInfo:

  - VkPipelineRasterizationLineStateCreateInfo

- Extending VkPipelineVertexInputStateCreateInfo:

  - VkPipelineVertexInputDivisorStateCreateInfo

- Extending VkQueueFamilyProperties2:

  - VkQueueFamilyGlobalPriorityProperties

- Extending VkSubresourceLayout2:

  - VkSubresourceHostMemcpySize

### New Enums

- VkBufferUsageFlagBits2

- VkHostImageCopyFlagBits

- VkLineRasterizationMode

- VkMemoryUnmapFlagBits

- VkPipelineCreateFlagBits2

- VkPipelineRobustnessBufferBehavior

- VkPipelineRobustnessImageBehavior

- VkQueueGlobalPriority

### New Bitmasks

- VkBufferUsageFlags2

- VkHostImageCopyFlags

- VkMemoryUnmapFlags

- VkPipelineCreateFlags2

### New Enum Constants

- VK_MAX_GLOBAL_PRIORITY_SIZE

- Extending VkAttachmentLoadOp:

  - VK_ATTACHMENT_LOAD_OP_NONE

- Extending VkBufferUsageFlagBits2:

  - VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT

- Extending VkDescriptorSetLayoutCreateFlagBits:

  - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT

- Extending VkDescriptorUpdateTemplateType:

  - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS

- Extending VkDynamicState:

  - VK_DYNAMIC_STATE_LINE_STIPPLE

- Extending VkFormat:

  - VK_FORMAT_A1B5G5R5_UNORM_PACK16

  - VK_FORMAT_A8_UNORM

- Extending VkFormatFeatureFlagBits2:

  - VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT

- Extending VkImageLayout:

  - VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ

- Extending VkImageUsageFlagBits:

  - VK_IMAGE_USAGE_HOST_TRANSFER_BIT

- Extending VkIndexType:

  - VK_INDEX_TYPE_UINT8

- Extending VkPipelineCreateFlagBits:

  - VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT

  - VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT

- Extending VkResult:

  - VK_ERROR_NOT_PERMITTED

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO

  - VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS

  - VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO

  - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO

  - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO

  - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO

  - VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO

  - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO

  - VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY

  - VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO

  - VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2

  - VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY

  - VK_STRUCTURE_TYPE_MEMORY_MAP_INFO

  - VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY

  - VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES

  - VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO

  - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO

  - VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO

  - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO

  - VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO

  - VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO

  - VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO

  - VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES

  - VK_STRUCTURE_TYPE_RENDERING_AREA_INFO

  - VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO

  - VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO

  - VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE

  - VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2

- Extending VkSubgroupFeatureFlagBits:

  - VK_SUBGROUP_FEATURE_ROTATE_BIT

  - VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT

## See Also

VK_VERSION_1_0, VK_VERSION_1_1, VK_VERSION_1_2, VK_VERSION_1_3

## Document Notes

For more information, see the Vulkan Specification.

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0