VK_VERSION_1_2(3)

# VK_VERSION_1_2(3) Manual Page

## Name

VK_VERSION_1_2 - Vulkan version 1.2

## Description

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

- VK_KHR_8bit_storage

- VK_KHR_buffer_device_address

- VK_KHR_create_renderpass2

- VK_KHR_depth_stencil_resolve

- VK_KHR_draw_indirect_count

- VK_KHR_driver_properties

- VK_KHR_image_format_list

- VK_KHR_imageless_framebuffer

- VK_KHR_sampler_mirror_clamp_to_edge

- VK_KHR_separate_depth_stencil_layouts

- VK_KHR_shader_atomic_int64

- VK_KHR_shader_float16_int8

- VK_KHR_shader_float_controls

- VK_KHR_shader_subgroup_extended_types

- VK_KHR_spirv_1_4

- VK_KHR_timeline_semaphore

- VK_KHR_uniform_buffer_standard_layout

- VK_KHR_vulkan_memory_model

- VK_EXT_descriptor_indexing

- VK_EXT_host_query_reset

- VK_EXT_sampler_filter_minmax

- VK_EXT_scalar_block_layout

- VK_EXT_separate_stencil_usage

- VK_EXT_shader_viewport_index_layer

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

Differences Relative to `VK_KHR_8bit_storage`

  If the `VK_KHR_8bit_storage` extension is not supported, support for the SPIR-V `storageBuffer8BitAccess` capability in shader modules is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`storageBuffer8BitAccess` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_draw_indirect_count`

  If the `VK_KHR_draw_indirect_count` extension is not supported, support for the commands vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`drawIndirectCount` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_sampler_mirror_clamp_to_edge`

  If the `VK_KHR_sampler_mirror_clamp_to_edge` extension is not supported, support for the VkSamplerAddressMode VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`samplerMirrorClampToEdge` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_EXT_descriptor_indexing`

  If the `VK_EXT_descriptor_indexing` extension is not supported, support for the `descriptorIndexing` feature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`descriptorIndexing` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_EXT_scalar_block_layout`

  If the `VK_EXT_scalar_block_layout` extension is not supported, support for the `scalarBlockLayout` feature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`scalarBlockLayout` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_EXT_shader_viewport_index_layer`

  The `ShaderViewportIndexLayerEXT` SPIR-V capability was replaced with the `ShaderViewportIndex` and `ShaderLayer` capabilities. Declaring both is equivalent to declaring `ShaderViewportIndexLayerEXT`. If the `VK_EXT_shader_viewport_index_layer` extension is not supported, support for the `ShaderViewportIndexLayerEXT` SPIR-V capability is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`shaderOutputViewportIndex` and VkPhysicalDeviceVulkan12Features::`shaderOutputLayer` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_buffer_device_address`

  If the `VK_KHR_buffer_device_address` extension is not supported, support for the `bufferDeviceAddress` feature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`bufferDeviceAddress` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_shader_atomic_int64`

  If the `VK_KHR_shader_atomic_int64` extension is not supported, support for the `shaderBufferInt64Atomics` feature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`shaderBufferInt64Atomics` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_shader_float16_int8`

  If the `VK_KHR_shader_float16_int8` extension is not supported, support for the `shaderFloat16` and `shaderInt8` features is optional. Support for these features are defined by VkPhysicalDeviceVulkan12Features::`shaderFloat16` and VkPhysicalDeviceVulkan12Features::`shaderInt8` when queried via vkGetPhysicalDeviceFeatures2.

Differences Relative to `VK_KHR_vulkan_memory_model`

  If the `VK_KHR_vulkan_memory_model` extension is not supported, support for the `vulkanMemoryModel` feature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::`vulkanMemoryModel` when queried via vkGetPhysicalDeviceFeatures2.

Additional Vulkan 1.2 Feature Support

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

  - SPIR-V version 1.4.

  - SPIR-V version 1.5.

  - The `samplerMirrorClampToEdge` feature which indicates whether the implementation supports the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.

  - The `ShaderNonUniform` capability in SPIR-V version 1.5.

  - The `shaderOutputViewportIndex` feature which indicates that the `ShaderViewportIndex` capability can be used.

  - The `shaderOutputLayer` feature which indicates that the `ShaderLayer` capability can be used.

  - The `subgroupBroadcastDynamicId` feature which allows the “Id” operand of `OpGroupNonUniformBroadcast` to be dynamically uniform within a subgroup, and the “Index” operand of `OpGroupNonUniformQuadBroadcast` to be dynamically uniform within a derivative group, in shader modules of version 1.5 or higher.

  - The `drawIndirectCount` feature which indicates whether the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions can be used.

  - The `descriptorIndexing` feature which indicates the implementation supports the minimum number of descriptor indexing features as defined in the Feature Requirements section.

  - The `samplerFilterMinmax` feature which indicates whether the implementation supports the minimum number of image formats that support the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature bit as defined by the `filterMinmaxSingleComponentFormats` property minimum requirements.

  - The `framebufferIntegerColorSampleCounts` limit which indicates the color sample counts that are supported for all framebuffer color attachments with integer formats.

### New Macros

- VK_API_VERSION_1_2

### New Commands

- vkCmdBeginRenderPass2

- vkCmdDrawIndexedIndirectCount

- vkCmdDrawIndirectCount

- vkCmdEndRenderPass2

- vkCmdNextSubpass2

- vkCreateRenderPass2

- vkGetBufferDeviceAddress

- vkGetBufferOpaqueCaptureAddress

