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_storageextension is not supported, support for the SPIR-VstorageBuffer8BitAccesscapability in shader modules is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::storageBuffer8BitAccesswhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_draw_indirect_count -
If the
VK_KHR_draw_indirect_countextension is not supported, support for the commands vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::drawIndirectCountwhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_sampler_mirror_clamp_to_edge -
If the
VK_KHR_sampler_mirror_clamp_to_edgeextension is not supported, support for the VkSamplerAddressModeVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGEis optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::samplerMirrorClampToEdgewhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_EXT_descriptor_indexing -
If the
VK_EXT_descriptor_indexingextension is not supported, support for thedescriptorIndexingfeature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::descriptorIndexingwhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_EXT_scalar_block_layout -
If the
VK_EXT_scalar_block_layoutextension is not supported, support for thescalarBlockLayoutfeature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::scalarBlockLayoutwhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_EXT_shader_viewport_index_layer -
The
ShaderViewportIndexLayerEXTSPIR-V capability was replaced with theShaderViewportIndexandShaderLayercapabilities. Declaring both is equivalent to declaringShaderViewportIndexLayerEXT. If theVK_EXT_shader_viewport_index_layerextension is not supported, support for theShaderViewportIndexLayerEXTSPIR-V capability is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::shaderOutputViewportIndexand VkPhysicalDeviceVulkan12Features::shaderOutputLayerwhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_buffer_device_address -
If the
VK_KHR_buffer_device_addressextension is not supported, support for thebufferDeviceAddressfeature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::bufferDeviceAddresswhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_shader_atomic_int64 -
If the
VK_KHR_shader_atomic_int64extension is not supported, support for theshaderBufferInt64Atomicsfeature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::shaderBufferInt64Atomicswhen queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_shader_float16_int8 -
If the
VK_KHR_shader_float16_int8extension is not supported, support for theshaderFloat16andshaderInt8features is optional. Support for these features are defined by VkPhysicalDeviceVulkan12Features::shaderFloat16and VkPhysicalDeviceVulkan12Features::shaderInt8when queried via vkGetPhysicalDeviceFeatures2. - Differences Relative to
VK_KHR_vulkan_memory_model -
If the
VK_KHR_vulkan_memory_modelextension is not supported, support for thevulkanMemoryModelfeature is optional. Support for this feature is defined by VkPhysicalDeviceVulkan12Features::vulkanMemoryModelwhen 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
samplerMirrorClampToEdgefeature which indicates whether the implementation supports theVK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGEsampler address mode. -
The
ShaderNonUniformcapability in SPIR-V version 1.5. -
The
shaderOutputViewportIndexfeature which indicates that theShaderViewportIndexcapability can be used. -
The
shaderOutputLayerfeature which indicates that theShaderLayercapability can be used. -
The
subgroupBroadcastDynamicIdfeature which allows the “Id” operand ofOpGroupNonUniformBroadcastto be dynamically uniform within a subgroup, and the “Index” operand ofOpGroupNonUniformQuadBroadcastto be dynamically uniform within a derivative group, in shader modules of version 1.5 or higher. -
The
drawIndirectCountfeature which indicates whether the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions can be used. -
The
descriptorIndexingfeature which indicates the implementation supports the minimum number of descriptor indexing features as defined in the Feature Requirements section. -
The
samplerFilterMinmaxfeature which indicates whether the implementation supports the minimum number of image formats that support theVK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BITfeature bit as defined by thefilterMinmaxSingleComponentFormatsproperty minimum requirements. -
The
framebufferIntegerColorSampleCountslimit 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.