Jelajahi Sumber

Update vulkan packages to 1.4.309 (#6690)

* Update vulkan packages to 1.4.309

* Forgot spirv-tools

* Update vulkan-tools and volk

* fix volk

* Update xmake.lua

* Fix vulkan-utility-libraries

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* vulkan-tools: Disable cube example

* more fixes

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua
Jérôme Leclercq 4 bulan lalu
induk
melakukan
edc29f804b

+ 3 - 0
packages/g/glslang/xmake.lua

@@ -4,6 +4,8 @@ package("glslang")
     set_license("Apache-2.0")
 
     add_urls("https://github.com/KhronosGroup/glslang.git")
+
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
     add_versions("1.2.154+1", "bacaef3237c515e40d1a24722be48c0a0b30f75f")
     add_versions("1.2.162+0", "c594de23cdd790d64ad5f9c8b059baae0ee2941d")
     add_versions("1.2.189+1", "2fb89a0072ae7316af1c856f22663fde4928128a")
@@ -19,6 +21,7 @@ package("glslang")
     add_versions("1.3.280+0", "ee2f5d09eaf8f4e8d0d598bd2172fce290d4ca60")
     add_versions("1.3.283+0", "e8dd0b6903b34f1879520b444634c75ea2deedf5")
     add_versions("1.3.290+0", "fa9c3deb49e035a8abcabe366f26aac010f6cbfb")
+    add_versions("1.4.309+0", "7200bc12a8979d13b22cd52de80ffb7d41939615")
 
     add_patches("1.3.246+1", "https://github.com/KhronosGroup/glslang/commit/1e4955adbcd9b3f5eaf2129e918ca057baed6520.patch", "47893def550f1684304ef7c49da38f0a8fe35c190a3452d3bf58370b3ee7165d")
 

+ 2 - 0
packages/s/spirv-headers/xmake.lua

@@ -12,6 +12,7 @@ package("spirv-headers")
         return version:startswith("v") and version or prefix .. version:gsub("%+", ".")
     end})
 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
     add_versions("1.2.198+0", "3301a23aca0434336a643e433dcacacdd60000ab3dd35dc0078a297c06124a12")
     add_versions("1.3.211+0", "30a78e61bd812c75e09fdc7a319af206b1044536326bc3e85fea818376a12568")
     add_versions("1.3.231+1", "fc340700b005e9a2adc98475b5afbbabd1bc931f789a2afd02d54ebc22522af3")
@@ -25,6 +26,7 @@ package("spirv-headers")
     add_versions("1.3.280+0", "a00906b6bddaac1e37192eff2704582f82ce2d971f1aacee4d51d9db33b0f772")
     add_versions("1.3.283+0", "a68a25996268841073c01514df7bab8f64e2db1945944b45087e5c40eed12cb9")
     add_versions("1.3.290+0", "1b9ff8a33e07814671dee61fe246c67ccbcfc9be6581f229e251784499700e24")
+    add_versions("1.4.309+0", "a96f8b4f2dfb18f7432e5c523e220ab0075372a9509e0c25fbff21c76af0de7c")
 
     add_patches("1.3.261+1", "https://github.com/KhronosGroup/SPIRV-Headers/commit/c43effd54686240d8b13762279d5392058d10e27.patch", "b97a05c35c00620519a5f3638a974fc2a01f062bf6e86b74b49a234f82cc55ce")
 

+ 3 - 0
packages/s/spirv-reflect/xmake.lua

@@ -4,6 +4,8 @@ package("spirv-reflect")
     set_license("Apache-2.0")
 
     add_urls("https://github.com/KhronosGroup/SPIRV-Reflect.git")
+ 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
     add_versions("1.2.154+1", "5de48fe8d3ef434e846d64ed758adc5d26335ae5")
     add_versions("1.2.162+0", "481e34d666031eae28423f3b723a1a8c717d7636")
     add_versions("1.2.189+1", "272e050728de8d4a4ce9e7101c1244e6ff56e5b0")
@@ -15,6 +17,7 @@ package("spirv-reflect")
     add_versions("1.3.280+0", "8406f76dcf6cca11fe430058c4f0ed4b846f3be4")
     add_versions("1.3.283+0", "ee5b57fba6a986381f998567761bbc064428e645")
     add_versions("1.3.290+0", "b4dc70d8e6ac30c719a2d05b8ad05e1d277c92b4")
