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_roadmap2022": { 206 "extensions": { 207 "VK_KHR_global_priority": 1 208 }, 209 "features": { 210 "VkPhysicalDeviceVulkan13Features": { 211 "descriptorBindingInlineUniformBlockUpdateAfterBind": true 212 } 213 } 214 } 215 }, 216 "profiles": { 217 "VP_KHR_roadmap_2022": { 218 "version": 1, 219 "api-version": "1.3.204", 220 "label": "Khronos Vulkan Roadmap 2022 profile", 221 "description": "This roadmap profile is intended to be supported by newer devices shipping in 2022 across mainstream smartphone, tablet, laptops, console and desktop devices.", 222 "contributors": { 223 "Tobias Hector": { 224 "company": "AMD", 225 "email": "tobias.hector@amd.com", 226 "contact": true 227 }, 228 "Christophe Riccio": { 229 "company": "LunarG", 230 "email": "christophe@lunarg.com", 231 "contact": true 232 } 233 }, 234 "history": [ 235 { 236 "revision": 8, 237 "date": "2023-11-02", 238 "author": "Christophe Riccio", 239 "comment": "Remove unreferenced capabilities blocks that were written against Vulkan 1.2 for testing before Vulkan 1.3 was released" 240 }, 241 { 242 "revision": 7, 243 "date": "2022-11-16", 244 "author": "Christophe Riccio", 245 "comment": "Fix wideLines and largePoints that are optionals" 246 }, 247 { 248 "revision": 6, 249 "date": "2022-11-02", 250 "author": "Christophe Riccio", 251 "comment": "Fix roadmap 2022 maxInlineUniformTotalSize limit, 256 instead of 4" 252 }, 253 { 254 "revision": 5, 255 "date": "2022-05-02", 256 "author": "Christophe Riccio", 257 "comment": "Add missing dynamicRendering that is a Vulkan 1.3 requirement" 258 }, 259 { 260 "revision": 4, 261 "date": "2022-03-08", 262 "author": "Christophe Riccio", 263 "comment": "Refactor requirements per Vulkan API version" 264 }, 265 { 266 "revision": 3, 267 "date": "2022-03-08", 268 "author": "Christophe Riccio", 269 "comment": "Fix Vulkan 1.3.204 API version requirement" 270 }, 271 { 272 "revision": 2, 273 "date": "2022-01-03", 274 "author": "Christophe Riccio", 275 "comment": "Rebase against Vulkan 1.3.203 revision" 276 }, 277 { 278 "revision": 1, 279 "date": "2021-12-08", 280 "author": "Christophe Riccio", 281 "comment": "Initial revision" 282 } 283 ], 284 "capabilities": [ 285 "vulkan10requirements", 286 "vulkan10requirements_roadmap2022", 287 "vulkan11requirements", 288 "vulkan11requirements_roadmap2022", 289 "vulkan12requirements", 290 "vulkan12requirements_roadmap2022", 291 "vulkan13requirements", 292 "vulkan13requirements_roadmap2022" 293 ], 294 "optionals": [ 295 "vulkan10optionals_roadmap2022" 296 ] 297 } 298 } 299} 300