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 VkSamplerAddressMode VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE is 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 the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler 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 the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature 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
-
Extending VkBufferCreateFlagBits:
-
Extending VkBufferUsageFlagBits:
-
Extending VkDescriptorPoolCreateFlagBits:
-
Extending VkDescriptorSetLayoutCreateFlagBits:
-
Extending VkFormatFeatureFlagBits:
-
Extending VkFramebufferCreateFlagBits:
-
Extending VkImageLayout:
-
Extending VkMemoryAllocateFlagBits:
-
Extending VkResult:
-
Extending VkSamplerAddressMode:
-
Extending VkStructureType:
-
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_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO
-
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_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_MEMORY_MODEL_FEATURES
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.