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