- vkGetDeviceMemoryOpaqueCaptureAddress

- vkGetSemaphoreCounterValue

- vkResetQueryPool

- vkSignalSemaphore

- vkWaitSemaphores

### New Structures

- VkAttachmentDescription2

- VkAttachmentReference2

- VkBufferDeviceAddressInfo

- VkConformanceVersion

- VkDeviceMemoryOpaqueCaptureAddressInfo

- VkFramebufferAttachmentImageInfo

- VkRenderPassCreateInfo2

- VkSemaphoreSignalInfo

- VkSemaphoreWaitInfo

- VkSubpassBeginInfo

- VkSubpassDependency2

- VkSubpassDescription2

- VkSubpassEndInfo

- Extending VkAttachmentDescription2:

  - VkAttachmentDescriptionStencilLayout

- Extending VkAttachmentReference2:

  - VkAttachmentReferenceStencilLayout

- Extending VkBufferCreateInfo:

  - VkBufferOpaqueCaptureAddressCreateInfo

- Extending VkDescriptorSetAllocateInfo:

  - VkDescriptorSetVariableDescriptorCountAllocateInfo

- Extending VkDescriptorSetLayoutCreateInfo:

  - VkDescriptorSetLayoutBindingFlagsCreateInfo

- Extending VkDescriptorSetLayoutSupport:

  - VkDescriptorSetVariableDescriptorCountLayoutSupport

- Extending VkFramebufferCreateInfo:

  - VkFramebufferAttachmentsCreateInfo

- Extending VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2:

  - VkImageStencilUsageCreateInfo

- Extending VkImageCreateInfo, VkSwapchainCreateInfoKHR, VkPhysicalDeviceImageFormatInfo2:

  - VkImageFormatListCreateInfo

- Extending VkMemoryAllocateInfo:

  - VkMemoryOpaqueCaptureAddressAllocateInfo

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDevice8BitStorageFeatures

  - VkPhysicalDeviceBufferDeviceAddressFeatures

  - VkPhysicalDeviceDescriptorIndexingFeatures

  - VkPhysicalDeviceHostQueryResetFeatures

  - VkPhysicalDeviceImagelessFramebufferFeatures

  - VkPhysicalDeviceScalarBlockLayoutFeatures

  - VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures

  - VkPhysicalDeviceShaderAtomicInt64Features

  - VkPhysicalDeviceShaderFloat16Int8Features

  - VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures

  - VkPhysicalDeviceTimelineSemaphoreFeatures

  - VkPhysicalDeviceUniformBufferStandardLayoutFeatures

  - VkPhysicalDeviceVulkan11Features

  - VkPhysicalDeviceVulkan12Features

  - VkPhysicalDeviceVulkanMemoryModelFeatures

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceDepthStencilResolveProperties

  - VkPhysicalDeviceDescriptorIndexingProperties

  - VkPhysicalDeviceDriverProperties

  - VkPhysicalDeviceFloatControlsProperties

  - VkPhysicalDeviceSamplerFilterMinmaxProperties

  - VkPhysicalDeviceTimelineSemaphoreProperties

  - VkPhysicalDeviceVulkan11Properties

  - VkPhysicalDeviceVulkan12Properties

- Extending VkRenderPassBeginInfo:

  - VkRenderPassAttachmentBeginInfo

- Extending VkSamplerCreateInfo:

  - VkSamplerReductionModeCreateInfo

- Extending VkSemaphoreCreateInfo, VkPhysicalDeviceExternalSemaphoreInfo:

  - VkSemaphoreTypeCreateInfo

- Extending VkSubmitInfo, VkBindSparseInfo:

  - VkTimelineSemaphoreSubmitInfo

- Extending VkSubpassDescription2:

  - VkSubpassDescriptionDepthStencilResolve

### New Enums

- VkDescriptorBindingFlagBits

- VkDriverId

- VkResolveModeFlagBits

- VkSamplerReductionMode

- VkSemaphoreType

- VkSemaphoreWaitFlagBits

- VkShaderFloatControlsIndependence

### New Bitmasks

- VkDescriptorBindingFlags

- VkResolveModeFlags

- VkSemaphoreWaitFlags

### New Enum Constants

- VK_MAX_DRIVER_INFO_SIZE

- VK_MAX_DRIVER_NAME_SIZE

- Extending VkBufferCreateFlagBits:

  - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT

- Extending VkBufferUsageFlagBits:

  - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT

- Extending VkDescriptorPoolCreateFlagBits:

  - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT

- Extending VkDescriptorSetLayoutCreateFlagBits:

  - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT

- Extending VkFormatFeatureFlagBits:

  - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT

- Extending VkFramebufferCreateFlagBits:

  - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT

- Extending VkImageLayout:

  - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL

  - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL

  - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL

  - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL

- Extending VkMemoryAllocateFlagBits:

  - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT

  - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT

- Extending VkResult:

  - VK_ERROR_FRAGMENTATION

  - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS

- Extending VkSamplerAddressMode:

  - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2

  - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT

  - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2

  - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT

  - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO

  - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO

  - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO

  - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO

  - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT

  - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO

  - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO

  - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO

  - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO

  - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO

  - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES

  - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO

  - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2

  - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO

  - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO

  - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO

  - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO

  - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO

  - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2

  - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2

  - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE

  - VK_STRUCTURE_TYPE_SUBPASS_END_INFO

  - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO

## See Also

VK_VERSION_1_0, VK_VERSION_1_1, VK_VERSION_1_3, VK_VERSION_1_4

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