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