Description
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-VstorageBuffer8BitAccess
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 VkSamplerAddressModeVK_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 thedescriptorIndexing
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 thescalarBlockLayout
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 theShaderViewportIndex
andShaderLayer
capabilities. Declaring both is equivalent to declaringShaderViewportIndexLayerEXT
. If theVK_EXT_shader_viewport_index_layer
extension is not supported, support for theShaderViewportIndexLayerEXT
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 thebufferDeviceAddress
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 theshaderBufferInt64Atomics
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 theshaderFloat16
andshaderInt8
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 thevulkanMemoryModel
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 theVK_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 theShaderViewportIndex
capability can be used. -
The
shaderOutputLayer
feature which indicates that theShaderLayer
capability can be used. -
The
subgroupBroadcastDynamicId
feature which allows the “Id” operand ofOpGroupNonUniformBroadcast
to be dynamically uniform within a subgroup, and the “Index” operand ofOpGroupNonUniformQuadBroadcast
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 theVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT
feature bit as defined by thefilterMinmaxSingleComponentFormats
property minimum requirements. -
The
framebufferIntegerColorSampleCounts
limit which indicates the color sample counts that are supported for all framebuffer color attachments with integer formats.
-
New Structures
-
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:
-
Extending VkPhysicalDeviceProperties2:
-
Extending VkRenderPassBeginInfo:
-
Extending VkSamplerCreateInfo:
-
Extending VkSemaphoreCreateInfo, VkPhysicalDeviceExternalSemaphoreInfo:
-
Extending VkSubmitInfo, VkBindSparseInfo:
-
Extending VkSubpassDescription2:
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
-
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.