Feature

VK_VERSION_1_2

Vulkan version 1.2

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

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