+    add_versions("1.4.309+0", "c637858562fbce1b6f5dc7ca48d4e8a5bd117b70")
 
     add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
 

+ 2 - 0
packages/s/spirv-tools/xmake.lua

@@ -3,6 +3,7 @@ package("spirv-tools")
     set_description("SPIR-V Tools")
     set_license("Apache-2.0")
 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
     add_urls("https://github.com/KhronosGroup/SPIRV-Tools.git")
     add_versions("1.2.154+1", "sdk-1.2.154.1")
     add_versions("1.2.162+0", "sdk-1.2.162.0")
@@ -19,6 +20,7 @@ package("spirv-tools")
     add_versions("1.3.280+0", "vulkan-sdk-1.3.280.0")
     add_versions("1.3.283+0", "vulkan-sdk-1.3.283.0")
     add_versions("1.3.290+0", "vulkan-sdk-1.3.290.0")
+    add_versions("1.4.309+0", "vulkan-sdk-1.4.309.0")
 
     add_deps("cmake >=3.17.2")
     add_deps("python 3.x", {kind = "binary"})

+ 23 - 8
packages/v/volk/xmake.lua

@@ -14,6 +14,8 @@ package("volk")
     end})
     add_urls("https://github.com/zeux/volk.git", {alias = "git"})
 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("archive:1.4.309+0", "1724924d8e3dccf0c508887edb79d56d9dd11b0738eab5a44e2fa95b8a9ebe1c")
     add_versions("archive:1.3.290+0", "bb6a6d616c0f2bbd5d180da982a6d92a0948581cec937de69f17883980c6ca06")
     add_versions("archive:1.3.283+0", "872035f1f26c53b218632a3a8dbccbd276710aaabafb9bb1bc1a6c0633ee6aab")
     add_versions("archive:1.3.280+0", "af9c98d09284eef29f6826bb1620bfe551a91a864fce707416b83c255efe3c25")
@@ -23,6 +25,7 @@ package("volk")
     add_versions("archive:1.3.250+1", "673241c6561fb4965f873d7fcdece17d950b24c77d6cf41466e47bdc2af67b81")
     add_versions("archive:1.3.231+1", "fac8d3d295e88bcc6bfb2b729d2c4babb2ea04ccb39fd918a3471b2d756789b9")
 
+    add_versions("git:1.4.309+0", "vulkan-sdk-1.4.309.0")
     add_versions("git:1.3.290+0", "vulkan-sdk-1.3.290.0")
     add_versions("git:1.3.283+0", "vulkan-sdk-1.3.283.0")
     add_versions("git:1.3.280+0", "vulkan-sdk-1.3.280.0")
@@ -34,8 +37,7 @@ package("volk")
 
     add_versions("1.3.204", "7776e7f3c70f199579da33d2ccd7152ca8b96182fa98c31fbe80880cef0fdf70")
     add_versions("1.2.190", "07f03720b8c70a626c98cc9545350538122bca9f853e6ed20ccad5a25d55fa4b")
-
-    add_deps("vulkan-headers")
+    add_versions("1.2.162", "ac4d9d6e88dee5a83ad176e2da57f1989ca2c6df155a0aeb5e18e9471aa4d777")
 
     add_configs("header_only", {description = "Header only.", default = false, type = "boolean"})
     add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
@@ -44,11 +46,30 @@ package("volk")
         add_syslinks("dl")
     end
 
+    on_load(function (package)
+        if package:config("header_only") then
+            package:set("kind", "library", {headeronly = true})
+        end
+        if not package.is_built or package:is_built() then
+            package:add("deps", "cmake")
+        end
+        local sdkver = package:version():split("%+")[1]
+        package:add("deps", "vulkan-headers " .. sdkver)
+    end)
+
     on_install("windows", "linux", "macosx", "mingw", "iphoneos", "android", function (package)
         if package:config("header_only") then
             io.replace("CMakeLists.txt", "if(NOT VOLK_HEADERS_ONLY OR VOLK_INSTALL)", "if(NOT VOLK_HEADERS_ONLY)", {plain = true})
             io.replace("CMakeLists.txt", "install(TARGETS volk volk_headers", "install(TARGETS volk_headers", {plain = true})
         end
+        if package:version():lt("1.4.304") then
+            if package:version():ge("1.3.270") then
+                io.replace("CMakeLists.txt", "cmake_minimum_required(VERSION 3.5)", "cmake_minimum_required(VERSION 3.5...3.30)", {plain = true})
+            else
+                io.replace("CMakeLists.txt", "cmake_minimum_required(VERSION 3.0)", "cmake_minimum_required(VERSION 3.5...3.30)", {plain = true})
+            end
+        end
+
         local vulkanheaders = package:dep("vulkan-headers")
         local configs = {}
         if package:is_plat("android") and (package:gitref() or package:version():lt("1.3.261")) then
@@ -66,12 +87,6 @@ package("volk")
         import("package.tools.cmake").install(package, configs, opt)
     end)
 
