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