// Copyright 2015-2021 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[] 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'] -- Vulkan Version 1.2 <> a number of key extensions into the core API: include::{generated}/meta/promoted_extensions_VK_VERSION_1_2.txt[] 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.txt[] -- 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::{generated}/meta/promoted_extensions_VK_VERSION_1_2.txt[] 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` 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.txt[] 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'] -- Vulkan Version 1.1 <> a number of key extensions into the core API: include::{generated}/meta/promoted_extensions_VK_VERSION_1_1.txt[] 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.txt[] -- 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::{generated}/meta/promoted_extensions_VK_VERSION_1_1.txt[] 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.txt[] 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'] -- Vulkan Version 1.0 was the initial release of the Vulkan API. include::{generated}/interfaces/VK_VERSION_1_0.txt[] -- 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.txt[]