-    on_load(function (package)
-        if package:config("header_only") then
-            package:set("kind", "library", {headeronly = true})
-        end
-    end)
-
     on_test(function (package)
         local defines
         if package:config("header_only") then 

+ 2 - 1
packages/v/vulkan-headers/xmake.lua

@@ -15,7 +15,8 @@ package("vulkan-headers")
 
     add_configs("modules", {description = "Build with C++20 modules support.", default = false, type = "boolean"})
 
-    -- when adding a new sdk version, please also update vulkan-hpp, vulkan-loader, vulkan-utility-libraries, spirv-headers, spirv-reflect, glslang and volk packages
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("1.4.309+0", "2bc1b4127950badc80212abf1edfa5c3b5032f3425edf37255863ba7592c1969")
     add_versions("1.3.290+0", "5b186e1492d97c44102fe858fb9f222b55524a8b6da940a8795c9e326ae6d722")
     add_versions("1.3.283+0", "cf54a812911b4e3e4ff15716c222a8fb9a87c2771c0b86060cb0ca2570ea55a9")
     add_versions("1.3.280+0", "14caa991988be6451755ad1c81df112f4b6f2bea05f0cf2888a52d4d0f0910f6")

+ 3 - 1
packages/v/vulkan-hpp/xmake.lua

@@ -6,7 +6,9 @@ package("vulkan-hpp")
     set_license("Apache-2.0")
 
     add_urls("https://github.com/KhronosGroup/Vulkan-Hpp.git")
-    -- when adding a new sdk version, please also update vulkan-headers, vulkan-loader, vulkan-utility-libraries, spirv-headers, spirv-reflect, glslang and volk packages
+
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("v1.4.309", "16da8bd29e5d0b921c92d406d194759c0df6a2b8")
     add_versions("v1.2.180", "bfa6d4765212505c8241a44b97dc5a9ce3aa2969")
     add_versions("v1.2.189", "58ff1da4c03f5f124eb835f41a9dd8fe3c2e8087")
     add_versions("v1.2.198", "d8c9f4f0eee6972622a1c3aabab5ed558d37c1c0")

+ 32 - 6
packages/v/vulkan-loader/xmake.lua

@@ -11,6 +11,8 @@ package("vulkan-loader")
          return prefix .. version:gsub("%+", ".")
     end})
 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("1.4.309+0", "ddfeca84a868899fbb2c7f28b7c8fd1006e34b2b13ce653a63bddfb65cbc8d13")
     add_versions("1.3.290+0", "0cd31fdb9b576e432a85ad4d555fac4f4e5ede22ca37ff534ab67c71cd172644")
     add_versions("1.3.283+0", "59151a3cdbf8dcfe9c2ce4b5bf33358255a197f48d8d0ee8a1d8642ed9ace80f")
     add_versions("1.3.280+0", "f9317667a180257381dcbc74726083af581189f51e10e0246adaa86df075fe16")
@@ -39,11 +41,19 @@ package("vulkan-loader")
         add_extsources("brew::vulkan-loader")
     end
 
