blob: 14ffc87c80e0930b1e07739919ab5eed9c03c0fc [file] [log] [blame]
// 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[]
--