From b4f9451ca70d1488ece4277fe3c71a985f872892 Mon Sep 17 00:00:00 2001 From: Christophe Date: Mon, 15 Jun 2026 16:10:38 +0200 Subject: [PATCH] profiles: Add capabilities dependences --- .gitignore | 2 +- CHANGELOG.md | 2 + CMakeLists.txt | 2 +- layer/profiles_json.cpp | 4 +- ..._amd_radeon_pro_560_0_2_2010_osx_12_6.json | 2 +- ..._radeon_rx_7800_xt_2_0_294_windows_11.json | 2 +- ...vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json | 2 +- ...puinfo_apple_m3_max_0_2_2015_osx_14_1.json | 2 +- ..._24_0_99_opensuse_tumbleweed_20240213.json | 2 +- ...__a770_graphics_0_405_1234_windows_11.json | 2 +- ...eforce_rtx_4070_551_61_0_0_windows_11.json | 2 +- ..._radeon_rx_7800_xt_2_0_294_windows_11.json | 2 +- ...xt__radv_navi32__24_0_99_arch_unknown.json | 2 +- ...vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json | 2 +- ...puinfo_apple_m3_max_0_2_2015_osx_14_1.json | 2 +- ..._24_0_99_opensuse_tumbleweed_20240213.json | 2 +- ...__a770_graphics_0_405_1234_windows_11.json | 2 +- ...eforce_rtx_4070_551_61_0_0_windows_11.json | 2 +- ..._radeon_rx_6800_xt_2_0_283_windows_11.json | 2 +- ...0_graphics__dg2__23_2_99_arch_unknown.json | 2 +- ...eforce_rtx_2060_537_59_0_0_windows_11.json | 2 +- profiles/VP_LUNARG_minimum_requirements.json | 439 ++++++++++++++++-- .../remote_gpu.json | 2 +- scripts/gen_profiles_file.py | 2 +- scripts/gen_profiles_solution.py | 28 +- scripts/gen_profiles_tests.py | 2 +- scripts/source/profiles_parsing.py | 4 +- 27 files changed, 451 insertions(+), 70 deletions(-) diff --git a/.gitignore b/.gitignore index b5f2c721..c118b11a 100644 --- a/.gitignore +++ b/.gitignore @@ -49,7 +49,7 @@ profiles/VP_LUNARG_desktop_baseline_2024.json PROFILES.md PROFILES_ALL.md PROFILES_ANDROID.md -schema/profiles-0.8-latest.json +schema/profiles-0.9-latest.json library/include/ library/source/ library/include/vulkan/vulkan_profiles.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e240567..1fe15e48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ ### Features: - Add `profiles.py` python script, to pull dependent extensions into a source profiles file (ALPHA) +- Add capabilities dependences in JSON schema, version 0.9 +- Add capabilities dependences in minimum requirements profiles ### Bugfixes: - Fix profiles schema of generated profiles file with `gen_profiles_file.py` and using `--config` diff --git a/CMakeLists.txt b/CMakeLists.txt index a6a2ecaa..e3d432d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ if (BUILD_TESTS_EXTRA) add_definitions(-DVKU_FORCE_EXTRA_TESTS) endif() -set(PROFILES_SCHEMA_FILENAME "profiles-0.8-latest.json") +set(PROFILES_SCHEMA_FILENAME "profiles-0.9-latest.json") find_package(Python3 REQUIRED) diff --git a/layer/profiles_json.cpp b/layer/profiles_json.cpp index ae84c731..93a8e267 100644 --- a/layer/profiles_json.cpp +++ b/layer/profiles_json.cpp @@ -54,11 +54,11 @@ JsonValidator::~JsonValidator() { bool JsonValidator::Init() { #ifdef __APPLE__ - const std::string schema_path = "/usr/local/share/vulkan/registry/profiles-0.8-latest.json"; + const std::string schema_path = "/usr/local/share/vulkan/registry/profiles-0.9-latest.json"; #else const char *sdk_path = std::getenv("VULKAN_SDK"); if (sdk_path == nullptr) return false; - const std::string schema_path = std::string(sdk_path) + "/share/vulkan/registry/profiles-0.8-latest.json"; + const std::string schema_path = std::string(sdk_path) + "/share/vulkan/registry/profiles-0.9-latest.json"; #endif if (!schema) { diff --git a/profiles/VP_LUNARG_desktop_baseline_2022/vp_gpuinfo_amd_radeon_pro_560_0_2_2010_osx_12_6.json b/profiles/VP_LUNARG_desktop_baseline_2022/vp_gpuinfo_amd_radeon_pro_560_0_2_2010_osx_12_6.json index 0b18bc4d..43215e39 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2022/vp_gpuinfo_amd_radeon_pro_560_0_2_2010_osx_12_6.json +++ b/profiles/VP_LUNARG_desktop_baseline_2022/vp_gpuinfo_amd_radeon_pro_560_0_2_2010_osx_12_6.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_AMD_Radeon_Pro_560_0_2_2010_osx_12_6": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json index 897038b4..82ea9d9a 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_AMD_Radeon_RX_7800_XT_2_0_294_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json index 354a952e..6b312b93 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Apple_M1_0_2_2015_osx_14_3": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json index 9d323c0a..4167685c 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Apple_M3_Max_0_2_2015_osx_14_1": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json index b187aa69..a826ccc3 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Intel_R__Arc_tm__A380_Graphics__DG2__24_0_99_opensuse_tumbleweed_20240213": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json index 6a62e3be..38390b4d 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Intel_R__Arc_TM__A770_Graphics_0_405_1234_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json index cf631bd4..6d303ec0 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2023/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_NVIDIA_GeForce_RTX_4070_551_61_0_0_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json index 897038b4..82ea9d9a 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt_2_0_294_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_AMD_Radeon_RX_7800_XT_2_0_294_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt__radv_navi32__24_0_99_arch_unknown.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt__radv_navi32__24_0_99_arch_unknown.json index 91d3cc15..ca83bbba 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt__radv_navi32__24_0_99_arch_unknown.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_amd_radeon_rx_7800_xt__radv_navi32__24_0_99_arch_unknown.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_AMD_Radeon_RX_7800_XT__RADV_NAVI32__24_0_99_arch_unknown": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json index 354a952e..6b312b93 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m1_0_2_2015_osx_14_3.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Apple_M1_0_2_2015_osx_14_3": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json index 9d323c0a..4167685c 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_apple_m3_max_0_2_2015_osx_14_1.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Apple_M3_Max_0_2_2015_osx_14_1": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json index b187aa69..a826ccc3 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a380_graphics__dg2__24_0_99_opensuse_tumbleweed_20240213.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Intel_R__Arc_tm__A380_Graphics__DG2__24_0_99_opensuse_tumbleweed_20240213": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json index 6a62e3be..38390b4d 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_intel_r__arc_tm__a770_graphics_0_405_1234_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Intel_R__Arc_TM__A770_Graphics_0_405_1234_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json index cf631bd4..6d303ec0 100644 --- a/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json +++ b/profiles/VP_LUNARG_desktop_baseline_2024/vp_gpuinfo_nvidia_geforce_rtx_4070_551_61_0_0_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_NVIDIA_GeForce_RTX_4070_551_61_0_0_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_amd_radeon_rx_6800_xt_2_0_283_windows_11.json b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_amd_radeon_rx_6800_xt_2_0_283_windows_11.json index 49a3a433..930b4c76 100644 --- a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_amd_radeon_rx_6800_xt_2_0_283_windows_11.json +++ b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_amd_radeon_rx_6800_xt_2_0_283_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_AMD_Radeon_RX_6800_XT_2_0_283_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_intel_r__arc_tm__a750_graphics__dg2__23_2_99_arch_unknown.json b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_intel_r__arc_tm__a750_graphics__dg2__23_2_99_arch_unknown.json index 3843911e..a87c2f70 100644 --- a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_intel_r__arc_tm__a750_graphics__dg2__23_2_99_arch_unknown.json +++ b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_intel_r__arc_tm__a750_graphics__dg2__23_2_99_arch_unknown.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_Intel_R__Arc_tm__A750_Graphics__DG2__23_2_99_arch_unknown": { "version": 1, diff --git a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_nvidia_geforce_rtx_2060_537_59_0_0_windows_11.json b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_nvidia_geforce_rtx_2060_537_59_0_0_windows_11.json index f25e202f..788687bb 100644 --- a/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_nvidia_geforce_rtx_2060_537_59_0_0_windows_11.json +++ b/profiles/VP_LUNARG_desktop_max_2024/vp_gpuinfo_nvidia_geforce_rtx_2060_537_59_0_0_windows_11.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json#", "profiles": { "VP_GPUINFO_NVIDIA_GeForce_RTX_2060_537_59_0_0_windows_11": { "version": 1, diff --git a/profiles/VP_LUNARG_minimum_requirements.json b/profiles/VP_LUNARG_minimum_requirements.json index acba8ba6..d888e0c3 100644 --- a/profiles/VP_LUNARG_minimum_requirements.json +++ b/profiles/VP_LUNARG_minimum_requirements.json @@ -1,7 +1,7 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8.1-204.json#", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9.0-354.json#", "capabilities": { - "vulkan10requirements": { + "vulkan_1_0_base": { "features": { "VkPhysicalDeviceFeatures": { "robustBufferAccess": true @@ -165,32 +165,33 @@ "residencyNonResidentStrict": false } } + }, + "formats": { } }, - "vulkan11requirements_split": { - "features": { - "VkPhysicalDeviceMultiviewFeatures": { - "multiview": true + "vulkan_1_0_sparseBinding": { + "depends": { + "features": { + "VkPhysicalDeviceFeatures": { + "sparseBinding": true + } } }, "properties": { - "VkPhysicalDeviceSubgroupProperties": { - "subgroupSize": 1, - "supportedStages": [ "VK_SHADER_STAGE_COMPUTE_BIT" ], - "supportedOperations": [ "VK_SUBGROUP_FEATURE_BASIC_BIT" ] - }, - "VkPhysicalDeviceMultiviewProperties": { - "maxMultiviewViewCount": 6, - "maxMultiviewInstanceIndex": 134217727 - }, - "VkPhysicalDeviceMaintenance3Properties": { - "maxPerSetDescriptors": 1024, - "maxMemoryAllocationSize": 1073741824 + "VkPhysicalDeviceProperties": { + "limits": { + "sparseAddressSpaceSize": 2147483648 + } } - } }, - "vulkan11requirements": { + "vulkan_1_0": { + "requirements": [ + "vulkan_1_0_base", + "vulkan_1_0_sparseBinding" + ] + }, + "vulkan_1_1_base": { "features": { "VkPhysicalDeviceVulkan11Features": { "multiview": true @@ -206,9 +207,71 @@ "maxPerSetDescriptors": 1024, "maxMemoryAllocationSize": 1073741824 } + }, + "formats": { + } }, - "vulkan12requirements": { + "vulkan_1_1_16bit_storage": { + "depends": { + "extensions": { + "VK_KHR_16bit_storage": 1 + } + }, + "features": { + "VkPhysicalDevice16BitStorageFeatures": { + "storageBuffer16BitAccess": true + } + } + }, + "vulkan_1_1_sampler_ycbcr_conversion": { + "depends": { + "extensions": { + "VK_KHR_sampler_ycbcr_conversion": 14 + } + }, + "features": { + "VkPhysicalDeviceSamplerYcbcrConversionFeatures": { + "samplerYcbcrConversion": true + } + }, + "formats": { + } + }, + "vulkan_1_1_shader_draw_parameters": { + "depends": { + "extensions": { + "VK_KHR_shader_draw_parameters": 1 + } + }, + "features": { + "VkPhysicalDeviceShaderDrawParametersFeatures": { + "shaderDrawParameters": true + } + } + }, + "vulkan_1_1_variable_pointers": { + "depends": { + "extensions": { + "VK_KHR_variable_pointers": 1 + } + }, + "features": { + "VkPhysicalDeviceVariablePointersFeatures": { + "variablePointersStorageBuffer": true + } + } + }, + "vulkan_1_1": { + "requirements": [ + "vulkan_1_1_base", + "vulkan_1_1_16bit_storage", + "vulkan_1_1_sampler_ycbcr_conversion", + "vulkan_1_1_shader_draw_parameters", + "vulkan_1_1_variable_pointers" + ] + }, + "vulkan_1_2_base": { "features": { "VkPhysicalDeviceVulkan12Features": { "samplerMirrorClampToEdge": true, @@ -275,9 +338,148 @@ "maxTimelineSemaphoreValueDifference": 2147483647, "framebufferIntegerColorSampleCounts": [ "VK_SAMPLE_COUNT_1_BIT" ] } + }, + "formats": { + } + }, + "vulkan_1_2_8bit_storage": { + "depends": { + "extensions": { + "VK_KHR_8bit_storage": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "storageBuffer8BitAccess": true + } + } + }, + "vulkan_1_2_draw_indirect_count": { + "depends": { + "extensions": { + "VK_KHR_draw_indirect_count": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "drawIndirectCount": true + } + } + }, + "vulkan_1_2_sampler_mirror_clamp_to_edge": { + "depends": { + "extensions": { + "VK_KHR_sampler_mirror_clamp_to_edge": 3 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "samplerMirrorClampToEdge": true + } + } + }, + "vulkan_1_2_descriptor_indexing": { + "depends": { + "extensions": { + "VK_EXT_descriptor_indexing": 2 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "descriptorIndexing": true + } + } + }, + "vulkan_1_2_scalar_block_layout": { + "depends": { + "extensions": { + "VK_EXT_scalar_block_layout": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "scalarBlockLayout": true + } + } + }, + "vulkan_1_2_shader_viewport_index_layer": { + "depends": { + "extensions": { + "VK_EXT_shader_viewport_index_layer": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "shaderOutputViewportIndex": true, + "shaderOutputLayer": true + } + } + }, + "vulkan_1_2_buffer_device_address": { + "depends": { + "extensions": { + "VK_KHR_buffer_device_address": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "bufferDeviceAddress": true + } + } + }, + "vulkan_1_2_shader_atomic_int64": { + "depends": { + "extensions": { + "VK_KHR_shader_atomic_int64": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "shaderBufferInt64Atomics": true + } + } + }, + "vulkan_1_2_shader_float16_int8": { + "depends": { + "extensions": { + "VK_KHR_shader_float16_int8": 1 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "shaderFloat16": true, + "shaderInt8": true + } } }, - "vulkan13requirements": { + "vulkan_1_2_vulkan_memory_model": { + "depends": { + "extensions": { + "VK_KHR_vulkan_memory_model": 3 + } + }, + "features": { + "VkPhysicalDeviceVulkan12Features": { + "vulkanMemoryModel": true + } + } + }, + "vulkan_1_2": { + "requirements": [ + "vulkan_1_2_base", + "vulkan_1_2_8bit_storage", + "vulkan_1_2_draw_indirect_count", + "vulkan_1_2_sampler_mirror_clamp_to_edge", + "vulkan_1_2_descriptor_indexing", + "vulkan_1_2_scalar_block_layout", + "vulkan_1_2_shader_viewport_index_layer", + "vulkan_1_2_buffer_device_address", + "vulkan_1_2_shader_atomic_int64", + "vulkan_1_2_shader_float16_int8", + "vulkan_1_2_vulkan_memory_model" + ] + }, + "vulkan_1_3_base": { "features": { "VkPhysicalDeviceVulkan12Features": { "vulkanMemoryModel": true, @@ -341,9 +543,139 @@ "integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated": false, "maxBufferSize": 1073741824 } + }, + "formats": { + } + }, + "vulkan_1_3_4444_formats": { + "depends": { + "extensions": { + "VK_EXT_4444_formats": 1 + } + }, + "features": { + "VkPhysicalDevice4444FormatsFeaturesEXT": { + "formatA4R4G4B4": true, + "formatA4B4G4R4": true + } + }, + "formats": { + "VK_FORMAT_A4R4G4B4_UNORM_PACK16": { + "VkFormatProperties": { + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + }, + "VK_FORMAT_A4B4G4R4_UNORM_PACK16": { + "VkFormatProperties": { + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + }, + "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT": { + "VkFormatProperties": { + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + }, + "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT": { + "VkFormatProperties": { + "optimalTilingFeatures": [ + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", + "VK_FORMAT_FEATURE_BLIT_SRC_BIT", + "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT" + ] + } + } + } + }, + "vulkan_1_3_texture_compression_astc_hdr": { + "depends": { + "extensions": { + "VK_EXT_texture_compression_astc_hdr": 1 + } + }, + "features": { + "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": { + "extendedDynamicState": true + } + }, + "formats": { + "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + }, + "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK": { + "VkFormatProperties": { + } + } } }, - "vulkan14requirements": { + "vulkan_1_3": { + "requirements": [ + "vulkan_1_3_base", + "vulkan_1_3_4444_formats", + "vulkan_1_3_texture_compression_astc_hdr" + ] + }, + "vulkan_1_4_base": { "features": { "VkPhysicalDeviceFeatures": { "fullDrawIndexUint32": true, @@ -444,7 +776,7 @@ }, "VkPhysicalDeviceVulkan11Properties": { "subgroupSupportedOperations": [ "VK_SUBGROUP_FEATURE_BASIC_BIT", "VK_SUBGROUP_FEATURE_CLUSTERED_BIT", "VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT" ] - }, + }, "VkPhysicalDeviceVulkan12Properties": { "shaderSignedZeroInfNanPreserveFloat16": true, "shaderSignedZeroInfNanPreserveFloat32": true @@ -454,12 +786,30 @@ } } }, - "vulkan14dependent": { + "vulkan_1_4_protectedMemory": { + "depends": { + "features": { + "VkPhysicalDeviceVulkan11Features": { + "protectedMemory": true + } + } + }, "features": { "VkPhysicalDeviceVulkan14Features": { "pipelineProtectedAccess": true } } + }, + "vulkan_1_4": { + "features": { + "VkPhysicalDeviceVulkan14Features": { + "pipelineProtectedAccess": true + } + }, + "requirements": [ + "vulkan_1_4_base", + "vulkan_1_4_protectedMemory" + ] } }, "profiles": { @@ -469,7 +819,7 @@ "label": "Vulkan 1.0 Minimum Requirements", "description": "Vulkan 1.0 Minimum Requirements.", "capabilities": [ - "vulkan10requirements" + "vulkan_1_0" ] }, "VP_LUNARG_minimum_requirements_1_1": { @@ -478,8 +828,8 @@ "label": "Vulkan 1.1 Minimum Requirements", "description": "Vulkan 1.1 Minimum Requirements.", "capabilities": [ - "vulkan10requirements", - "vulkan11requirements_split" + "vulkan_1_0", + "vulkan_1_1" ] }, "VP_LUNARG_minimum_requirements_1_2": { @@ -488,9 +838,9 @@ "label": "Vulkan 1.2 Minimum Requirements", "description": "Vulkan 1.2 Minimum Requirements.", "capabilities": [ - "vulkan10requirements", - "vulkan11requirements", - "vulkan12requirements" + "vulkan_1_0", + "vulkan_1_1", + "vulkan_1_2" ] }, "VP_LUNARG_minimum_requirements_1_3": { @@ -499,10 +849,10 @@ "label": "Vulkan 1.3 Minimum Requirements", "description": "Vulkan 1.3 Minimum Requirements.", "capabilities": [ - "vulkan10requirements", - "vulkan11requirements", - "vulkan12requirements", - "vulkan13requirements" + "vulkan_1_0", + "vulkan_1_1", + "vulkan_1_2", + "vulkan_1_3" ] }, "VP_LUNARG_minimum_requirements_1_4": { @@ -511,14 +861,11 @@ "label": "Vulkan 1.4 Minimum Requirements", "description": "Vulkan 1.4 Minimum Requirements.", "capabilities": [ - "vulkan10requirements", - "vulkan11requirements", - "vulkan12requirements", - "vulkan13requirements", - "vulkan14requirements" - ], - "optionals": [ - "vulkan14dependent" + "vulkan_1_0", + "vulkan_1_1", + "vulkan_1_2", + "vulkan_1_3", + "vulkan_1_4" ] } }, @@ -530,6 +877,12 @@ } }, "history": [ + { + "revision": 3, + "date": "2026-06-15", + "author": "Christophe Riccio", + "comment": "Refactor profiles definitions and add capabilities dependences" + }, { "revision": 2, "date": "2026-03-05", diff --git a/profiles/test/data/VP_LUNARG_test_host_image_copy/remote_gpu.json b/profiles/test/data/VP_LUNARG_test_host_image_copy/remote_gpu.json index eeae11b9..0cf1d31a 100644 --- a/profiles/test/data/VP_LUNARG_test_host_image_copy/remote_gpu.json +++ b/profiles/test/data/VP_LUNARG_test_host_image_copy/remote_gpu.json @@ -1,5 +1,5 @@ { - "$schema": "https://schema.khronos.org/vulkan/profiles-0.8-latest.json", + "$schema": "https://schema.khronos.org/vulkan/profiles-0.9-latest.json", "capabilities": { "device": { "extensions": { diff --git a/scripts/gen_profiles_file.py b/scripts/gen_profiles_file.py index e2e2fbad..9d174d47 100644 --- a/scripts/gen_profiles_file.py +++ b/scripts/gen_profiles_file.py @@ -30,7 +30,7 @@ class ProfileFile(): def __init__(self): self.json_output = dict() - self.json_output['$schema'] = 'https://schema.khronos.org/vulkan/profiles-0.8-latest.json#' + self.json_output['$schema'] = 'https://schema.khronos.org/vulkan/profiles-0.9-latest.json#' self.json_output['capabilities'] = dict() self.json_output['profiles'] = dict() self.json_output['contributors'] = dict() diff --git a/scripts/gen_profiles_solution.py b/scripts/gen_profiles_solution.py index f614ff9c..329e6099 100644 --- a/scripts/gen_profiles_solution.py +++ b/scripts/gen_profiles_solution.py @@ -6092,7 +6092,7 @@ def gen_schema(self): return OrderedDict({ "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://schema.khronos.org/vulkan/profiles-0.8.2-{0}.json#".format(str(self.registry.headerVersionNumber.patch)), + "$id": "https://schema.khronos.org/vulkan/profiles-0.9.0-{0}.json#".format(str(self.registry.headerVersionNumber.patch)), "title": "Vulkan Profiles Schema for Vulkan {0}".format(versionStr), "additionalProperties": True, "required": [ @@ -6108,6 +6108,32 @@ def gen_schema(self): "type": "object", "additionalProperties": False, "properties": OrderedDict({ + "requirements": OrderedDict({ + "description": "The block that stores required blocks.", + "type": "array", + "uniqueItems": True, + "items": OrderedDict({ + "type": "string" + }) + }), + "depends": OrderedDict({ + "description": "The block that stores required blocks.", + "type": "object", + "properties": OrderedDict({ + "extensions": OrderedDict({ + "description": "The block that stores required extensions.", + "type": "object", + "additionalProperties": False, + "properties": extensions + }), + "features": OrderedDict({ + "description": "The block that stores features requirements.", + "type": "object", + "additionalProperties": False, + "properties": features + }) + }) + }), "extensions": OrderedDict({ "description": "The block that stores required extensions.", "type": "object", diff --git a/scripts/gen_profiles_tests.py b/scripts/gen_profiles_tests.py index 45dde714..1870d756 100644 --- a/scripts/gen_profiles_tests.py +++ b/scripts/gen_profiles_tests.py @@ -605,7 +605,7 @@ def gen_formats(self, registry): def gen_privateImpl(self, registry): gen = '{\n' - gen += ' "$schema": "https://schema.khronos.org/vulkan/profiles-0.8.0-204.json#",\n' + gen += ' "$schema": "https://schema.khronos.org/vulkan/profiles-0.9.0-354.json#",\n' gen += ' "capabilities": {\n' gen += ' "baseline": {\n' gen += ' "extensions": {' diff --git a/scripts/source/profiles_parsing.py b/scripts/source/profiles_parsing.py index ff14a5e5..d6208c7e 100644 --- a/scripts/source/profiles_parsing.py +++ b/scripts/source/profiles_parsing.py @@ -44,11 +44,11 @@ def load_profiles_jsons(input_dir): with open(profiles_files_paths[i], "r", encoding="utf-8") as file: json_file_data = json.load(file) - # Check the schema start with "https://schema.khronos.org/vulkan/profiles-0.8.", otherwise it's not a profiles file (or a valid one) + # Check the schema start with "https://schema.khronos.org/vulkan/profiles-0.", otherwise it's not a profiles file (or a valid one) if isinstance(json_file_data, dict) and "$schema" in json_file_data: schema_url = json_file_data["$schema"] - if isinstance(schema_url, str) and schema_url.startswith("https://schema.khronos.org/vulkan/profiles-0.8"): + if isinstance(schema_url, str) and schema_url.startswith("https://schema.khronos.org/vulkan/profiles-0."): print(f"[DEBUG] Loading: {profiles_files_paths[i]}") json_files_dict[profiles_files_paths[i]] = json_file_data