| // 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 |
| <<extendingvulkan-compatibility-promotion,promoted>> 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 can't 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 <<extendingvulkan-compatibility-promotion,promoted>> 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 <<versions-1.2-promotions, |
| Vulkan 1.2 specification appendix>>. |
| |
| 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 <<extendingvulkan-compatibility-promotion,promoted>> 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 <<features-storageBuffer8BitAccess, |
| code:StorageBuffer8BitAccess>> 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 <<features-descriptorIndexing,descriptorIndexing>> 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 <<features-scalarBlockLayout,scalarBlockLayout>> 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 <<features-bufferDeviceAddress,bufferDeviceAddress>> 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 |
| <<features-shaderBufferInt64Atomics,shaderBufferInt64Atomics>> 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 <<features-shaderFloat16, pname:shaderFloat16>> and |
| <<features-shaderInt8, pname:shaderInt8>> 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 <<features-vulkanMemoryModel,vulkanMemoryModel>> 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 <<features-samplerMirrorClampToEdge,samplerMirrorClampToEdge>> |
| feature which indicates whether the implementation supports the |
| ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode. |
| * The |
| <<spirvenv-capabilities-table-ShaderNonUniform,code:ShaderNonUniform>> |
| capability in SPIR-V version 1.5. |
| * The <<features-shaderOutputViewportIndex,shaderOutputViewportIndex>> |
| feature which indicates that the |
| <<spirvenv-capabilities-table-ShaderViewportIndex,code:ShaderViewportIndex>> |
| capability can be used. |
| * The <<features-shaderOutputLayer,shaderOutputLayer>> feature which |
| indicates that the |
| <<spirvenv-capabilities-table-ShaderLayer,code:ShaderLayer>> capability |
| can be used. |
| * The <<features-subgroupBroadcastDynamicId,subgroupBroadcastDynamicId>> |
| 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 <<features-drawIndirectCount,drawIndirectCount>> feature which |
| indicates whether the flink:vkCmdDrawIndirectCount and |
| flink:vkCmdDrawIndexedIndirectCount functions can be used. |
| * The <<features-descriptorIndexing,descriptorIndexing>> feature which |
| indicates the implementation supports the minimum number of descriptor |
| indexing features as defined in the <<features-requirements,Feature |
| Requirements>> section. |
| * The <<features-samplerFilterMinmax,samplerFilterMinmax>> 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 |
| <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,pname:filterMinmaxSingleComponentFormats>> |
| property minimum requirements. |
| * The |
| <<limits-framebufferIntegerColorSampleCounts,framebufferIntegerColorSampleCounts>> |
| 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 can't 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 <<extendingvulkan-compatibility-promotion,promoted>> 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 <<versions-1.1-promotions, |
| Vulkan 1.1 specification appendix>>. |
| |
| 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 <<extendingvulkan-compatibility-promotion,promoted>> 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 <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>> |
| 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 |
| <<features-samplerYcbcrConversion,pname:samplerYcbcrConversion>> 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 <<features-variablePointersStorageBuffer, |
| pname:variablePointersStorageBuffer>> 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 <<shaders-group-operations, group operations>> and |
| <<shaders-scope-subgroup, subgroup scope>>. |
| * The <<memory-protected-memory, protected memory>> 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 |
| |
| [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[] |
| -- |