1e5c31af7Sopenharmony_ci// Copyright 2021-2024 The Khronos Group Inc.
2e5c31af7Sopenharmony_ci//
3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ci:times: ×
6e5c31af7Sopenharmony_ci
7e5c31af7Sopenharmony_ci[[roadmap-2022]]
8e5c31af7Sopenharmony_ci== Roadmap 2022
9e5c31af7Sopenharmony_ci
10e5c31af7Sopenharmony_ciThe Roadmap 2022 milestone is intended to be supported by newer mid-to-high-end devices shipping in 2022 or shortly thereafter across mainstream smartphone, tablet, laptops, console and desktop devices.
11e5c31af7Sopenharmony_ci
12e5c31af7Sopenharmony_ci=== Required API Versions
13e5c31af7Sopenharmony_ci
14e5c31af7Sopenharmony_ciThis profile requires Vulkan 1.3.
15e5c31af7Sopenharmony_ci
16e5c31af7Sopenharmony_ci=== Required Features
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ciThe following core optional features are required to be supported:
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci  * Vulkan 1.0 Optional Features
21e5c31af7Sopenharmony_ci  ** <<features-fullDrawIndexUint32, pname:fullDrawIndexUint32>>
22e5c31af7Sopenharmony_ci  ** <<features-imageCubeArray, pname:imageCubeArray>>
23e5c31af7Sopenharmony_ci  ** <<features-independentBlend, pname:independentBlend>>
24e5c31af7Sopenharmony_ci  ** <<features-sampleRateShading, pname:sampleRateShading>>
25e5c31af7Sopenharmony_ci  ** <<features-drawIndirectFirstInstance, pname:drawIndirectFirstInstance>>
26e5c31af7Sopenharmony_ci  ** <<features-depthClamp, pname:depthClamp>>
27e5c31af7Sopenharmony_ci  ** <<features-depthBiasClamp, pname:depthBiasClamp>>
28e5c31af7Sopenharmony_ci  ** <<features-samplerAnisotropy, pname:samplerAnisotropy>>
29e5c31af7Sopenharmony_ci  ** <<features-occlusionQueryPrecise, pname:occlusionQueryPrecise>>
30e5c31af7Sopenharmony_ci  ** <<features-fragmentStoresAndAtomics, pname:fragmentStoresAndAtomics>>
31e5c31af7Sopenharmony_ci  ** <<features-shaderStorageImageExtendedFormats, pname:shaderStorageImageExtendedFormats>>
32e5c31af7Sopenharmony_ci  ** <<features-shaderUniformBufferArrayDynamicIndexing, pname:shaderUniformBufferArrayDynamicIndexing>>
33e5c31af7Sopenharmony_ci  ** <<features-shaderSampledImageArrayDynamicIndexing, pname:shaderSampledImageArrayDynamicIndexing>>
34e5c31af7Sopenharmony_ci  ** <<features-shaderStorageBufferArrayDynamicIndexing, pname:shaderStorageBufferArrayDynamicIndexing>>
35e5c31af7Sopenharmony_ci  ** <<features-shaderStorageImageArrayDynamicIndexing, pname:shaderStorageImageArrayDynamicIndexing>>
36e5c31af7Sopenharmony_ci  * Vulkan 1.1 Optional Features
37e5c31af7Sopenharmony_ci  ** <<features-samplerYcbcrConversion, pname:samplerYcbcrConversion>>
38e5c31af7Sopenharmony_ci  * Vulkan 1.2 Optional Features
39e5c31af7Sopenharmony_ci  ** <<features-samplerMirrorClampToEdge, pname:samplerMirrorClampToEdge>>
40e5c31af7Sopenharmony_ci  ** <<features-descriptorIndexing, pname:descriptorIndexing>>
41e5c31af7Sopenharmony_ci  ** <<features-shaderUniformTexelBufferArrayDynamicIndexing, pname:shaderUniformTexelBufferArrayDynamicIndexing>>
42e5c31af7Sopenharmony_ci  ** <<features-shaderStorageTexelBufferArrayDynamicIndexing, pname:shaderStorageTexelBufferArrayDynamicIndexing>>
43e5c31af7Sopenharmony_ci  ** <<features-shaderUniformBufferArrayNonUniformIndexing, pname:shaderUniformBufferArrayNonUniformIndexing>>
44e5c31af7Sopenharmony_ci  ** <<features-shaderSampledImageArrayNonUniformIndexing, pname:shaderSampledImageArrayNonUniformIndexing>>
45e5c31af7Sopenharmony_ci  ** <<features-shaderStorageBufferArrayNonUniformIndexing, pname:shaderStorageBufferArrayNonUniformIndexing>>
46e5c31af7Sopenharmony_ci  ** <<features-shaderStorageImageArrayNonUniformIndexing, pname:shaderStorageImageArrayNonUniformIndexing>>
47e5c31af7Sopenharmony_ci  ** <<features-shaderUniformTexelBufferArrayNonUniformIndexing, pname:shaderUniformTexelBufferArrayNonUniformIndexing>>
48e5c31af7Sopenharmony_ci  ** <<features-shaderStorageTexelBufferArrayNonUniformIndexing, pname:shaderStorageTexelBufferArrayNonUniformIndexing>>
49e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingSampledImageUpdateAfterBind, pname:descriptorBindingSampledImageUpdateAfterBind>>
50e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingStorageImageUpdateAfterBind, pname:descriptorBindingStorageImageUpdateAfterBind>>
51e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingStorageBufferUpdateAfterBind, pname:descriptorBindingStorageBufferUpdateAfterBind>>
52e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingUniformTexelBufferUpdateAfterBind, pname:descriptorBindingUniformTexelBufferUpdateAfterBind>>
53e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingStorageTexelBufferUpdateAfterBind, pname:descriptorBindingStorageTexelBufferUpdateAfterBind>>
54e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingUpdateUnusedWhilePending, pname:descriptorBindingUpdateUnusedWhilePending>>
55e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingPartiallyBound, pname:descriptorBindingPartiallyBound>>
56e5c31af7Sopenharmony_ci  ** <<features-descriptorBindingVariableDescriptorCount, pname:descriptorBindingVariableDescriptorCount>>
57e5c31af7Sopenharmony_ci  ** <<features-runtimeDescriptorArray, pname:runtimeDescriptorArray>>
58e5c31af7Sopenharmony_ci  ** <<features-scalarBlockLayout, pname:scalarBlockLayout>>
59e5c31af7Sopenharmony_ci
60e5c31af7Sopenharmony_ci=== Required Limits
61e5c31af7Sopenharmony_ci
62e5c31af7Sopenharmony_ciThe following core increased limits are required:
63e5c31af7Sopenharmony_ci
64e5c31af7Sopenharmony_ci.Vulkan 1.0 Limits
65e5c31af7Sopenharmony_ci[width="100%",cols="<35,<9,<14,<14,<11",options="header"]
66e5c31af7Sopenharmony_ci|====
67e5c31af7Sopenharmony_ci| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type^1^
68e5c31af7Sopenharmony_ci| pname:maxImageDimension1D                  | - | 4096    | 8192    | min
69e5c31af7Sopenharmony_ci| pname:maxImageDimension2D                  | - | 4096    | 8192    | min
70e5c31af7Sopenharmony_ci| pname:maxImageDimensionCube                | - | 4096    | 8192    | min
71e5c31af7Sopenharmony_ci| pname:maxImageArrayLayers                  | - | 256     | 2048    | min
72e5c31af7Sopenharmony_ci| pname:maxUniformBufferRange                | - | 16384   | 65536   | min
73e5c31af7Sopenharmony_ci| pname:bufferImageGranularity               | - | 131072  | 4096    | max
74e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorSamplers        | - | 16      | 64      | min
75e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorUniformBuffers  | - | 12      | 15      | min
76e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorStorageBuffers  | - | 4       | 30      | min
77e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorSampledImages   | - | 16      | 200     | min
78e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorStorageImages   | - | 4       | 16      | min
79e5c31af7Sopenharmony_ci| pname:maxPerStageResources                 | - | 128     | 200     | min
80e5c31af7Sopenharmony_ci| pname:maxDescriptorSetSamplers             | - | 96      | 576     | min, _n_ {times} PerStage
81e5c31af7Sopenharmony_ci| pname:maxDescriptorSetUniformBuffers       | - | 72      | 90      | min, _n_ {times} PerStage
82e5c31af7Sopenharmony_ci| pname:maxDescriptorSetStorageBuffers       | - | 24      | 96      | min, _n_ {times} PerStage
83e5c31af7Sopenharmony_ci| pname:maxDescriptorSetSampledImages        | - | 96      | 1800    | min, _n_ {times} PerStage
84e5c31af7Sopenharmony_ci| pname:maxDescriptorSetStorageImages        | - | 24      | 144     | min, _n_ {times} PerStage
85e5c31af7Sopenharmony_ci| pname:maxFragmentCombinedOutputResources   | - | 4       | 16      | min
86e5c31af7Sopenharmony_ci| pname:maxComputeWorkGroupInvocations       | - | 128     | 256     | min
87e5c31af7Sopenharmony_ci| pname:maxComputeWorkGroupSize              | - | (128,128,64) | (256,256,64) | min
88e5c31af7Sopenharmony_ci| pname:subTexelPrecisionBits                | - | 4       | 8       | min
89e5c31af7Sopenharmony_ci| pname:mipmapPrecisionBits                  | - | 4       | 6       | min
90e5c31af7Sopenharmony_ci| pname:maxSamplerLodBias                    | - | 2       | 14      | min
91e5c31af7Sopenharmony_ci| pname:pointSizeGranularity                 | 0.0 | 1.0   | 0.125   | max, fixed point increment
92e5c31af7Sopenharmony_ci| pname:lineWidthGranularity                 | 0.0 | 1.0   | 0.5     | max, fixed point increment
93e5c31af7Sopenharmony_ci| pname:standardSampleLocations              | - | -       | ename:VK_TRUE | implementation-dependent
94e5c31af7Sopenharmony_ci| pname:maxColorAttachments                  | - | 4       | 7       | min
95e5c31af7Sopenharmony_ci|====
96e5c31af7Sopenharmony_ci
97e5c31af7Sopenharmony_ci.Vulkan 1.1 Limits
98e5c31af7Sopenharmony_ci[width="100%",cols="<35,<9,<14,<14,<11",options="header"]
99e5c31af7Sopenharmony_ci|====
100e5c31af7Sopenharmony_ci| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type^1^
101e5c31af7Sopenharmony_ci| pname:subgroupSize                         | - | 1/4     | 4       | implementation-dependent
102e5c31af7Sopenharmony_ci| pname:subgroupSupportedStages              | - | ename:VK_SHADER_STAGE_COMPUTE_BIT
103e5c31af7Sopenharmony_ci                                                 | ename:VK_SHADER_STAGE_COMPUTE_BIT +
104e5c31af7Sopenharmony_ci                                                   ename:VK_SHADER_STAGE_FRAGMENT_BIT
105e5c31af7Sopenharmony_ci                                                 | implementation-dependent
106e5c31af7Sopenharmony_ci| pname:subgroupSupportedOperations          | - | ename:VK_SUBGROUP_FEATURE_BASIC_BIT
107e5c31af7Sopenharmony_ci                                                 | ename:VK_SUBGROUP_FEATURE_BASIC_BIT +
108e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_VOTE_BIT +
109e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_ARITHMETIC_BIT +
110e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_BALLOT_BIT +
111e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_SHUFFLE_BIT +
112e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT +
113e5c31af7Sopenharmony_ci                                                   ename:VK_SUBGROUP_FEATURE_QUAD_BIT
114e5c31af7Sopenharmony_ci                                                 | implementation-dependent
115e5c31af7Sopenharmony_ci|====
116e5c31af7Sopenharmony_ci
117e5c31af7Sopenharmony_ci.Vulkan 1.2 Limits
118e5c31af7Sopenharmony_ci[width="100%",cols="<35,<9,<14,<14,<11",options="header"]
119e5c31af7Sopenharmony_ci|====
120e5c31af7Sopenharmony_ci| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type^1^
121e5c31af7Sopenharmony_ci| pname:shaderSignedZeroInfNanPreserveFloat16 | - | -     | ename:VK_TRUE       | implementation-dependent
122e5c31af7Sopenharmony_ci| pname:shaderSignedZeroInfNanPreserveFloat32 | - | -     | ename:VK_TRUE       | implementation-dependent
123e5c31af7Sopenharmony_ci| pname:maxPerStageDescriptorUpdateAfterBindInputAttachments | 0 | 4     | 7    | min
124e5c31af7Sopenharmony_ci|====
125e5c31af7Sopenharmony_ci
126e5c31af7Sopenharmony_ci.Vulkan 1.3 Limits
127e5c31af7Sopenharmony_ci[width="100%",cols="<35,<9,<14,<14,<11",options="header"]
128e5c31af7Sopenharmony_ci|====
129e5c31af7Sopenharmony_ci| Limit Name | Unsupported Limit | Core Limit | Profile Limit | Limit Type^1^
130e5c31af7Sopenharmony_ci| pname:maxSubgroupSize | - | -     | 4       | min
131e5c31af7Sopenharmony_ci|====
132e5c31af7Sopenharmony_ci
133e5c31af7Sopenharmony_ci=== Required Extensions
134e5c31af7Sopenharmony_ci
135e5c31af7Sopenharmony_ciThe following extensions are required:
136e5c31af7Sopenharmony_ci
137e5c31af7Sopenharmony_ciapiext:VK_KHR_global_priority
138