Feature

VK_VERSION_1_2

Vulkan version 1.2

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

[[versions-1.2-new-features]] 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 <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>> feature which indicates whether the implementation supports the ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode. * The <<spirvenv-capabilities-table-ShaderNonUniform, code:ShaderNonUniform>> capability in SPIR-V version 1.5. * The <<features-shaderOutputViewportIndex, pname:shaderOutputViewportIndex>> feature which indicates that the <<spirvenv-capabilities-table-ShaderViewportIndex, code:ShaderViewportIndex>> capability can be used. * The <<features-shaderOutputLayer, pname:shaderOutputLayer>> feature which indicates that the <<spirvenv-capabilities-table-ShaderLayer, code:ShaderLayer>> capability can be used. * The <<features-subgroupBroadcastDynamicId, pname:subgroupBroadcastDynamicId>> feature which allows the "Id" operand of code:OpGroupNonUniformBroadcast to be dynamically uniform within a subgroup, and the "Index" operand of code:OpGroupNonUniformQuadBroadcast to be dynamically uniform within a derivative group, in shader modules of version 1.5 or higher. * The <<features-drawIndirectCount, pname:drawIndirectCount>> feature which indicates whether the flink:vkCmdDrawIndirectCount and flink:vkCmdDrawIndexedIndirectCount functions can be used. * The <<features-descriptorIndexing, pname:descriptorIndexing>> feature which indicates the implementation supports the minimum number of descriptor indexing features as defined in the <<features-requirements, Feature Requirements>> section. * The <<features-samplerFilterMinmax, pname:samplerFilterMinmax>> feature which indicates whether the implementation supports the minimum number of image formats that support the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature bit as defined by the <<limits-filterMinmaxSingleComponentFormats-minimum-requirements, pname:filterMinmaxSingleComponentFormats>> property minimum requirements. * The <<limits-framebufferIntegerColorSampleCounts, pname:framebufferIntegerColorSampleCounts>> limit which indicates the color sample counts that are supported for all framebuffer color attachments with integer formats.

New Macros

New Commands

New Structures

New Enums

New Bitmasks

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