VK_VERSION_1_2
Vulkan Version 1.2 promoted a number of key extensions into the core API:
VK_KHR_sampler_mirror_clamp_to_edge
VK_KHR_separate_depth_stencil_layouts
VK_KHR_shader_subgroup_extended_types
VK_KHR_uniform_buffer_standard_layout
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
- 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:
- Extending VkAttachmentReference2:
- Extending VkBufferCreateInfo:
- Extending VkDescriptorSetAllocateInfo:
- Extending VkDescriptorSetLayoutCreateInfo:
- Extending VkDescriptorSetLayoutSupport:
- Extending VkFramebufferCreateInfo:
- Extending VkImageCreateInfo, VkPhysicalDeviceImageFormatInfo2:
- Extending VkImageCreateInfo, VkSwapchainCreateInfoKHR, VkPhysicalDeviceImageFormatInfo2:
- Extending VkMemoryAllocateInfo:
- 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:
- Extending VkSamplerCreateInfo:
- Extending VkSemaphoreCreateInfo, VkPhysicalDeviceExternalSemaphoreInfo:
- Extending VkSubmitInfo, VkBindSparseInfo:
- Extending VkSubpassDescription2:
New Enums
- VkDescriptorBindingFlagBits
- VkDriverId
- VkResolveModeFlagBits
- VkSamplerReductionMode
- VkSemaphoreType
- VkSemaphoreWaitFlagBits
- VkShaderFloatControlsIndependence
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