xref: /aosp_15_r20/external/angle/third_party/vulkan-headers/src/registry/profiles/VP_KHR_roadmap.json (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1{
2    "$schema": "https://schema.khronos.org/vulkan/profiles-0.8.2-276.json#",
3    "capabilities": {
4        "vulkan10requirements": {
5            "features": {
6                "VkPhysicalDeviceFeatures": {
7                    "robustBufferAccess": true
8                }
9            }
10        },
11        "vulkan11requirements": {
12            "features": {
13                "VkPhysicalDeviceVulkan11Features": {
14                    "multiview": true
15                }
16            },
17            "properties": {
18                "VkPhysicalDeviceVulkan11Properties": {
19                    "maxMultiviewViewCount": 6,
20                    "maxMultiviewInstanceIndex": 134217727
21                }
22            }
23        },
24        "vulkan12requirements": {
25            "features": {
26                "VkPhysicalDeviceVulkan12Features": {
27                    "uniformBufferStandardLayout": true,
28                    "subgroupBroadcastDynamicId": true,
29                    "imagelessFramebuffer": true,
30                    "separateDepthStencilLayouts": true,
31                    "hostQueryReset": true,
32                    "timelineSemaphore": true,
33                    "shaderSubgroupExtendedTypes": true
34                }
35            },
36            "properties": {
37                "VkPhysicalDeviceVulkan12Properties": {
38                    "maxTimelineSemaphoreValueDifference": 2147483647
39                }
40            }
41        },
42        "vulkan13requirements": {
43            "features": {
44                "VkPhysicalDeviceVulkan12Features": {
45                    "vulkanMemoryModel": true,
46                    "vulkanMemoryModelDeviceScope": true,
47                    "bufferDeviceAddress": true
48                },
49                "VkPhysicalDeviceVulkan13Features": {
50                    "robustImageAccess": true,
51                    "shaderTerminateInvocation": true,
52                    "shaderZeroInitializeWorkgroupMemory": true,
53                    "synchronization2": true,
54                    "shaderIntegerDotProduct": true,
55                    "maintenance4": true,
56                    "pipelineCreationCacheControl": true,
57                    "subgroupSizeControl": true,
58                    "computeFullSubgroups": true,
59                    "shaderDemoteToHelperInvocation": true,
60                    "inlineUniformBlock": true,
61                    "dynamicRendering": true
62                }
63            },
64            "properties": {
65                "VkPhysicalDeviceVulkan13Properties": {
66                    "maxBufferSize": 1073741824,
67                    "maxInlineUniformBlockSize": 256,
68                    "maxPerStageDescriptorInlineUniformBlocks": 4,
69                    "maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks": 4,
70                    "maxDescriptorSetInlineUniformBlocks": 4,
71                    "maxDescriptorSetUpdateAfterBindInlineUniformBlocks": 4,
72                    "maxInlineUniformTotalSize": 256
73                }
74            }
75        },
76        "vulkan10requirements_roadmap2022": {
77            "features": {
78                "VkPhysicalDeviceFeatures": {
79                    "fullDrawIndexUint32": true,
80                    "imageCubeArray": true,
81                    "independentBlend": true,
82                    "sampleRateShading": true,
83                    "drawIndirectFirstInstance": true,
84                    "depthClamp": true,
85                    "depthBiasClamp": true,
86                    "samplerAnisotropy": true,
87                    "occlusionQueryPrecise": true,
88                    "fragmentStoresAndAtomics": true,
89                    "shaderStorageImageExtendedFormats": true,
90                    "shaderUniformBufferArrayDynamicIndexing": true,
91                    "shaderSampledImageArrayDynamicIndexing": true,
92                    "shaderStorageBufferArrayDynamicIndexing": true,
93                    "shaderStorageImageArrayDynamicIndexing": true
94                }
95            },
96            "properties": {
97                "VkPhysicalDeviceProperties": {
98                    "limits": {
99                        "maxImageDimension1D": 8192,
100                        "maxImageDimension2D": 8192,
101                        "maxImageDimensionCube": 8192,
102                        "maxImageArrayLayers": 2048,
103                        "maxUniformBufferRange": 65536,
104                        "bufferImageGranularity": 4096,
105                        "maxPerStageDescriptorSamplers": 64,
106                        "maxPerStageDescriptorUniformBuffers": 15,
107                        "maxPerStageDescriptorStorageBuffers": 30,
108                        "maxPerStageDescriptorSampledImages": 200,
109                        "maxPerStageDescriptorStorageImages": 16,
110                        "maxPerStageResources": 200,
111                        "maxDescriptorSetSamplers": 576,
112                        "maxDescriptorSetUniformBuffers": 90,
113                        "maxDescriptorSetStorageBuffers": 96,
114                        "maxDescriptorSetSampledImages": 1800,
115                        "maxDescriptorSetStorageImages": 144,
116                        "maxFragmentCombinedOutputResources": 16,
117                        "maxComputeWorkGroupInvocations": 256,
118                        "maxComputeWorkGroupSize": [ 256, 256, 64 ],
119                        "subTexelPrecisionBits": 8,
120                        "mipmapPrecisionBits": 6,
121                        "maxSamplerLodBias": 14,
122                        "standardSampleLocations": true,
123                        "maxColorAttachments": 7
124                    }
125                }
126            }
127        },
128        "vulkan10optionals_roadmap2022": {
129            "features": {
130                "VkPhysicalDeviceFeatures": {
131                    "largePoints": true,
132                    "wideLines": true
133                }
134            },
135            "properties": {
136                "VkPhysicalDeviceProperties": {
137                    "limits": {
138                        "pointSizeGranularity": 0.125,
139                        "lineWidthGranularity": 0.5
140                    }
141                }
142            }
143        },
144        "vulkan11requirements_roadmap2022": {
145            "features": {
146                "VkPhysicalDeviceVulkan11Features": {
147                    "samplerYcbcrConversion": true
148                }
149            },
150            "properties": {
151                "VkPhysicalDeviceVulkan11Properties": {
152                    "subgroupSize": 4,
153                    "subgroupSupportedStages": [ "VK_SHADER_STAGE_COMPUTE_BIT", "VK_SHADER_STAGE_FRAGMENT_BIT" ],
154                    "subgroupSupportedOperations": [ "VK_SUBGROUP_FEATURE_BASIC_BIT", "VK_SUBGROUP_FEATURE_VOTE_BIT", "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT", "VK_SUBGROUP_FEATURE_BALLOT_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_BIT", "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", "VK_SUBGROUP_FEATURE_QUAD_BIT" ]
155                }
156            }
157        },
158        "vulkan12requirements_roadmap2022": {
159            "features": {
160                "VkPhysicalDeviceVulkan12Features": {
161                    "samplerMirrorClampToEdge": true,
162                    "descriptorIndexing": true,
163                    "shaderUniformTexelBufferArrayDynamicIndexing": true,
164                    "shaderStorageTexelBufferArrayDynamicIndexing": true,
165                    "shaderUniformBufferArrayNonUniformIndexing": true,
166                    "shaderSampledImageArrayNonUniformIndexing": true,
167                    "shaderStorageBufferArrayNonUniformIndexing": true,
168                    "shaderStorageImageArrayNonUniformIndexing": true,
169                    "shaderUniformTexelBufferArrayNonUniformIndexing": true,
170                    "shaderStorageTexelBufferArrayNonUniformIndexing": true,
171                    "descriptorBindingSampledImageUpdateAfterBind": true,
172                    "descriptorBindingStorageImageUpdateAfterBind": true,
173                    "descriptorBindingStorageBufferUpdateAfterBind": true,
174                    "descriptorBindingUniformTexelBufferUpdateAfterBind": true,
175                    "descriptorBindingStorageTexelBufferUpdateAfterBind": true,
176                    "descriptorBindingUpdateUnusedWhilePending": true,
177                    "descriptorBindingPartiallyBound": true,
178                    "descriptorBindingVariableDescriptorCount": true,
179                    "runtimeDescriptorArray": true,
180                    "scalarBlockLayout": true
181                }
182            },
183            "properties": {
184                "VkPhysicalDeviceVulkan12Properties": {
185                    "shaderSignedZeroInfNanPreserveFloat16": true,
186                    "shaderSignedZeroInfNanPreserveFloat32": true,
187                    "maxPerStageDescriptorUpdateAfterBindSamplers": 500000,
188                    "maxPerStageDescriptorUpdateAfterBindUniformBuffers": 12,
189                    "maxPerStageDescriptorUpdateAfterBindStorageBuffers": 500000,
190                    "maxPerStageDescriptorUpdateAfterBindSampledImages": 500000,
191                    "maxPerStageDescriptorUpdateAfterBindStorageImages": 500000,
192                    "maxPerStageDescriptorUpdateAfterBindInputAttachments": 7,
193                    "maxPerStageUpdateAfterBindResources": 500000,
194                    "maxDescriptorSetUpdateAfterBindSamplers": 500000,
195                    "maxDescriptorSetUpdateAfterBindUniformBuffers": 72,
196                    "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic": 8,
197                    "maxDescriptorSetUpdateAfterBindStorageBuffers": 500000,
198                    "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic": 4,
199                    "maxDescriptorSetUpdateAfterBindSampledImages": 500000,
200                    "maxDescriptorSetUpdateAfterBindStorageImages": 500000,
201                    "maxDescriptorSetUpdateAfterBindInputAttachments": 7
202                }
203            }
204        },
205        "vulkan13requirements_roadmap2022": {
206            "extensions": {
207                "VK_KHR_global_priority": 1
208            },
209            "features": {
210                "VkPhysicalDeviceVulkan13Features": {
211                    "descriptorBindingInlineUniformBlockUpdateAfterBind": true
212                }
213            }
214        },
215        "vulkan10requirements_roadmap2024": {
216            "features": {
217                "VkPhysicalDeviceFeatures": {
218                    "multiDrawIndirect": true,
219                    "shaderInt16": true,
220                    "shaderImageGatherExtended": true
221                }
222            },
223            "properties": {
224                "VkPhysicalDeviceProperties": {
225                    "limits": {
226                        "timestampComputeAndGraphics": true,
227                        "maxColorAttachments": 8,
228                        "maxBoundDescriptorSets": 7
229                    }
230                }
231            }
232        },
233        "vulkan11requirements_roadmap2024": {
234            "features": {
235                "VkPhysicalDeviceVulkan11Features": {
236                    "shaderDrawParameters": true,
237                    "storageBuffer16BitAccess": true
238                }
239            }
240        },
241        "vulkan12requirements_roadmap2024": {
242            "features": {
243                "VkPhysicalDeviceVulkan12Features": {
244                    "shaderInt8": true,
245                    "shaderFloat16": true,
246                    "storageBuffer8BitAccess": true
247                }
248            },
249            "properties": {
250                "VkPhysicalDeviceVulkan12Properties": {
251                    "shaderRoundingModeRTEFloat16": true,
252                    "shaderRoundingModeRTEFloat32": true
253                }
254            }
255        },
256        "vulkan13requirements_roadmap2024": {
257            "features": {
258                "VkPhysicalDeviceVulkan13Features": {
259                }
260            },
261            "properties": {
262                "VkPhysicalDeviceVulkan13Properties": {
263                }
264            }
265        },
266        "vulkanextensionrequirements_roadmap2024": {
267            "extensions": {
268                "VK_KHR_dynamic_rendering_local_read": 1,
269                "VK_KHR_load_store_op_none": 1,
270                "VK_KHR_shader_quad_control": 1,
271                "VK_KHR_shader_maximal_reconvergence": 1,
272                "VK_KHR_shader_subgroup_uniform_control_flow": 1,
273                "VK_KHR_shader_subgroup_rotate": 1,
274                "VK_KHR_shader_float_controls2": 1,
275                "VK_KHR_shader_expect_assume": 1,
276                "VK_KHR_line_rasterization": 1,
277                "VK_KHR_vertex_attribute_divisor": 1,
278                "VK_KHR_index_type_uint8": 1,
279                "VK_KHR_map_memory2": 1,
280                "VK_KHR_maintenance5": 1,
281                "VK_KHR_push_descriptor": 1
282            }
283        }
284    },
285    "profiles": {
286        "VP_KHR_roadmap_2024": {
287            "version": 1,
288            "api-version": "1.3.276",
289            "label": "Khronos Vulkan Roadmap 2024 profile",
290            "description": "This roadmap profile is intended to be supported by newer devices shipping in 2024 across mainstream smartphone, tablet, laptops, console and desktop devices.",
291            "profiles": [
292                "VP_KHR_roadmap_2022"
293            ],
294            "capabilities": [
295                "vulkan10requirements_roadmap2024",
296                "vulkan11requirements_roadmap2024",
297                "vulkan12requirements_roadmap2024",
298                "vulkan13requirements_roadmap2024",
299                "vulkanextensionrequirements_roadmap2024"
300            ]
301        },
302        "VP_KHR_roadmap_2022": {
303            "version": 1,
304            "api-version": "1.3.204",
305            "label": "Khronos Vulkan Roadmap 2022 profile",
306            "description": "This roadmap profile is intended to be supported by newer devices shipping in 2022 across mainstream smartphone, tablet, laptops, console and desktop devices.",
307            "contributors": {
308                "Tobias Hector": {
309                    "company": "AMD",
310                    "email": "[email protected]",
311                    "contact": true
312                },
313                "Christophe Riccio": {
314                    "company": "LunarG",
315                    "email": "[email protected]",
316                    "contact": true
317                }
318            },
319            "history": [
320	        {
321	            "revision": 9,
322	            "date": "2024-01-16",
323	            "author": "Tobias Hector",
324	            "comment": "Add Roadmap 2024 profile"
325	        },
326                {
327                    "revision": 8,
328                    "date": "2023-11-02",
329                    "author": "Christophe Riccio",
330                    "comment": "Remove unreferenced capabilities blocks that were written against Vulkan 1.2 for testing before Vulkan 1.3 was released"
331                },
332                {
333                    "revision": 7,
334                    "date": "2022-11-16",
335                    "author": "Christophe Riccio",
336                    "comment": "Fix wideLines and largePoints that are optionals"
337                },
338                {
339                    "revision": 6,
340                    "date": "2022-11-02",
341                    "author": "Christophe Riccio",
342                    "comment": "Fix roadmap 2022 maxInlineUniformTotalSize limit, 256 instead of 4"
343                },
344                {
345                    "revision": 5,
346                    "date": "2022-05-02",
347                    "author": "Christophe Riccio",
348                    "comment": "Add missing dynamicRendering that is a Vulkan 1.3 requirement"
349                },
350                {
351                    "revision": 4,
352                    "date": "2022-03-08",
353                    "author": "Christophe Riccio",
354                    "comment": "Refactor requirements per Vulkan API version"
355                },
356                {
357                    "revision": 3,
358                    "date": "2022-03-08",
359                    "author": "Christophe Riccio",
360                    "comment": "Fix Vulkan 1.3.204 API version requirement"
361                },
362                {
363                    "revision": 2,
364                    "date": "2022-01-03",
365                    "author": "Christophe Riccio",
366                    "comment": "Rebase against Vulkan 1.3.203 revision"
367                },
368                {
369                    "revision": 1,
370                    "date": "2021-12-08",
371                    "author": "Christophe Riccio",
372                    "comment": "Initial revision"
373                }
374            ],
375            "capabilities": [
376                "vulkan10requirements",
377                "vulkan10requirements_roadmap2022",
378                "vulkan11requirements",
379                "vulkan11requirements_roadmap2022",
380                "vulkan12requirements",
381                "vulkan12requirements_roadmap2022",
382                "vulkan13requirements",
383                "vulkan13requirements_roadmap2022"
384            ],
385            "optionals": [
386                "vulkan10optionals_roadmap2022"
387            ]
388        }
389    }
390}
391