+    -- xmake doesn't pass environment variables to make (such as LD_LIBRARY_PATH) but passes them to Ninja
+    if is_plat("linux") then
+        set_policy("package.cmake_generator.ninja", true)
+    end
+
     on_load("windows", "linux", "macosx", function (package)
         local sdkver = package:version():split("%+")[1]
         package:add("deps", "vulkan-headers " .. sdkver)
         if not package.is_built or package:is_built() then
-            package:add("deps", "cmake")
+            package:add("deps", "cmake", "ninja")
+            if package:is_plat("linux") then
+                package:add("deps", "ninja")
+            end
         end
         if package:is_plat("macosx") then
             package:add("links", "vulkan")
@@ -62,14 +72,30 @@ package("vulkan-loader")
     end)
 
     on_install("windows|x86", "windows|x64", "linux", "macosx", function (package)
+        import("package.tools.cmake")
+        local envs = cmake.buildenvs(package)
+        local opt = {envs = envs}
+        if package:is_plat("linux") then
+            opt.packagedeps = {"wayland", "libxrandr", "libxrender", "libxcb", "libxkbcommon"}
+            local linkdirs = {}
+            for _, lib in ipairs({"wayland", "libxrandr", "libxcb", "libxkbcommon"}) do
+                local fetchinfo = package:dep(lib):fetch()
+                if fetchinfo then
+                    for _, dir in ipairs(fetchinfo.linkdirs) do
+                        table.insert(linkdirs, dir)
+                    end
+                end
+            end
+            envs.LD_LIBRARY_PATH = (envs.LD_LIBRARY_PATH or "") .. path.envsep() .. path.joinenv(table.unique(linkdirs))
+            if package:version():lt("1.3.211") then
+                -- see https://github.com/KhronosGroup/Vulkan-Loader/commit/a06909aaa67d31d9f0e854ede9ad23ac4cfd0f22
+                opt.cxflags = "-D_GNU_SOURCE"
+            end
+        end
         local configs = {"-DBUILD_TESTS=OFF"}
         local vulkan_headers = package:dep("vulkan-headers")
         table.insert(configs, "-DVULKAN_HEADERS_INSTALL_DIR=" .. vulkan_headers:installdir())
-        if package:is_plat("linux") then
-            import("package.tools.cmake").install(package, configs, {packagedeps = {"wayland", "libxrandr", "libxrender", "libxcb", "libxkbcommon"}})
-        else
-            import("package.tools.cmake").install(package, configs)
-        end
+        cmake.install(package, configs, opt)
     end)
 
     on_test(function (package)

+ 36 - 7
packages/v/vulkan-tools/xmake.lua

@@ -1,17 +1,35 @@
 package("vulkan-tools")
-
     set_kind("binary")
     set_homepage("https://github.com/KhronosGroup/Vulkan-Tools")
     set_description("Vulkan Utilities and Tools")
     set_license("Apache-2.0")
 
-    add_urls("https://github.com/KhronosGroup/Vulkan-Tools/archive/sdk-$(version).tar.gz", {version = function (version) return version:gsub("%+", ".") end})
-    add_versions("1.2.198+0", "06e174bca7834df73dc6ce3c2a72ab3bc34b63e16fdb9a486bf1315f02768032")
-    add_versions("1.2.189+1", "ef5db0934ff7192657bbfc675f6e3e1ee009f2ad34aab915d2bd9993a59add81")
-    add_versions("1.2.162+0", "8324a6dfd1bc20d4fad45c4ea56357d8354fc03e3e4529d0a4919f124d9e6106")
-    add_versions("1.2.154+0", "c7d66ec1f5fe5c0a13e487fe5c6eefd3a954522c0b05f06bd2ae41792aeea272")
+    add_urls("https://github.com/KhronosGroup/Vulkan-Tools/archive/refs/tags/$(version).tar.gz", {alias = "archive", version = function (version)
+        local prefix
+        if version:gt("1.3.261+1") then
+            prefix = "vulkan-sdk-"
+        else
+            prefix = "sdk-"
+        end
+        return prefix .. version:gsub("%+", ".")
+    end})
+    add_urls("https://github.com/KhronosGroup/Vulkan-Tools.git", {alias = "git"})
+
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("archive:1.4.309+0", "d854ff4324b519ff4a1cf5d9e9c333e5244ea7870fad6eadd73efd7b04aedcb0")
+    add_versions("archive:1.2.198+0", "06e174bca7834df73dc6ce3c2a72ab3bc34b63e16fdb9a486bf1315f02768032")
+    add_versions("archive:1.2.189+1", "ef5db0934ff7192657bbfc675f6e3e1ee009f2ad34aab915d2bd9993a59add81")
+    add_versions("archive:1.2.162+0", "8324a6dfd1bc20d4fad45c4ea56357d8354fc03e3e4529d0a4919f124d9e6106")
+    add_versions("archive:1.2.154+0", "c7d66ec1f5fe5c0a13e487fe5c6eefd3a954522c0b05f06bd2ae41792aeea272")
+
+    add_versions("git:1.4.309+0", "vulkan-sdk-1.4.309.0")
+    add_versions("git:1.2.198+0", "sdk-1.2.198.0")
+    add_versions("git:1.2.189+1", "sdk-1.2.189.1")
+    add_versions("git:1.2.162+0", "sdk-1.2.162.0")
+    add_versions("git:1.2.154+0", "sdk-1.2.154.0")
 
     add_deps("glslang")
+
     if is_plat("linux") then
         add_extsources("apt::vulkan-tools", "pacman::vulkan-tools")
         add_deps("wayland", "libxrandr", "libxcb", "libxkbcommon")
@@ -21,6 +39,9 @@ package("vulkan-tools")
         local sdkver = package:version():split("%+")[1]
         package:add("deps", "vulkan-headers " .. sdkver)
         package:add("deps", "vulkan-loader " .. sdkver)
+        if package:version():ge("1.3.271") then
+            package:add("deps", "volk " .. sdkver)
+        end
         if not package.is_built or package:is_built() then
             package:add("deps", "cmake", "ninja")
         end
@@ -51,6 +72,10 @@ package("vulkan-tools")
         local vulkan_headers = package:dep("vulkan-headers")
         local vulkan_loader = package:dep("vulkan-loader")
         local glslang = package:dep("glslang")
+        table.insert(configs, "-DBUILD_CUBE=OFF")
+        table.insert(configs, "-DBUILD_TESTS=OFF")
+        table.insert(configs, "-DBUILD_WERROR=OFF")
+        table.insert(configs, "-DTOOLS_CODEGEN=OFF")
         table.insert(configs, "-DVULKAN_HEADERS_INSTALL_DIR=" .. vulkan_headers:installdir())
         table.insert(configs, "-DVULKAN_LOADER_INSTALL_DIR=" .. vulkan_loader:installdir())
         table.insert(configs, "-DGLSLANG_INSTALL_DIR=" .. glslang:installdir())
@@ -58,5 +83,9 @@ package("vulkan-tools")
     end)
 
     on_test(function (package)
-        os.vrun("vulkaninfo --summary")
+        local boostdep = package:installdir("bin/vulkaninfo")
+        if is_host("windows") then
+            boostdep = boostdep .. ".exe"
+        end
+        assert(os.isexec(boostdep), "vulkaninfo not found!")
     end)

