Skip to content

Commit 7029865

Browse files
profiles: Add Vulkan 1.4 minimum requirements profile
1 parent c1c01b6 commit 7029865

3 files changed

Lines changed: 207 additions & 22 deletions

File tree

library/test/test_api_create_device.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,15 @@ TEST(api_create_device_profile, check_support_vulkan_1_3) {
9292
EXPECT_TRUE(supported == VK_TRUE);
9393
}
9494

95+
TEST(api_create_device_profile, check_support_vulkan_1_4) {
96+
const VpProfileProperties profile = {VP_LUNARG_MINIMUM_REQUIREMENTS_1_4_NAME, VP_LUNARG_MINIMUM_REQUIREMENTS_1_4_SPEC_VERSION};
97+
98+
VkBool32 supported = VK_FALSE;
99+
VkResult result = vpGetPhysicalDeviceProfileSupport(scaffold->instance, scaffold->physicalDevice, &profile, &supported);
100+
EXPECT_TRUE(result == VK_SUCCESS);
101+
EXPECT_TRUE(supported == VK_TRUE);
102+
}
103+
95104
#ifdef VKU_FORCE_EXTRA_TESTS
96105
TEST(api_create_device_profile, check_support_desktop_2022) {
97106
const VpProfileProperties profile = {VP_LUNARG_DESKTOP_BASELINE_2022_NAME, VP_LUNARG_DESKTOP_BASELINE_2022_SPEC_VERSION};

profiles/VP_LUNARG_minimum_requirements.json

Lines changed: 154 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,12 @@
211211
"vulkan12requirements": {
212212
"features": {
213213
"VkPhysicalDeviceVulkan12Features": {
214+
"samplerMirrorClampToEdge": true,
215+
"drawIndirectCount": true,
216+
"descriptorIndexing": true,
217+
"samplerFilterMinmax": true,
218+
"shaderOutputViewportIndex": true,
219+
"shaderOutputLayer": true,
214220
"uniformBufferStandardLayout": true,
215221
"subgroupBroadcastDynamicId": true,
216222
"imagelessFramebuffer": true,
@@ -336,23 +342,141 @@
336342
"maxBufferSize": 1073741824
337343
}
338344
}
345+
},
346+
"vulkan14requirements": {
347+
"features": {
348+
"VkPhysicalDeviceFeatures": {
349+
"fullDrawIndexUint32": true,
350+
"imageCubeArray": true,
351+
"independentBlend": true,
352+
"sampleRateShading": true,
353+
"drawIndirectFirstInstance": true,
354+
"depthClamp": true,
355+
"depthBiasClamp": true,
356+
"samplerAnisotropy": true,
357+
"fragmentStoresAndAtomics": true,
358+
"shaderStorageImageExtendedFormats": true,
359+
"shaderUniformBufferArrayDynamicIndexing": true,
360+
"shaderSampledImageArrayDynamicIndexing": true,
361+
"shaderStorageBufferArrayDynamicIndexing": true,
362+
"shaderStorageImageArrayDynamicIndexing": true,
363+
"shaderImageGatherExtended": true,
364+
"shaderInt16": true,
365+
"largePoints": true
366+
},
367+
"VkPhysicalDeviceVulkan11Features": {
368+
"storageBuffer16BitAccess": true,
369+
"variablePointersStorageBuffer": true,
370+
"variablePointers": true,
371+
"samplerYcbcrConversion": true
372+
},
373+
"VkPhysicalDeviceVulkan12Features": {
374+
"samplerMirrorClampToEdge": true,
375+
"storageBuffer8BitAccess": true,
376+
"scalarBlockLayout": true,
377+
"shaderInt8": true,
378+
"shaderUniformTexelBufferArrayDynamicIndexing": true,
379+
"shaderStorageTexelBufferArrayDynamicIndexing": true
380+
},
381+
"VkPhysicalDeviceVulkan14Features": {
382+
"globalPriorityQuery": true,
383+
"shaderSubgroupRotate": true,
384+
"shaderSubgroupRotateClustered": true,
385+
"shaderFloatControls2": true,
386+
"shaderExpectAssume": true,
387+
"bresenhamLines": true,
388+
"vertexAttributeInstanceRateDivisor": true,
389+
"indexTypeUint8": true,
390+
"dynamicRenderingLocalRead": true,
391+
"maintenance5": true,
392+
"maintenance6": true,
393+
"pushDescriptor": true,
394+
"pipelineRobustness": true
395+
}
396+
},
397+
"properties": {
398+
"VkPhysicalDeviceProperties": {
399+
"limits": {
400+
"maxImageDimension1D": 8192,
401+
"maxImageDimension2D": 8192,
402+
"maxImageDimension3D": 512,
403+
"maxImageDimensionCube": 8192,
404+
"maxImageArrayLayers": 2048,
405+
"maxUniformBufferRange": 65536,
406+
"maxPushConstantsSize": 256,
407+
"bufferImageGranularity": 4096,
408+
"maxBoundDescriptorSets": 7,
409+
"maxPerStageDescriptorUniformBuffers": 15,
410+
"maxPerStageResources": 200,
411+
"maxDescriptorSetUniformBuffers": 90,
412+
"maxDescriptorSetStorageBuffers": 96,
413+
"maxDescriptorSetStorageImages": 144,
414+
"maxFragmentCombinedOutputResources": 16,
415+
"maxComputeWorkGroupInvocations": 256,
416+
"maxComputeWorkGroupSize": [
417+
256,
418+
256,
419+
64
420+
],
421+
"subTexelPrecisionBits": 8,
422+
"mipmapPrecisionBits": 6,
423+
"maxSamplerLodBias": 14,
424+
"maxViewportDimensions": [
425+
7680,
426+
7680
427+
],
428+
"viewportBoundsRange": [
429+
-15360,
430+
15359
431+
],
432+
"maxFramebufferWidth": 7680,
433+
"maxFramebufferHeight": 7680,
434+
"maxColorAttachments": 8,
435+
"timestampComputeAndGraphics": true,
436+
"pointSizeRange": [
437+
1.0,
438+
256.0
439+
],
440+
"pointSizeGranularity": 0.125,
441+
"lineWidthGranularity": 0.5,
442+
"standardSampleLocations": true
443+
}
444+
},
445+
"VkPhysicalDeviceVulkan11Properties": {
446+
"subgroupSupportedOperations": [ "VK_SUBGROUP_FEATURE_BASIC_BIT", "VK_SUBGROUP_FEATURE_CLUSTERED_BIT", "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT" ],
447+
},
448+
"VkPhysicalDeviceVulkan12Properties": {
449+
"shaderSignedZeroInfNanPreserveFloat16": true,
450+
"shaderSignedZeroInfNanPreserveFloat32": true,
451+
},
452+
"VkPhysicalDeviceVulkan14Properties": {
453+
"maxPushDescriptors": 32
454+
}
455+
}
456+
},
457+
"vulkan14dependent": {
458+
"features": {
459+
"VkPhysicalDeviceVulkan14Features": {
460+
"pipelineProtectedAccess": true
461+
}
462+
}
339463
}
340464
},
341465
"profiles": {
342466
"VP_LUNARG_minimum_requirements_1_0": {
343467
"version": 1,
344468
"api-version": "1.0.68",
345-
"label": "Vulkan Core 1.0 Minimum Requirements",
346-
"description": "Vulkan Core 1.0 Minimum Requirements.",
469+
"label": "Vulkan 1.0 Minimum Requirements",
470+
"description": "Vulkan 1.0 Minimum Requirements.",
347471
"capabilities": [
348472
"vulkan10requirements"
349473
]
350474
},
351475
"VP_LUNARG_minimum_requirements_1_1": {
352476
"version": 1,
353477
"api-version": "1.1.108",
354-
"label": "Vulkan Core 1.1 Minimum Requirements",
355-
"description": "Vulkan Core 1.1 Minimum Requirements.",
478+
"label": "Vulkan 1.1 Minimum Requirements",
479+
"description": "Vulkan 1.1 Minimum Requirements.",
356480
"capabilities": [
357481
"vulkan10requirements",
358482
"vulkan11requirements_split"
@@ -361,8 +485,8 @@
361485
"VP_LUNARG_minimum_requirements_1_2": {
362486
"version": 1,
363487
"api-version": "1.2.131",
364-
"label": "Vulkan Core 1.2 Minimum Requirements",
365-
"description": "Vulkan Core 1.2 Minimum Requirements.",
488+
"label": "Vulkan 1.2 Minimum Requirements",
489+
"description": "Vulkan 1.2 Minimum Requirements.",
366490
"capabilities": [
367491
"vulkan10requirements",
368492
"vulkan11requirements",
@@ -372,14 +496,30 @@
372496
"VP_LUNARG_minimum_requirements_1_3": {
373497
"version": 1,
374498
"api-version": "1.3.204",
375-
"label": "Vulkan Core 1.3 Minimum Requirements",
376-
"description": "Vulkan Core 1.3 Minimum Requirements.",
499+
"label": "Vulkan 1.3 Minimum Requirements",
500+
"description": "Vulkan 1.3 Minimum Requirements.",
377501
"capabilities": [
378502
"vulkan10requirements",
379503
"vulkan11requirements",
380504
"vulkan12requirements",
381505
"vulkan13requirements"
382506
]
507+
},
508+
"VP_LUNARG_minimum_requirements_1_4": {
509+
"version": 1,
510+
"api-version": "1.4.304",
511+
"label": "Vulkan 1.4 Minimum Requirements",
512+
"description": "Vulkan 1.4 Minimum Requirements.",
513+
"capabilities": [
514+
"vulkan10requirements",
515+
"vulkan11requirements",
516+
"vulkan12requirements",
517+
"vulkan13requirements",
518+
"vulkan14requirements"
519+
],
520+
"optionals": [
521+
"vulkan14dependent"
522+
]
383523
}
384524
},
385525
"contributors": {
@@ -390,6 +530,12 @@
390530
}
391531
},
392532
"history": [
533+
{
534+
"revision": 2,
535+
"date": "2026-03-05",
536+
"author": "Christophe Riccio",
537+
"comment": "Add Vulkan 1.4 Minimum Requirements profile"
538+
},
393539
{
394540
"revision": 1,
395541
"date": "2023-11-01",

profiles/hack/VP_KHR_roadmap.json

Lines changed: 44 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"vulkan12requirements": {
2525
"features": {
2626
"VkPhysicalDeviceVulkan12Features": {
27+
"samplerMirrorClampToEdge": true,
2728
"uniformBufferStandardLayout": true,
2829
"subgroupBroadcastDynamicId": true,
2930
"imagelessFramebuffer": true,
@@ -158,7 +159,6 @@
158159
"vulkan12requirements_roadmap2022": {
159160
"features": {
160161
"VkPhysicalDeviceVulkan12Features": {
161-
"samplerMirrorClampToEdge": true,
162162
"descriptorIndexing": true,
163163
"shaderUniformTexelBufferArrayDynamicIndexing": true,
164164
"shaderStorageTexelBufferArrayDynamicIndexing": true,
@@ -203,12 +203,19 @@
203203
}
204204
},
205205
"vulkan13requirements_roadmap2022": {
206+
"features": {
207+
"VkPhysicalDeviceVulkan13Features": {
208+
"descriptorBindingInlineUniformBlockUpdateAfterBind": true
209+
}
210+
}
211+
},
212+
"vulkanextensionrequirements_roadmap2022_promoted_vulkan14": {
206213
"extensions": {
207214
"VK_KHR_global_priority": 1
208215
},
209216
"features": {
210-
"VkPhysicalDeviceVulkan13Features": {
211-
"descriptorBindingInlineUniformBlockUpdateAfterBind": true
217+
"VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR": {
218+
"globalPriorityQuery": true
212219
}
213220
}
214221
},
@@ -273,7 +280,7 @@
273280
}
274281
}
275282
},
276-
"vulkanextensionrequirements_roadmap2024_only": {
283+
"vulkanextensionrequirements_roadmap2024_promoted_vulkan14": {
277284
"extensions": {
278285
"VK_KHR_dynamic_rendering": 1,
279286
"VK_KHR_shader_subgroup_rotate": 1,
@@ -349,6 +356,7 @@
349356
"vulkan14requirements_roadmap2026": {
350357
"features": {
351358
"VkPhysicalDeviceVulkan14Features": {
359+
"globalPriorityQuery": true,
352360
"shaderSubgroupRotate": true,
353361
"shaderExpectAssume": true,
354362
"shaderFloatControls2": true,
@@ -455,19 +463,34 @@
455463
"VkPhysicalDeviceCooperativeMatrixFeaturesKHR": {
456464
"cooperativeMatrix": true
457465
}
466+
},
467+
"properties": {
468+
"VkPhysicalDeviceMaintenance7PropertiesKHR": {
469+
"maxDescriptorSetTotalUniformBuffersDynamic": 8,
470+
"maxDescriptorSetTotalStorageBuffersDynamic": 4,
471+
"maxDescriptorSetTotalBuffersDynamic": 12,
472+
"maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic": 8,
473+
"maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic": 4,
474+
"maxDescriptorSetUpdateAfterBindTotalBuffersDynamic": 12
475+
}
458476
}
459477
}
460478
},
461479
"profiles": {
462480
"VP_KHR_roadmap_2026": {
463-
"version": 1,
481+
"version": 2,
464482
"api-version": "1.4.328",
465483
"label": "Khronos Vulkan Roadmap 2026 profile",
466484
"description": "This roadmap profile is intended to be supported by newer devices shipping in 2026 across mainstream smartphone, tablet, laptops, console and desktop devices.",
467-
"profiles": [
468-
"VP_KHR_roadmap_2022"
469-
],
470485
"capabilities": [
486+
"vulkan10requirements",
487+
"vulkan11requirements",
488+
"vulkan12requirements",
489+
"vulkan13requirements",
490+
"vulkan10requirements_roadmap2022",
491+
"vulkan11requirements_roadmap2022",
492+
"vulkan12requirements_roadmap2022",
493+
"vulkan13requirements_roadmap2022",
471494
"vulkan10requirements_roadmap2024",
472495
"vulkan11requirements_roadmap2024",
473496
"vulkan12requirements_roadmap2024",
@@ -478,7 +501,7 @@
478501
]
479502
},
480503
"VP_KHR_roadmap_2024": {
481-
"version": 1,
504+
"version": 2,
482505
"api-version": "1.3.276",
483506
"label": "Khronos Vulkan Roadmap 2024 profile",
484507
"description": "This roadmap profile is intended to be supported by newer devices shipping in 2024 across mainstream smartphone, tablet, laptops, console and desktop devices.",
@@ -490,23 +513,24 @@
490513
"vulkan11requirements_roadmap2024",
491514
"vulkan12requirements_roadmap2024",
492515
"vulkanextensionrequirements_roadmap2024",
493-
"vulkanextensionrequirements_roadmap2024_only"
516+
"vulkanextensionrequirements_roadmap2024_promoted_vulkan14"
494517
]
495518
},
496519
"VP_KHR_roadmap_2022": {
497-
"version": 1,
520+
"version": 2,
498521
"api-version": "1.3.204",
499522
"label": "Khronos Vulkan Roadmap 2022 profile",
500523
"description": "This roadmap profile is intended to be supported by newer devices shipping in 2022 across mainstream smartphone, tablet, laptops, console and desktop devices.",
501524
"capabilities": [
502525
"vulkan10requirements",
503-
"vulkan10requirements_roadmap2022",
504526
"vulkan11requirements",
505-
"vulkan11requirements_roadmap2022",
506527
"vulkan12requirements",
507-
"vulkan12requirements_roadmap2022",
508528
"vulkan13requirements",
529+
"vulkan10requirements_roadmap2022",
530+
"vulkan11requirements_roadmap2022",
531+
"vulkan12requirements_roadmap2022",
509532
"vulkan13requirements_roadmap2022"
533+
"vulkanextensionrequirements_roadmap2022_promoted_vulkan14"
510534
],
511535
"optionals": [
512536
"vulkan10optionals_roadmap2022"
@@ -526,6 +550,12 @@
526550
}
527551
},
528552
"history": [
553+
{
554+
"revision": 12,
555+
"date": "2026-03-03",
556+
"author": "Christophe Riccio",
557+
"comment": "Fix `globalPriorityQuery` missing from profiles"
558+
},
529559
{
530560
"revision": 11,
531561
"date": "2026-01-28",

0 commit comments

Comments
 (0)