Appendix D: Core Revisions (Informative)
New minor versions of the Vulkan API are defined periodically by the Khronos Vulkan Working Group. These consist of some amount of additional functionality added to the core API, potentially including both new functionality and functionality promoted from extensions.
It is possible to build the specification for earlier versions, but to aid readability of the latest versions, this appendix gives an overview of the changes as compared to earlier versions.
Version 1.3
Vulkan Version 1.3 promoted a number of key extensions into the core API:
All differences in behavior between these extensions and the corresponding Vulkan 1.3 functionality are summarized below.
Differences Relative to VK_EXT_4444_formats
If the VK_EXT_4444_formats extension is not supported, support for
all formats defined by it are optional in Vulkan 1.3.
There are no members in the VkPhysicalDeviceVulkan13Features structure
corresponding to the VkPhysicalDevice4444FormatsFeaturesEXT structure.
Differences Relative to VK_EXT_extended_dynamic_state
All dynamic state enumerants and entry points defined by
VK_EXT_extended_dynamic_state are required in Vulkan 1.3.
There are no members in the VkPhysicalDeviceVulkan13Features structure
corresponding to the VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
structure.
Differences Relative to VK_EXT_extended_dynamic_state2
The optional dynamic state enumerants and entry points defined by
VK_EXT_extended_dynamic_state2 for patch control points and logic
op are not promoted in Vulkan 1.3.
There are no members in the VkPhysicalDeviceVulkan13Features structure
corresponding to the VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
structure.
Differences Relative to VK_EXT_texel_buffer_alignment
The more specific alignment requirements defined by
VkPhysicalDeviceTexelBufferAlignmentProperties are required in Vulkan
1.3.
There are no members in the VkPhysicalDeviceVulkan13Features structure
corresponding to the VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
structure.
The texelBufferAlignment feature is enabled if using a Vulkan 1.3
instance.
Differences Relative to VK_EXT_texture_compression_astc_hdr
If the VK_EXT_texture_compression_astc_hdr extension is not
supported, support for all formats defined by it are optional in Vulkan 1.3.
The textureCompressionASTC_HDR member of
VkPhysicalDeviceVulkan13Features indicates whether a Vulkan 1.3
implementation supports these formats.
Differences Relative to VK_EXT_ycbcr_2plane_444_formats
If the VK_EXT_ycbcr_2plane_444_formats extension is not supported,
support for all formats defined by it are optional in Vulkan 1.3.
There are no members in the VkPhysicalDeviceVulkan13Features structure
corresponding to the VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
structure.
Additional Vulkan 1.3 Feature Support
In addition to the promoted extensions described above, Vulkan 1.3 added required support for:
-
SPIR-V version 1.6
-
SPIR-V 1.6 deprecates (but does not remove) the
WorkgroupSizedecoration.
-
-
The
bufferDeviceAddressfeature which indicates support for accessing memory in shaders as storage buffers via vkGetBufferDeviceAddress. -
The
vulkanMemoryModelandvulkanMemoryModelDeviceScopefeatures, which indicate support for the corresponding Vulkan Memory Model capabilities. -
The
maxInlineUniformTotalSizelimit is added to provide the total size of all inline uniform block bindings in a pipeline layout.
New Structures
-
Extending VkCommandBufferInheritanceInfo:
-
Extending VkDescriptorPoolCreateInfo:
-
Extending VkDeviceCreateInfo:
-
Extending VkFormatProperties2:
-
Extending VkGraphicsPipelineCreateInfo:
-
Extending VkGraphicsPipelineCreateInfo, VkComputePipelineCreateInfo, VkRayTracingPipelineCreateInfoNV, VkRayTracingPipelineCreateInfoKHR, VkExecutionGraphPipelineCreateInfoAMDX:
-
Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
-
Extending VkPhysicalDeviceProperties2:
-
Extending VkPipelineShaderStageCreateInfo, VkShaderCreateInfoEXT:
-
Extending VkSubpassDependency2:
-
Extending VkWriteDescriptorSet:
New Enum Constants
-
Extending VkAccessFlagBits:
-
VK_ACCESS_NONE
-
-
Extending VkAttachmentStoreOp:
-
VK_ATTACHMENT_STORE_OP_NONE
-
-
Extending VkDescriptorType:
-
VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
-
-
Extending VkDynamicState:
-
VK_DYNAMIC_STATE_CULL_MODE -
VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE -
VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE -
VK_DYNAMIC_STATE_DEPTH_COMPARE_OP -
VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE -
VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE -
VK_DYNAMIC_STATE_FRONT_FACE -
VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE -
VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY -
VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE -
VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT -
VK_DYNAMIC_STATE_STENCIL_OP -
VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE -
VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE -
VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
-
-
Extending VkEventCreateFlagBits:
-
VK_EVENT_CREATE_DEVICE_ONLY_BIT
-
-
Extending VkFormat:
-
VK_FORMAT_A4B4G4R4_UNORM_PACK16 -
VK_FORMAT_A4R4G4B4_UNORM_PACK16 -
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK -
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK -
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK -
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK -
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK -
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK -
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G16_B16R16_2PLANE_444_UNORM -
VK_FORMAT_G8_B8R8_2PLANE_444_UNORM
-
-
Extending VkImageAspectFlagBits:
-
VK_IMAGE_ASPECT_NONE
-
-
Extending VkImageLayout:
-
VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL -
VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL
-
-
Extending VkObjectType:
-
VK_OBJECT_TYPE_PRIVATE_DATA_SLOT
-
-
Extending VkPipelineCacheCreateFlagBits:
-
VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
-
-
Extending VkPipelineCreateFlagBits:
-
VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT -
VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
-
-
Extending VkPipelineShaderStageCreateFlagBits:
-
VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT -
VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
-
-
Extending VkPipelineStageFlagBits:
-
VK_PIPELINE_STAGE_NONE
-
-
Extending VkResult:
-
VK_PIPELINE_COMPILE_REQUIRED
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 -
VK_STRUCTURE_TYPE_BUFFER_COPY_2 -
VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 -
VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 -
VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO -
VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO -
VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 -
VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 -
VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 -
VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 -
VK_STRUCTURE_TYPE_DEPENDENCY_INFO -
VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO -
VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS -
VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS -
VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO -
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 -
VK_STRUCTURE_TYPE_IMAGE_BLIT_2 -
VK_STRUCTURE_TYPE_IMAGE_COPY_2 -
VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 -
VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 -
VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES -
VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO -
VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO -
VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO -
VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO -
VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO -
VK_STRUCTURE_TYPE_RENDERING_INFO -
VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 -
VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO -
VK_STRUCTURE_TYPE_SUBMIT_INFO_2 -
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
-
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 entry points 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
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
-
Version 1.1
Vulkan Version 1.1 promoted a number of key extensions into the core API:
All differences in behavior between these extensions and the corresponding Vulkan 1.1 functionality are summarized below.
Differences Relative to VK_KHR_16bit_storage
If the VK_KHR_16bit_storage extension is not supported, support for
the storageBuffer16BitAccess
feature is optional.
Support for this feature is defined by
VkPhysicalDevice16BitStorageFeatures::storageBuffer16BitAccess
or VkPhysicalDeviceVulkan11Features::storageBuffer16BitAccess
when queried via vkGetPhysicalDeviceFeatures2.
Differences Relative to VK_KHR_sampler_ycbcr_conversion
If the VK_KHR_sampler_ycbcr_conversion extension is not supported,
support for the samplerYcbcrConversion feature is optional.
Support for this feature is defined by
VkPhysicalDeviceSamplerYcbcrConversionFeatures::samplerYcbcrConversion
or VkPhysicalDeviceVulkan11Features::samplerYcbcrConversion
when queried via vkGetPhysicalDeviceFeatures2.
Differences Relative to VK_KHR_shader_draw_parameters
If the VK_KHR_shader_draw_parameters extension is not supported,
support for the
SPV_KHR_shader_draw_parameters
SPIR-V extension is optional.
Support for this feature is defined by
VkPhysicalDeviceShaderDrawParametersFeatures::shaderDrawParameters
or VkPhysicalDeviceVulkan11Features::shaderDrawParameters
when queried via vkGetPhysicalDeviceFeatures2.
Differences Relative to VK_KHR_variable_pointers
If the VK_KHR_variable_pointers extension is not supported, support
for the variablePointersStorageBuffer feature is optional.
Support for this feature is defined by
VkPhysicalDeviceVariablePointersFeatures::variablePointersStorageBuffer
or
VkPhysicalDeviceVulkan11Features::variablePointersStorageBuffer
when queried via vkGetPhysicalDeviceFeatures2.
Additional Vulkan 1.1 Feature Support
In addition to the promoted extensions described above, Vulkan 1.1 added support for:
-
The group operations and subgroup scope.
-
The protected memory feature.
-
A new command to enumerate the instance version: vkEnumerateInstanceVersion.
-
The VkPhysicalDeviceShaderDrawParametersFeatures feature query struct (where the
VK_KHR_shader_draw_parametersextension did not have one).
New Structures
-
Extending VkBindBufferMemoryInfo:
-
Extending VkBindImageMemoryInfo:
-
Extending VkBindSparseInfo:
-
Extending VkBufferCreateInfo:
-
Extending VkCommandBufferBeginInfo:
-
Extending VkDeviceCreateInfo:
-
Extending VkFenceCreateInfo:
-
Extending VkImageCreateInfo:
-
Extending VkImageFormatProperties2:
-
Extending VkImageMemoryRequirementsInfo2:
-
Extending VkImageViewCreateInfo:
-
Extending VkMemoryAllocateInfo:
-
Extending VkMemoryRequirements2:
-
Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
-
Extending VkPhysicalDeviceImageFormatInfo2:
-
Extending VkPhysicalDeviceProperties2:
-
Extending VkPipelineTessellationStateCreateInfo:
-
Extending VkRenderPassBeginInfo, VkRenderingInfo:
-
Extending VkRenderPassCreateInfo:
-
Extending VkSamplerCreateInfo, VkImageViewCreateInfo:
-
Extending VkSemaphoreCreateInfo:
-
Extending VkSubmitInfo:
New Enum Constants
-
VK_LUID_SIZE -
VK_MAX_DEVICE_GROUP_SIZE -
VK_QUEUE_FAMILY_EXTERNAL -
Extending VkBufferCreateFlagBits:
-
VK_BUFFER_CREATE_PROTECTED_BIT
-
-
Extending VkCommandPoolCreateFlagBits:
-
VK_COMMAND_POOL_CREATE_PROTECTED_BIT
-
-
Extending VkDependencyFlagBits:
-
VK_DEPENDENCY_DEVICE_GROUP_BIT -
VK_DEPENDENCY_VIEW_LOCAL_BIT
-
-
Extending VkDeviceQueueCreateFlagBits:
-
VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
-
-
Extending VkFormat:
-
VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 -
VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 -
VK_FORMAT_B16G16R16G16_422_UNORM -
VK_FORMAT_B8G8R8G8_422_UNORM -
VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 -
VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 -
VK_FORMAT_G16B16G16R16_422_UNORM -
VK_FORMAT_G16_B16R16_2PLANE_420_UNORM -
VK_FORMAT_G16_B16R16_2PLANE_422_UNORM -
VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM -
VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM -
VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM -
VK_FORMAT_G8B8G8R8_422_UNORM -
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM -
VK_FORMAT_G8_B8R8_2PLANE_422_UNORM -
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM -
VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM -
VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM -
VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 -
VK_FORMAT_R10X6G10X6_UNORM_2PACK16 -
VK_FORMAT_R10X6_UNORM_PACK16 -
VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 -
VK_FORMAT_R12X4G12X4_UNORM_2PACK16 -
VK_FORMAT_R12X4_UNORM_PACK16
-
-
Extending VkFormatFeatureFlagBits:
-
VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT -
VK_FORMAT_FEATURE_DISJOINT_BIT -
VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT -
VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT -
VK_FORMAT_FEATURE_TRANSFER_DST_BIT -
VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
-
-
Extending VkImageAspectFlagBits:
-
VK_IMAGE_ASPECT_PLANE_0_BIT -
VK_IMAGE_ASPECT_PLANE_1_BIT -
VK_IMAGE_ASPECT_PLANE_2_BIT
-
-
Extending VkImageCreateFlagBits:
-
VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT -
VK_IMAGE_CREATE_ALIAS_BIT -
VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT -
VK_IMAGE_CREATE_DISJOINT_BIT -
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT -
VK_IMAGE_CREATE_PROTECTED_BIT -
VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
-
-
Extending VkImageLayout:
-
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL -
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
-
-
Extending VkMemoryHeapFlagBits:
-
VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
-
-
Extending VkMemoryPropertyFlagBits:
-
VK_MEMORY_PROPERTY_PROTECTED_BIT
-
-
Extending VkObjectType:
-
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE -
VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
-
-
Extending VkPipelineCreateFlagBits:
-
VK_PIPELINE_CREATE_DISPATCH_BASE -
VK_PIPELINE_CREATE_DISPATCH_BASE_BIT -
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
-
-
Extending VkQueueFlagBits:
-
VK_QUEUE_PROTECTED_BIT
-
-
Extending VkResult:
-
VK_ERROR_INVALID_EXTERNAL_HANDLE -
VK_ERROR_OUT_OF_POOL_MEMORY
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -
VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO -
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -
VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO -
VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -
VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 -
VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT -
VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO -
VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -
VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -
VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -
VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -
VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -
VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 -
VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -
VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -
VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -
VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES -
VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES -
VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -
VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES -
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 -
VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 -
VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 -
VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -
VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 -
VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -
VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES -
VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -
VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -
VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 -
VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -
VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO -
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -
VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 -
VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
-
Version 1.0
Vulkan Version 1.0 was the initial release of the Vulkan API.
New Structures
New Enum Constants
-
VK_ATTACHMENT_UNUSED -
VK_FALSE -
VK_LOD_CLAMP_NONE -
VK_MAX_DESCRIPTION_SIZE -
VK_MAX_EXTENSION_NAME_SIZE -
VK_MAX_MEMORY_HEAPS -
VK_MAX_MEMORY_TYPES -
VK_MAX_PHYSICAL_DEVICE_NAME_SIZE -
VK_QUEUE_FAMILY_IGNORED -
VK_REMAINING_ARRAY_LAYERS -
VK_REMAINING_MIP_LEVELS -
VK_SUBPASS_EXTERNAL -
VK_TRUE -
VK_UUID_SIZE -
VK_WHOLE_SIZE