• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015-2022 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_3[]
24[[versions-1.3]]
25== Version 1.3
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_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']
31--
32Vulkan Version 1.3 <<extendingvulkan-compatibility-promotion,promoted>> a
33number of key extensions into the core API:
34
35include::{generated}/meta/promoted_extensions_VK_VERSION_1_3.adoc[]
36
37All differences in behavior between these extensions and the corresponding
38Vulkan 1.3 functionality are summarized in the <<versions-1.3-promotions,
39Vulkan 1.3 specification appendix>>.
40
41include::{generated}/interfaces/VK_VERSION_1_3.adoc[]
42--
43endif::isrefpage[]
44
45// This is the spec-specific form of the section
46[[versions-1.3-promotions]]
47Vulkan Version 1.3 <<extendingvulkan-compatibility-promotion,promoted>> a
48number of key extensions into the core API:
49
50include::{generated}/meta/promoted_extensions_VK_VERSION_1_3.adoc[]
51
52All differences in behavior between these extensions and the corresponding
53Vulkan 1.3 functionality are summarized below.
54
55=== Differences relative to `VK_EXT_4444_formats`
56
57If the `apiext:VK_EXT_4444_formats` extension is not supported, support for
58all formats defined by it are optional in Vulkan 1.3.
59There are no members in the slink:VkPhysicalDeviceVulkan13Features structure
60corresponding to the slink:VkPhysicalDevice4444FormatsFeaturesEXT structure.
61
62=== Differences relative to `VK_EXT_extended_dynamic_state`
63
64All dynamic state enumerants and entry points defined by
65`apiext:VK_EXT_extended_dynamic_state` are required in Vulkan 1.3.
66There are no members in the slink:VkPhysicalDeviceVulkan13Features structure
67corresponding to the slink:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT
68structure.
69
70=== Differences relative to `VK_EXT_extended_dynamic_state2`
71
72The optional dynamic state enumerants and entry points defined by
73`apiext:VK_EXT_extended_dynamic_state2` for patch control points and logic
74op are not promoted in Vulkan 1.3.
75There are no members in the slink:VkPhysicalDeviceVulkan13Features structure
76corresponding to the slink:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT
77structure.
78
79=== Differences relative to `VK_EXT_texel_buffer_alignment`
80
81The more specific alignment requirements defined by
82slink:VkPhysicalDeviceTexelBufferAlignmentProperties are required in Vulkan
831.3.
84There are no members in the slink:VkPhysicalDeviceVulkan13Features structure
85corresponding to the slink:VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT
86structure.
87
88=== Differences relative to `VK_EXT_texture_compression_astc_hdr`
89
90If the `apiext:VK_EXT_texture_compression_astc_hdr` extension is not
91supported, support for all formats defined by it are optional in Vulkan 1.3.
92The <<features-textureCompressionASTC_HDR,
93pname:textureCompressionASTC_HDR>> member of
94slink:VkPhysicalDeviceVulkan13Features indicates whether a Vulkan 1.3
95implementation supports these formats.
96
97=== Differences relative to `VK_EXT_ycbcr_2plane_444_formats`
98
99If the `apiext:VK_EXT_ycbcr_2plane_444_formats` extension is not supported,
100support for all formats defined by it are optional in Vulkan 1.3.
101There are no members in the slink:VkPhysicalDeviceVulkan13Features structure
102corresponding to the slink:VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
103structure.
104
105=== Additional Vulkan 1.3 Feature Support
106
107[[versions-1.3-new-features]]
108In addition to the promoted extensions described above, Vulkan 1.3 added
109required support for:
110
111  * SPIR-V version 1.6
112  ** SPIR-V 1.6 deprecates (but does not remove) the code:WorkgroupSize
113     decoration.
114  * The <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> feature
115    which indicates support for accessing memory in shaders as storage
116    buffers via flink:vkGetBufferDeviceAddress.
117  * The <<features-vulkanMemoryModel, pname:vulkanMemoryModel>> and
118    <<features-vulkanMemoryModelDeviceScope,
119    pname:vulkanMemoryModelDeviceScope>> features, which indicate support
120    for the corresponding Vulkan Memory Model capabilities.
121  * The <<limits-maxInlineUniformTotalSize,
122    pname:maxInlineUniformTotalSize>> limit is added to provide the total
123    size of all inline uniform block bindings in a pipeline layout.
124
125include::{generated}/interfaces/VK_VERSION_1_3.adoc[]
126
127endif::VK_VERSION_1_3[]
128
129
130ifdef::VK_VERSION_1_2[]
131[[versions-1.2]]
132== Version 1.2
133
134// Unfortunately we cannot include titles in an open refpage block, so this
135// is a refpage-specific alternate form of the section.
136ifdef::isrefpage[]
137[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']
138--
139Vulkan Version 1.2 <<extendingvulkan-compatibility-promotion,promoted>> a
140number of key extensions into the core API:
141
142include::{generated}/meta/promoted_extensions_VK_VERSION_1_2.adoc[]
143
144All differences in behavior between these extensions and the corresponding
145Vulkan 1.2 functionality are summarized in the <<versions-1.2-promotions,
146Vulkan 1.2 specification appendix>>.
147
148include::{generated}/interfaces/VK_VERSION_1_2.adoc[]
149--
150endif::isrefpage[]
151
152// This is the spec-specific form of the section
153[[versions-1.2-promotions]]
154Vulkan Version 1.2 <<extendingvulkan-compatibility-promotion,promoted>> a
155number of key extensions into the core API:
156
157include::{generated}/meta/promoted_extensions_VK_VERSION_1_2.adoc[]
158
159All differences in behavior between these extensions and the corresponding
160Vulkan 1.2 functionality are summarized below.
161
162=== Differences relative to `VK_KHR_8bit_storage`
163
164If the `apiext:VK_KHR_8bit_storage` extension is not supported, support for
165the SPIR-V <<features-storageBuffer8BitAccess,
166pname:storageBuffer8BitAccess>> capability in shader modules is optional.
167Support for this feature is defined by
168slink:VkPhysicalDeviceVulkan12Features::pname:storageBuffer8BitAccess when
169queried via flink:vkGetPhysicalDeviceFeatures2.
170
171=== Differences relative to `VK_KHR_draw_indirect_count`
172
173If the `apiext:VK_KHR_draw_indirect_count` extension is not supported,
174support for the entry points flink:vkCmdDrawIndirectCount and
175flink:vkCmdDrawIndexedIndirectCount is optional.
176Support for this feature is defined by
177slink:VkPhysicalDeviceVulkan12Features::pname:drawIndirectCount when queried
178via flink:vkGetPhysicalDeviceFeatures2.
179
180=== Differences relative to `VK_KHR_sampler_mirror_clamp_to_edge`
181
182If the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is not
183supported, support for the elink:VkSamplerAddressMode
184ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE is optional.
185Support for this feature is defined by
186slink:VkPhysicalDeviceVulkan12Features::pname:samplerMirrorClampToEdge when
187queried via flink:vkGetPhysicalDeviceFeatures2.
188
189=== Differences relative to `VK_EXT_descriptor_indexing`
190
191If the `apiext:VK_EXT_descriptor_indexing` extension is not supported,
192support for the <<features-descriptorIndexing, pname:descriptorIndexing>>
193feature is optional.
194Support for this feature is defined by
195slink:VkPhysicalDeviceVulkan12Features::pname:descriptorIndexing when
196queried via flink:vkGetPhysicalDeviceFeatures2.
197
198=== Differences relative to `VK_EXT_scalar_block_layout`
199
200If the `apiext:VK_EXT_scalar_block_layout` extension is not supported,
201support for the <<features-scalarBlockLayout, pname:scalarBlockLayout>>
202feature is optional.
203Support for this feature is defined by
204slink:VkPhysicalDeviceVulkan12Features::pname:scalarBlockLayout when queried
205via flink:vkGetPhysicalDeviceFeatures2.
206
207=== Differences relative to `VK_EXT_shader_viewport_index_layer`
208
209The code:ShaderViewportIndexLayerEXT SPIR-V capability was replaced with the
210code:ShaderViewportIndex and code:ShaderLayer capabilities.
211Declaring both is equivalent to declaring code:ShaderViewportIndexLayerEXT.
212If the `apiext:VK_EXT_shader_viewport_index_layer` extension is not
213supported, support for the code:ShaderViewportIndexLayerEXT SPIR-V
214capability is optional.
215Support for this feature is defined by
216slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputViewportIndex and
217slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputLayer when queried
218via flink:vkGetPhysicalDeviceFeatures2.
219
220=== Differences relative to `VK_KHR_buffer_device_address`
221
222If the `apiext:VK_KHR_buffer_device_address` extension is not supported,
223support for the <<features-bufferDeviceAddress, pname:bufferDeviceAddress>>
224feature is optional.
225Support for this feature is defined by
226slink:VkPhysicalDeviceVulkan12Features::pname:bufferDeviceAddress when
227queried via flink:vkGetPhysicalDeviceFeatures2.
228
229=== Differences relative to `VK_KHR_shader_atomic_int64`
230
231If the `apiext:VK_KHR_shader_atomic_int64` extension is not supported,
232support for the <<features-shaderBufferInt64Atomics,
233pname:shaderBufferInt64Atomics>> feature is optional.
234Support for this feature is defined by
235slink:VkPhysicalDeviceVulkan12Features::pname:shaderBufferInt64Atomics when
236queried via flink:vkGetPhysicalDeviceFeatures2.
237
238=== Differences relative to `VK_KHR_shader_float16_int8`
239
240If the `apiext:VK_KHR_shader_float16_int8` extension is not supported,
241support for the <<features-shaderFloat16, pname:shaderFloat16>> and
242<<features-shaderInt8, pname:shaderInt8>> features is optional.
243Support for these features are defined by
244slink:VkPhysicalDeviceVulkan12Features::pname:shaderFloat16 and
245slink:VkPhysicalDeviceVulkan12Features::pname:shaderInt8 when queried via
246flink:vkGetPhysicalDeviceFeatures2.
247
248=== Differences relative to `VK_KHR_vulkan_memory_model`
249
250If the `apiext:VK_KHR_vulkan_memory_model` extension is not supported,
251support for the <<features-vulkanMemoryModel, pname:vulkanMemoryModel>>
252feature is optional.
253Support for this feature is defined by
254slink:VkPhysicalDeviceVulkan12Features::pname:vulkanMemoryModel when queried
255via flink:vkGetPhysicalDeviceFeatures2.
256
257=== Additional Vulkan 1.2 Feature Support
258
259[[versions-1.2-new-features]]
260In addition to the promoted extensions described above, Vulkan 1.2 added
261support for:
262
263  * SPIR-V version 1.4.
264  * SPIR-V version 1.5.
265  * The <<features-samplerMirrorClampToEdge,
266    pname:samplerMirrorClampToEdge>> feature which indicates whether the
267    implementation supports the
268    ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.
269  * The <<spirvenv-capabilities-table-ShaderNonUniform,
270    code:ShaderNonUniform>> capability in SPIR-V version 1.5.
271  * The <<features-shaderOutputViewportIndex,
272    pname:shaderOutputViewportIndex>> feature which indicates that the
273    <<spirvenv-capabilities-table-ShaderViewportIndex,
274    code:ShaderViewportIndex>> capability can be used.
275  * The <<features-shaderOutputLayer, pname:shaderOutputLayer>> feature
276    which indicates that the <<spirvenv-capabilities-table-ShaderLayer,
277    code:ShaderLayer>> capability can be used.
278  * The <<features-subgroupBroadcastDynamicId,
279    pname:subgroupBroadcastDynamicId>> feature which allows the "`Id`"
280    operand of code:OpGroupNonUniformBroadcast to be dynamically uniform
281    within a subgroup, and the "`Index`" operand of
282    code:OpGroupNonUniformQuadBroadcast to be dynamically uniform within a
283    derivative group, in shader modules of version 1.5 or higher.
284  * The <<features-drawIndirectCount, pname:drawIndirectCount>> feature
285    which indicates whether the flink:vkCmdDrawIndirectCount and
286    flink:vkCmdDrawIndexedIndirectCount functions can be used.
287  * The <<features-descriptorIndexing, pname:descriptorIndexing>> feature
288    which indicates the implementation supports the minimum number of
289    descriptor indexing features as defined in the <<features-requirements,
290    Feature Requirements>> section.
291  * The <<features-samplerFilterMinmax, pname:samplerFilterMinmax>> feature
292    which indicates whether the implementation supports the minimum number
293    of image formats that support the
294    ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT feature bit as
295    defined by the
296    <<limits-filterMinmaxSingleComponentFormats-minimum-requirements,
297    pname:filterMinmaxSingleComponentFormats>> property minimum
298    requirements.
299  * The <<limits-framebufferIntegerColorSampleCounts,
300    pname:framebufferIntegerColorSampleCounts>> limit which indicates the
301    color sample counts that are supported for all framebuffer color
302    attachments with integer formats.
303
304include::{generated}/interfaces/VK_VERSION_1_2.adoc[]
305
306endif::VK_VERSION_1_2[]
307
308
309ifdef::VK_VERSION_1_1[]
310[[versions-1.1]]
311== Version 1.1
312
313// Unfortunately we cannot include titles in an open refpage block, so this
314// is a refpage-specific alternate form of the section.
315ifdef::isrefpage[]
316[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']
317--
318Vulkan Version 1.1 <<extendingvulkan-compatibility-promotion,promoted>> a
319number of key extensions into the core API:
320
321include::{generated}/meta/promoted_extensions_VK_VERSION_1_1.adoc[]
322
323All differences in behavior between these extensions and the corresponding
324Vulkan 1.1 functionality are summarized in the <<versions-1.1-promotions,
325Vulkan 1.1 specification appendix>>.
326
327include::{generated}/interfaces/VK_VERSION_1_1.adoc[]
328--
329endif::isrefpage[]
330
331// This is the spec-specific form of the section
332[[versions-1.1-promotions]]
333Vulkan Version 1.1 <<extendingvulkan-compatibility-promotion,promoted>> a
334number of key extensions into the core API:
335
336include::{generated}/meta/promoted_extensions_VK_VERSION_1_1.adoc[]
337
338All differences in behavior between these extensions and the corresponding
339Vulkan 1.1 functionality are summarized below.
340
341=== Differences relative to `VK_KHR_16bit_storage`
342
343If the `apiext:VK_KHR_16bit_storage` extension is not supported, support for
344the <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>>
345feature is optional.
346Support for this feature is defined by
347slink:VkPhysicalDevice16BitStorageFeatures::pname:storageBuffer16BitAccess
348ifdef::VK_VERSION_1_2[]
349or slink:VkPhysicalDeviceVulkan11Features::pname:storageBuffer16BitAccess
350endif::VK_VERSION_1_2[]
351when queried via flink:vkGetPhysicalDeviceFeatures2.
352
353=== Differences relative to `VK_KHR_sampler_ycbcr_conversion`
354
355If the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is not supported,
356support for the <<features-samplerYcbcrConversion,
357pname:samplerYcbcrConversion>> feature is optional.
358Support for this feature is defined by
359slink:VkPhysicalDeviceSamplerYcbcrConversionFeatures::pname:samplerYcbcrConversion
360ifdef::VK_VERSION_1_2[]
361or slink:VkPhysicalDeviceVulkan11Features::pname:samplerYcbcrConversion
362endif::VK_VERSION_1_2[]
363when queried via flink:vkGetPhysicalDeviceFeatures2.
364
365=== Differences relative to `VK_KHR_shader_draw_parameters`
366
367If the `apiext:VK_KHR_shader_draw_parameters` extension is not supported,
368support for the
369{spirv}/KHR/SPV_KHR_shader_draw_parameters.html[`SPV_KHR_shader_draw_parameters`]
370SPIR-V extension is optional.
371Support for this feature is defined by
372slink:VkPhysicalDeviceShaderDrawParametersFeatures::pname:shaderDrawParameters
373ifdef::VK_VERSION_1_2[]
374or slink:VkPhysicalDeviceVulkan11Features::pname:shaderDrawParameters
375endif::VK_VERSION_1_2[]
376when queried via flink:vkGetPhysicalDeviceFeatures2.
377
378=== Differences relative to `VK_KHR_variable_pointers`
379
380If the `apiext:VK_KHR_variable_pointers` extension is not supported, support
381for the <<features-variablePointersStorageBuffer,
382pname:variablePointersStorageBuffer>> feature is optional.
383Support for this feature is defined by
384slink:VkPhysicalDeviceVariablePointersFeatures::pname:variablePointersStorageBuffer
385ifdef::VK_VERSION_1_2[]
386or
387slink:VkPhysicalDeviceVulkan11Features::pname:variablePointersStorageBuffer
388endif::VK_VERSION_1_2[]
389when queried via flink:vkGetPhysicalDeviceFeatures2.
390
391=== Additional Vulkan 1.1 Feature Support
392
393[[versions-1.1-new-features]]
394In addition to the promoted extensions described above, Vulkan 1.1 added
395support for:
396
397  * The <<shaders-group-operations, group operations>> and
398    <<shaders-scope-subgroup, subgroup scope>>.
399  * The <<memory-protected-memory, protected memory>> feature.
400  * A new command to enumerate the instance version:
401    flink:vkEnumerateInstanceVersion.
402  * The slink:VkPhysicalDeviceShaderDrawParametersFeatures feature query
403    struct (where the `apiext:VK_KHR_shader_draw_parameters` extension did
404    not have one).
405
406include::{generated}/interfaces/VK_VERSION_1_1.adoc[]
407
408endif::VK_VERSION_1_1[]
409
410
411[[versions-1.0]]
412== Version 1.0
413
414// Unfortunately we cannot include titles in an open refpage block, so this
415// is a refpage-specific alternate form of the section.
416ifdef::isrefpage[]
417[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']
418--
419Vulkan Version 1.0 was the initial release of the Vulkan API.
420
421include::{generated}/interfaces/VK_VERSION_1_0.adoc[]
422--
423endif::isrefpage[]
424
425// This is the spec-specific form of the section
426Vulkan Version 1.0 was the initial release of the Vulkan API.
427
428include::{generated}/interfaces/VK_VERSION_1_0.adoc[]
429