// Copyright 2015-2023 The Khronos Group Inc. // // SPDX-License-Identifier: CC-BY-4.0 [appendix] [[versions]] = 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 <> from extensions. ifdef::VK_VERSION_1_1[] 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. endif::VK_VERSION_1_1[] ifndef::VKSC_VERSION_1_0[:promoted: {generated}/meta] ifdef::VKSC_VERSION_1_0[:promoted: {appendices}/sc_static] ifdef::VK_VERSION_1_3[] [[versions-1.3]] == Version 1.3 // Unfortunately we cannot include titles in an open refpage block, so this // is a refpage-specific alternate form of the section. ifdef::isrefpage[] [open,refpage='VK_VERSION_1_3',desc='Vulkan version 1.3',type='feature',anchor='versions-1.3',xrefs='VK_VERSION_1_0 VK_VERSION_1_1 VK_VERSION_1_2'] -- Vulkan Version 1.3 <> a number of key extensions into the core API: include::{generated}/meta/promoted_extensions_VK_VERSION_1_3.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.3 functionality are summarized in the <>. include::{generated}/interfaces/VK_VERSION_1_3.adoc[] -- endif::isrefpage[] // This is the spec-specific form of the section [[versions-1.3-promotions]] Vulkan Version 1.3 <> a number of key extensions into the core API: include::{generated}/meta/promoted_extensions_VK_VERSION_1_3.adoc[] 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 `apiext: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 slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDevice4444FormatsFeaturesEXT structure. === Differences Relative to `VK_EXT_extended_dynamic_state` All dynamic state enumerants and entry points defined by `apiext:VK_EXT_extended_dynamic_state` are required in Vulkan 1.3. There are no members in the slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure. === Differences Relative to `VK_EXT_extended_dynamic_state2` The optional dynamic state enumerants and entry points defined by `apiext: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 slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure. === Differences Relative to `VK_EXT_texel_buffer_alignment` The more specific alignment requirements defined by slink:VkPhysicalDeviceTexelBufferAlignmentProperties are required in Vulkan 1.3. There are no members in the slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT structure. The pname:texelBufferAlignment feature is enabled if using a Vulkan 1.3 instance. === Differences Relative to `VK_EXT_texture_compression_astc_hdr` If the `apiext:VK_EXT_texture_compression_astc_hdr` extension is not supported, support for all formats defined by it are optional in Vulkan 1.3. The <> member of slink:VkPhysicalDeviceVulkan13Features indicates whether a Vulkan 1.3 implementation supports these formats. === Differences Relative to `VK_EXT_ycbcr_2plane_444_formats` If the `apiext: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 slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT structure. === Additional Vulkan 1.3 Feature Support [[versions-1.3-new-features]] 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 code:WorkgroupSize decoration. * The <> feature which indicates support for accessing memory in shaders as storage buffers via flink:vkGetBufferDeviceAddress. * The <> and <> features, which indicate support for the corresponding Vulkan Memory Model capabilities. * The <> limit is added to provide the total size of all inline uniform block bindings in a pipeline layout. include::{generated}/interfaces/VK_VERSION_1_3.adoc[] endif::VK_VERSION_1_3[] ifdef::VK_VERSION_1_2[] [[versions-1.2]] == Version 1.2 // Unfortunately we cannot include titles in an open refpage block, so this // is a refpage-specific alternate form of the section. ifdef::isrefpage[] [open,refpage='VK_VERSION_1_2',desc='Vulkan version 1.2',type='feature',anchor='versions-1.2',xrefs='VK_VERSION_1_0 VK_VERSION_1_1 VK_VERSION_1_3'] -- Vulkan Version 1.2 <> a number of key extensions into the core API: // Must be redefined in the refpage content ifndef::VKSC_VERSION_1_0[:promoted: {generated}/meta] ifdef::VKSC_VERSION_1_0[:promoted: {appendices}/sc_static] include::{promoted}/promoted_extensions_VK_VERSION_1_2.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.2 functionality are summarized in the <>. include::{generated}/interfaces/VK_VERSION_1_2.adoc[] -- endif::isrefpage[] // This is the spec-specific form of the section [[versions-1.2-promotions]] Vulkan Version 1.2 <> a number of key extensions into the core API: include::{promoted}/promoted_extensions_VK_VERSION_1_2.adoc[] 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 `apiext:VK_KHR_8bit_storage` extension is not supported, support for the SPIR-V <> capability in shader modules is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:storageBuffer8BitAccess when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_draw_indirect_count` If the `apiext:VK_KHR_draw_indirect_count` extension is not supported, support for the entry points flink:vkCmdDrawIndirectCount and flink:vkCmdDrawIndexedIndirectCount is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:drawIndirectCount when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_sampler_mirror_clamp_to_edge` If the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is not supported, support for the elink:VkSamplerAddressMode ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:samplerMirrorClampToEdge when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_EXT_descriptor_indexing` If the `apiext:VK_EXT_descriptor_indexing` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:descriptorIndexing when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_EXT_scalar_block_layout` If the `apiext:VK_EXT_scalar_block_layout` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:scalarBlockLayout when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_EXT_shader_viewport_index_layer` The code:ShaderViewportIndexLayerEXT SPIR-V capability was replaced with the code:ShaderViewportIndex and code:ShaderLayer capabilities. Declaring both is equivalent to declaring code:ShaderViewportIndexLayerEXT. If the `apiext:VK_EXT_shader_viewport_index_layer` extension is not supported, support for the code:ShaderViewportIndexLayerEXT SPIR-V capability is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputViewportIndex and slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputLayer when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_buffer_device_address` If the `apiext:VK_KHR_buffer_device_address` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:bufferDeviceAddress when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_shader_atomic_int64` If the `apiext:VK_KHR_shader_atomic_int64` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:shaderBufferInt64Atomics when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_shader_float16_int8` If the `apiext:VK_KHR_shader_float16_int8` extension is not supported, support for the <> and <> features is optional. Support for these features are defined by slink:VkPhysicalDeviceVulkan12Features::pname:shaderFloat16 and slink:VkPhysicalDeviceVulkan12Features::pname:shaderInt8 when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_vulkan_memory_model` If the `apiext:VK_KHR_vulkan_memory_model` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:vulkanMemoryModel when queried via flink: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 <> feature which indicates whether the implementation supports the ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode. * The <> capability in SPIR-V version 1.5. * The <> feature which indicates that the <> capability can be used. * The <> feature which indicates that the <> capability can be used. * The <> 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 <> feature which indicates whether the flink:vkCmdDrawIndirectCount and flink:vkCmdDrawIndexedIndirectCount functions can be used. * The <> feature which indicates the implementation supports the minimum number of descriptor indexing features as defined in the <> section. * The <> 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 <> property minimum requirements. * The <> limit which indicates the color sample counts that are supported for all framebuffer color attachments with integer formats. include::{generated}/interfaces/VK_VERSION_1_2.adoc[] endif::VK_VERSION_1_2[] ifdef::VK_VERSION_1_1[] [[versions-1.1]] == Version 1.1 // Unfortunately we cannot include titles in an open refpage block, so this // is a refpage-specific alternate form of the section. ifdef::isrefpage[] [open,refpage='VK_VERSION_1_1',desc='Vulkan version 1.1',type='feature',anchor='versions-1.1',xrefs='VK_VERSION_1_0 VK_VERSION_1_2 VK_VERSION_1_3'] -- Vulkan Version 1.1 <> a number of key extensions into the core API: // Must be redefined in the refpage content ifndef::VKSC_VERSION_1_0[:promoted: {generated}/meta] ifdef::VKSC_VERSION_1_0[:promoted: {appendices}/sc_static] include::{promoted}/promoted_extensions_VK_VERSION_1_1.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.1 functionality are summarized in the <>. include::{generated}/interfaces/VK_VERSION_1_1.adoc[] -- endif::isrefpage[] // This is the spec-specific form of the section [[versions-1.1-promotions]] Vulkan Version 1.1 <> a number of key extensions into the core API: include::{promoted}/promoted_extensions_VK_VERSION_1_1.adoc[] 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 `apiext:VK_KHR_16bit_storage` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDevice16BitStorageFeatures::pname:storageBuffer16BitAccess ifdef::VK_VERSION_1_2[] or slink:VkPhysicalDeviceVulkan11Features::pname:storageBuffer16BitAccess endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_sampler_ycbcr_conversion` If the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures::pname:samplerYcbcrConversion ifdef::VK_VERSION_1_2[] or slink:VkPhysicalDeviceVulkan11Features::pname:samplerYcbcrConversion endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_shader_draw_parameters` If the `apiext:VK_KHR_shader_draw_parameters` extension is not supported, support for the {spirv}/KHR/SPV_KHR_shader_draw_parameters.html[`SPV_KHR_shader_draw_parameters`] SPIR-V extension is optional. Support for this feature is defined by slink:VkPhysicalDeviceShaderDrawParametersFeatures::pname:shaderDrawParameters ifdef::VK_VERSION_1_2[] or slink:VkPhysicalDeviceVulkan11Features::pname:shaderDrawParameters endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. === Differences Relative to `VK_KHR_variable_pointers` If the `apiext:VK_KHR_variable_pointers` extension is not supported, support for the <> feature is optional. Support for this feature is defined by slink:VkPhysicalDeviceVariablePointersFeatures::pname:variablePointersStorageBuffer ifdef::VK_VERSION_1_2[] or slink:VkPhysicalDeviceVulkan11Features::pname:variablePointersStorageBuffer endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. === Additional Vulkan 1.1 Feature Support [[versions-1.1-new-features]] In addition to the promoted extensions described above, Vulkan 1.1 added support for: * The <> and <>. * The <> feature. * A new command to enumerate the instance version: flink:vkEnumerateInstanceVersion. * The slink:VkPhysicalDeviceShaderDrawParametersFeatures feature query struct (where the `apiext:VK_KHR_shader_draw_parameters` extension did not have one). include::{generated}/interfaces/VK_VERSION_1_1.adoc[] endif::VK_VERSION_1_1[] [[versions-1.0]] == Version 1.0 // Unfortunately we cannot include titles in an open refpage block, so this // is a refpage-specific alternate form of the section. ifdef::isrefpage[] [open,refpage='VK_VERSION_1_0',desc='Vulkan version 1.0',type='feature',anchor='versions-1.0',xrefs='VK_VERSION_1_1 VK_VERSION_1_2 VK_VERSION_1_3'] -- Vulkan Version 1.0 was the initial release of the Vulkan API. include::{generated}/interfaces/VK_VERSION_1_0.adoc[] -- endif::isrefpage[] // This is the spec-specific form of the section Vulkan Version 1.0 was the initial release of the Vulkan API. include::{generated}/interfaces/VK_VERSION_1_0.adoc[]