+ 22 - 9
packages/v/vulkan-utility-libraries/xmake.lua

@@ -3,27 +3,35 @@ package("vulkan-utility-libraries")
     set_description("Utility libraries for Vulkan developers")
     set_license("Apache-2.0")
 
-    add_urls("https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git")
-    add_urls("https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/$(version).tar.gz", {version = function (version)
-        local prefix = "sdk-"
+    add_urls("https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/refs/tags/$(version).tar.gz", {alias = "archive", version = function (version)
+        local prefix = ""
         if version:gt("1.3.261+1") then
             prefix = "vulkan-sdk-"
+        elseif version:ge("1.3.226") then
+            prefix = "sdk-"
         end
         return version:startswith("v") and version or prefix .. version:gsub("%+", ".")
     end})
+    add_urls("https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git", {alias = "git"})
 
-    add_versions("v1.3.290", "5173690276d25e51b63132ed6907542b9bc2d64150db0fe057ff59067493e33c")
-    add_versions("v1.3.283", "a446616dede2b0168726f4e1b51777ba5c20ec46c475b378e2c07fd4ab4375ee")
-    add_versions("v1.3.280", "075e13f2fdeeca3bb6fb39155c8cc345cf216ab93661549b1a33368aa28a9dea")
-    add_versions("v1.3.275", "96d3ec7bda7b6e9fabbb471c570104a7b1cb56928d097dd0441c96129468b888")
-    add_versions("v1.3.268", "990de84b66094b647ae420ba13356b79d69e1c6f95532f40466457d51a9d127d")
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+    add_versions("archive:1.4.309+0", "92e3b842d61965ccab1de04f154eeedef23f895104330e8237055a9ee2feed62")
+    add_versions("archive:1.3.283+0", "765a2bb9767e77cd168dfac870533d60b7e8e0031a0738bbe060ca0d4c4e7a03")
+    add_versions("archive:1.3.280+0", "075e13f2fdeeca3bb6fb39155c8cc345cf216ab93661549b1a33368aa28a9dea")
+    add_versions("archive:1.3.275+0", "37d6b0771e1e351916f4d642cc12c696a3afffea6c47f91c97372287974e2bd8")
+    add_versions("archive:1.3.268+0", "0352a6a9a703a969a805e0d6498e013cba2dc7091cc2013b7c89b1a21f61e3f8")
+
+    add_versions("git:1.4.309+0", "vulkan-sdk-1.4.309.0")
+    add_versions("git:1.3.283+0", "vulkan-sdk-1.3.283.0")
+    add_versions("git:1.3.280+0", "vulkan-sdk-1.3.280.0")
+    add_versions("git:1.3.275+0", "vulkan-sdk-1.3.275.0")
+    add_versions("git:1.3.268+0", "vulkan-sdk-1.3.268.0")
 
     if is_plat("windows") then
         add_syslinks("advapi32")
     end
 
     add_deps("cmake")
-    add_deps("vulkan-headers")
 
     if is_plat("mingw") and is_subhost("msys") then
         add_extsources("pacman::vulkan-utility-libraries")
@@ -33,6 +41,11 @@ package("vulkan-utility-libraries")
         add_extsources("brew::vulkan-utility-libraries")
     end
 
+    on_load(function (package)
+        local sdkver = package:version():split("%+")[1]
+        package:add("deps", "vulkan-headers " .. sdkver)
+    end)
+
     on_install("windows", "linux", "macosx", "bsd", "mingw", "msys", "cross", function (package)
         local configs = {"-DBUILD_TESTS=OFF", "-DUPDATE_DEPS=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))

+ 8 - 3
packages/v/vulkan-validationlayers/xmake.lua

@@ -1,9 +1,10 @@
 package("vulkan-validationlayers")
-
     set_homepage("https://github.com/KhronosGroup/Vulkan-ValidationLayers/")
     set_description("Vulkan Validation Layers")
     set_license("Apache-2.0")
 
+    -- when adding a new sdk version, please ensure vulkan-headers, vulkan-hpp, vulkan-loader, vulkan-tools, vulkan-validationlayers, vulkan-utility-libraries, spirv-headers, spirv-reflect, spirv-tools, glslang and volk packages are updated simultaneously
+
     if is_plat("android") then
         add_urls("https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download/$(version).tar.gz", {version = function (version)
             local versionLoc = version:gsub("%+", ".")
@@ -18,19 +19,23 @@ package("vulkan-validationlayers")
             end
         end})
 
+        add_versions("1.4.309+0", "6483ee30edcba3bb05e0ab3569dee632fd4532c190fef780e9ff038391c2edec")
         add_versions("1.3.290+0", "eb26b4bf1f031e57d1624c53d489279076b893b0383fddccc79de7ee2caaa128")
         add_versions("1.3.275+0", "6e22fb13601c1e780c44a17497a3c999cc5207e52a09819e7c32ecd8439eff7a")
         add_versions("1.2.198+0", "5436e974d6b3133b3454edf1910f76b9f869db8bbe086859b2abe32fdb539cbc")
         add_versions("1.2.189+1", "b3e69b60a67a17b023825f9eb0ce1aef22e6b59d095afa204d883a9ce3d81021")
     else
-        add_urls("https://github.com/KhronosGroup/Vulkan-ValidationLayers/archive/$(version).tar.gz", {version = function (version)
-            local prefix = "sdk-"
+        add_urls("https://github.com/KhronosGroup/Vulkan-ValidationLayers/archive/refs/tags/$(version).tar.gz", {version = function (version)
+            local prefix = ""
             if version:gt("1.3.261+1") then
                 prefix = "vulkan-sdk-"
+            elseif version:ge("1.3.226") then
+                prefix = "sdk-"
             end
             return version:startswith("v") and version or prefix .. version:gsub("%+", ".")
         end})
 
+        add_versions("1.4.309+0", "56eb7b70c0ebf3e6b7def7723617a71bd01ca1497ab8dec542e1e4eadf6e07d7")
         add_versions("1.3.290+0", "59be2c0a5bdbfdbdebdcda48bd65ffa3b219f681c73a90fc683cd4708c1b79de")
         add_versions("1.3.275+0", "acfd84039109220129624b0ecb69980bbc3a858978c62b556dbe16efd0f26755")
         add_versions("1.2.198+0", "4a70cc5da26baf873fcf69b081eeeda545515dd66e5904f18fee32b4d275593a")