• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2021 The Khronos Group, Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5[appendix]
6
7[[versions]]
8= Core Revisions (Informative)
9
10New minor versions of the Vulkan API are defined periodically by the Khronos
11Vulkan Working Group.
12These consist of some amount of additional functionality added to the core
13API, potentially including both new functionality and functionality
14<<extendingvulkan-compatibility-promotion,promoted>> from extensions.
15
16ifdef::VK_VERSION_1_1[]
17It is possible to build the specification for earlier versions, but to aid
18readability of the latest versions, this appendix gives an overview of the
19changes as compared to earlier versions.
20endif::VK_VERSION_1_1[]
21
22
23ifdef::VK_VERSION_1_2[]
24[[versions-1.2]]
25== Version 1.2
26
27// Unfortunately we cannot include titles in an open refpage block, so this
28// is a refpage-specific alternate form of the section.
29ifdef::isrefpage[]
30[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']
31--
32Vulkan Version 1.2 <<extendingvulkan-compatibility-promotion,promoted>> a
33number of key extensions into the core API:
34
35include::{generated}/meta/promoted_extensions_VK_VERSION_1_2.txt[]
36
37All differences in behavior between these extensions and the corresponding
38Vulkan 1.2 functionality are summarized in the <<versions-1.2-promotions,
39Vulkan 1.2 specification appendix>>.
40
41include::{generated}/interfaces/VK_VERSION_1_2.txt[]
42--
43endif::isrefpage[]
44
45// This is the spec-specific form of the section
46[[versions-1.2-promotions]]
47Vulkan Version 1.2 <<extendingvulkan-compatibility-promotion,promoted>> a
48number of key extensions into the core API:
49
50include::{generated}/meta/promoted_extensions_VK_VERSION_1_2.txt[]
51
52All differences in behavior between these extensions and the corresponding
53Vulkan 1.2 functionality are summarized below.
54
55=== Differences relative to `VK_KHR_8bit_storage`
56
57If the `apiext:VK_KHR_8bit_storage` extension is not supported, support for
58the SPIR-V <<features-storageBuffer8BitAccess,
59code:StorageBuffer8BitAccess>> capability in shader modules is optional.
60Support for this feature is defined by
61slink:VkPhysicalDeviceVulkan12Features::pname:storageBuffer8BitAccess when
62queried via flink:vkGetPhysicalDeviceFeatures2.
63
64=== Differences relative to `VK_KHR_draw_indirect_count`
65
66If the `apiext:VK_KHR_draw_indirect_count` extension is not supported,
67support for the entry points flink:vkCmdDrawIndirectCount and
68flink:vkCmdDrawIndexedIndirectCount is optional.
69Support for this feature is defined by
70slink:VkPhysicalDeviceVulkan12Features::pname:drawIndirectCount when queried
71via flink:vkGetPhysicalDeviceFeatures2.
72
73=== Differences relative to `VK_KHR_sampler_mirror_clamp_to_edge`
74
75If the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is not
76supported, support for the elink:VkSamplerAddressMode
77ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE is optional.
78Support for this feature is defined by
79slink:VkPhysicalDeviceVulkan12Features::pname:samplerMirrorClampToEdge when
80queried via flink:vkGetPhysicalDeviceFeatures2.
81
82=== Differences relative to `VK_EXT_descriptor_indexing`
83
84If the `apiext:VK_EXT_descriptor_indexing` extension is not supported,
85support for the <<features-descriptorIndexing,descriptorIndexing>> feature
86is optional.
87Support for this feature is defined by
88slink:VkPhysicalDeviceVulkan12Features::pname:descriptorIndexing when
89queried via flink:vkGetPhysicalDeviceFeatures2.
90
91=== Differences relative to `VK_EXT_scalar_block_layout`
92
93If the `apiext:VK_EXT_scalar_block_layout` extension is not supported,
94support for the <<features-scalarBlockLayout,scalarBlockLayout>> feature is
95optional.
96Support for this feature is defined by
97slink:VkPhysicalDeviceVulkan12Features::pname:scalarBlockLayout when queried
98via flink:vkGetPhysicalDeviceFeatures2.
99
100=== Differences relative to `VK_EXT_shader_viewport_index_layer`
101
102If the `apiext:VK_EXT_shader_viewport_index_layer` extension is not
103supported, support for the code:ShaderViewportIndexLayerEXT SPIR-V
104capability is optional.
105Support for this feature is defined by
106slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputViewportIndex and
107slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputLayer when queried
108via flink:vkGetPhysicalDeviceFeatures2.
109
110=== Differences relative to `VK_KHR_buffer_device_address`
111
112If the `apiext:VK_KHR_buffer_device_address` extension is not supported,
113support for the <<features-bufferDeviceAddress,bufferDeviceAddress>> feature
114is optional.
115Support for this feature is defined by
116slink:VkPhysicalDeviceVulkan12Features::pname:bufferDeviceAddress when
117queried via flink:vkGetPhysicalDeviceFeatures2.
118
119=== Differences relative to `VK_KHR_shader_atomic_int64`
120
121If the `apiext:VK_KHR_shader_atomic_int64` extension is not supported,
122support for the
123<<features-shaderBufferInt64Atomics,shaderBufferInt64Atomics>> feature is
124optional.
125Support for this feature is defined by
126slink:VkPhysicalDeviceVulkan12Features::pname:shaderBufferInt64Atomics when
127queried via flink:vkGetPhysicalDeviceFeatures2.
128
129=== Differences relative to `VK_KHR_shader_float16_int8`
130
131If the `apiext:VK_KHR_shader_float16_int8` extension is not supported,
132support for the <<features-shaderFloat16, pname:shaderFloat16>> and
133<<features-shaderInt8, pname:shaderInt8>> features is optional.
134Support for these features are defined by
135slink:VkPhysicalDeviceVulkan12Features::pname:shaderFloat16 and
136slink:VkPhysicalDeviceVulkan12Features::pname:shaderInt8 when queried via
137flink:vkGetPhysicalDeviceFeatures2.
138
139=== Differences relative to `VK_KHR_vulkan_memory_model`
140
141If the `apiext:VK_KHR_vulkan_memory_model` extension is not supported,
142support for the <<features-vulkanMemoryModel,vulkanMemoryModel>> feature is
143optional.
144Support for this feature is defined by
145slink:VkPhysicalDeviceVulkan12Features::pname:vulkanMemoryModel when queried
146via flink:vkGetPhysicalDeviceFeatures2.
147
148=== Additional Vulkan 1.2 Feature Support
149
150[[versions-1.2-new-features]]
151In addition to the promoted extensions described above, Vulkan 1.2 added
152support for:
153
154  * SPIR-V version 1.4.
155  * SPIR-V version 1.5.
156  * The <<features-samplerMirrorClampToEdge,samplerMirrorClampToEdge>>
157    feature which indicates whether the implementation supports the
158    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.
159  * The
160    <<spirvenv-capabilities-table-ShaderNonUniform,code:ShaderNonUniform>>
161    capability in SPIR-V version 1.5.
162  * The <<features-shaderOutputViewportIndex,shaderOutputViewportIndex>>
163    feature which indicates that the
164    <<spirvenv-capabilities-table-ShaderViewportIndex,code:ShaderViewportIndex>>
165    capability can be used.
166  * The <<features-shaderOutputLayer,shaderOutputLayer>> feature which
167    indicates that the
168    <<spirvenv-capabilities-table-ShaderLayer,code:ShaderLayer>> capability
169    can be used.
170  * The <<features-subgroupBroadcastDynamicId,subgroupBroadcastDynamicId>>
171    feature which allows the "`Id`" operand of
172    code:OpGroupNonUniformBroadcast to be dynamically uniform within a
173    subgroup, and the "`Index`" operand of
174    code:OpGroupNonUniformQuadBroadcast to be dynamically uniform within a
175    derivative group, in shader modules of version 1.5 or higher.
176  * The <<features-drawIndirectCount,drawIndirectCount>> feature which
177    indicates whether the flink:vkCmdDrawIndirectCount and
178    flink:vkCmdDrawIndexedIndirectCount functions can be used.
179  * The <<features-descriptorIndexing,descriptorIndexing>> feature which
180    indicates the implementation supports the minimum number of descriptor
181    indexing features as defined in the <<features-requirements,Feature
182    Requirements>> section.
183  * The <<features-samplerFilterMinmax,samplerFilterMinmax>> feature which
184    indicates whether the implementation supports the minimum number of
185    image formats that support the
186    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature bit as
187    defined by the
188    <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,pname:filterMinmaxSingleComponentFormats>>
189    property minimum requirements.
190  * The
191    <<limits-framebufferIntegerColorSampleCounts,framebufferIntegerColorSampleCounts>>
192    limit which indicates the color sample counts that are supported for all
193    framebuffer color attachments with integer formats.
194
195include::{generated}/interfaces/VK_VERSION_1_2.txt[]
196
197endif::VK_VERSION_1_2[]
198
199
200ifdef::VK_VERSION_1_1[]
201[[versions-1.1]]
202== Version 1.1
203
204// Unfortunately we cannot include titles in an open refpage block, so this
205// is a refpage-specific alternate form of the section.
206ifdef::isrefpage[]
207[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']
208--
209Vulkan Version 1.1 <<extendingvulkan-compatibility-promotion,promoted>> a
210number of key extensions into the core API:
211
212include::{generated}/meta/promoted_extensions_VK_VERSION_1_1.txt[]
213
214All differences in behavior between these extensions and the corresponding
215Vulkan 1.1 functionality are summarized in the <<versions-1.1-promotions,
216Vulkan 1.1 specification appendix>>.
217
218include::{generated}/interfaces/VK_VERSION_1_1.txt[]
219--
220endif::isrefpage[]
221
222// This is the spec-specific form of the section
223[[versions-1.1-promotions]]
224Vulkan Version 1.1 <<extendingvulkan-compatibility-promotion,promoted>> a
225number of key extensions into the core API:
226
227include::{generated}/meta/promoted_extensions_VK_VERSION_1_1.txt[]
228
229All differences in behavior between these extensions and the corresponding
230Vulkan 1.1 functionality are summarized below.
231
232=== Differences relative to `VK_KHR_16bit_storage`
233
234If the `apiext:VK_KHR_16bit_storage` extension is not supported, support for
235the <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>
236feature is optional.
237Support for this feature is defined by
238slink:VkPhysicalDevice16BitStorageFeatures::pname:storageBuffer16BitAccess
239ifdef::VK_VERSION_1_2[]
240or slink:VkPhysicalDeviceVulkan11Features::pname:storageBuffer16BitAccess
241endif::VK_VERSION_1_2[]
242when queried via flink:vkGetPhysicalDeviceFeatures2.
243
244=== Differences relative to `VK_KHR_sampler_ycbcr_conversion`
245
246If the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is not supported,
247support for the
248<<features-samplerYcbcrConversion,pname:samplerYcbcrConversion>> feature is
249optional.
250Support for this feature is defined by
251slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures::pname:samplerYcbcrConversion
252ifdef::VK_VERSION_1_2[]
253or slink:VkPhysicalDeviceVulkan11Features::pname:samplerYcbcrConversion
254endif::VK_VERSION_1_2[]
255when queried via flink:vkGetPhysicalDeviceFeatures2.
256
257=== Differences relative to `VK_KHR_shader_draw_parameters`
258
259If the `apiext:VK_KHR_shader_draw_parameters` extension is not supported,
260support for the
261{spirv}/KHR/SPV_KHR_shader_draw_parameters.html[`SPV_KHR_shader_draw_parameters`]
262SPIR-V extension is optional.
263Support for this feature is defined by
264slink:VkPhysicalDeviceShaderDrawParametersFeatures::pname:shaderDrawParameters
265ifdef::VK_VERSION_1_2[]
266or slink:VkPhysicalDeviceVulkan11Features::pname:shaderDrawParameters
267endif::VK_VERSION_1_2[]
268when queried via flink:vkGetPhysicalDeviceFeatures2.
269
270=== Differences relative to `VK_KHR_variable_pointers`
271
272If the `apiext:VK_KHR_variable_pointers` extension is not supported, support
273for the <<features-variablePointersStorageBuffer,
274pname:variablePointersStorageBuffer>> feature is optional.
275Support for this feature is defined by
276slink:VkPhysicalDeviceVariablePointersFeatures::pname:variablePointersStorageBuffer
277ifdef::VK_VERSION_1_2[]
278or
279slink:VkPhysicalDeviceVulkan11Features::pname:variablePointersStorageBuffer
280endif::VK_VERSION_1_2[]
281when queried via flink:vkGetPhysicalDeviceFeatures2.
282
283=== Additional Vulkan 1.1 Feature Support
284
285[[versions-1.1-new-features]]
286In addition to the promoted extensions described above, Vulkan 1.1 added
287support for:
288
289  * The <<shaders-group-operations, group operations>> and
290    <<shaders-scope-subgroup, subgroup scope>>.
291  * The <<memory-protected-memory, protected memory>> feature.
292  * A new command to enumerate the instance version:
293    flink:vkEnumerateInstanceVersion.
294  * The slink:VkPhysicalDeviceShaderDrawParametersFeatures feature query
295    struct (where the `apiext:VK_KHR_shader_draw_parameters` extension did
296    not have one).
297
298include::{generated}/interfaces/VK_VERSION_1_1.txt[]
299
300endif::VK_VERSION_1_1[]
301
302
303[[versions-1.0]]
304== Version 1.0
305
306// Unfortunately we cannot include titles in an open refpage block, so this
307// is a refpage-specific alternate form of the section.
308ifdef::isrefpage[]
309[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']
310--
311Vulkan Version 1.0 was the initial release of the Vulkan API.
312
313include::{generated}/interfaces/VK_VERSION_1_0.txt[]
314--
315endif::isrefpage[]
316
317// This is the spec-specific form of the section
318Vulkan Version 1.0 was the initial release of the Vulkan API.
319
320include::{generated}/interfaces/VK_VERSION_1_0.txt[]
321