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