diff --git a/.github/workflows/vulkan-loader.yml b/.github/workflows/vulkan-loader.yml
index 4b6b9fb1dc..59ac8ee2c4 100644
--- a/.github/workflows/vulkan-loader.yml
+++ b/.github/workflows/vulkan-loader.yml
@@ -46,6 +46,9 @@ jobs:
for arch in amd64 arm64 armhf; do
sudo apt install -y libx11-xcb-dev:$arch libxkbcommon-dev:$arch libwayland-dev:$arch libxrandr-dev:$arch
done
+ wget https://github.com/mstorsjo/llvm-mingw/releases/download/20240417/llvm-mingw-20240417-msvcrt-ubuntu-20.04-x86_64.tar.xz
+ sudo mkdir /opt/llvm-mingw-msvcrt
+ sudo tar xf llvm-mingw-20240417-msvcrt-ubuntu-20.04-x86_64.tar.xz --strip-components 1 -C /opt/llvm-mingw-msvcrt
- os: windows-2022
name: Windows
nuke_invoke: ./build.cmd
diff --git a/build/cmake/aarch64-w64-mingw32.cmake b/build/cmake/aarch64-w64-mingw32.cmake
new file mode 100644
index 0000000000..411e02cbd1
--- /dev/null
+++ b/build/cmake/aarch64-w64-mingw32.cmake
@@ -0,0 +1,12 @@
+set(CMAKE_SYSTEM_NAME Windows)
+set(CMAKE_SYSTEM_PROCESSOR aarch64)
+set(CMAKE_ASM_COMPILER "aarch64-w64-mingw32-as")
+set(CMAKE_C_COMPILER "aarch64-w64-mingw32-gcc")
+set(CMAKE_CXX_COMPILER "aarch64-w64-mingw32-g++")
+set(CMAKE_RC_COMPILER "aarch64-w64-mingw32-windres")
+set(CMAKE_LINKER "aarch64-w64-mingw32-ld")
+set(CMAKE_FIND_ROOT_PATH "/opt/llvm-mingw-msvcrt/aarch64-w64-mingw32")
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH)
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
diff --git a/build/nuke/Native/Core.cs b/build/nuke/Native/Core.cs
index 30d9223eb3..e9aeafacd0 100644
--- a/build/nuke/Native/Core.cs
+++ b/build/nuke/Native/Core.cs
@@ -65,15 +65,15 @@ public void PrUpdatedNativeBinary(string name, [CanBeNull] string glob = null)
// it's assumed that the pushable token was used to checkout the repo
if (OperatingSystem.IsWindows())
{
- glob ??= "src/Native/**/*.dll";
+ glob ??= "src/Native/**/*.dll src/Native/**/*.json";
}
else if (OperatingSystem.IsMacOS())
{
- glob ??= "src/Native/**/*.a src/Native/**/*.dylib";
+ glob ??= "src/Native/**/*.a src/Native/**/*.dylib src/Native/**/*.json";
}
else if (OperatingSystem.IsLinux())
{
- glob ??= "src/Native/**/*.so*";
+ glob ??= "src/Native/**/*.so* src/Native/**/*.json";
}
Git("fetch --all", RootDirectory);
diff --git a/build/nuke/Native/SwiftShader.cs b/build/nuke/Native/SwiftShader.cs
index 522bfd3c7d..95e1623b7e 100644
--- a/build/nuke/Native/SwiftShader.cs
+++ b/build/nuke/Native/SwiftShader.cs
@@ -54,6 +54,7 @@ partial class Build {
{
("Win32", "win-x86"),
("x64", "win-x64"),
+ ("ARM64", "win-arm64"),
})
{
EnsureCleanDirectory(buildDir);
diff --git a/build/nuke/Native/VulkanLoader.cs b/build/nuke/Native/VulkanLoader.cs
index fd5b7cbe35..428be02170 100644
--- a/build/nuke/Native/VulkanLoader.cs
+++ b/build/nuke/Native/VulkanLoader.cs
@@ -60,7 +60,6 @@ partial class Build {
}
else if (OperatingSystem.IsLinux())
{
-
foreach (var (triple, rid) in new[]
{
("x86_64-linux-gnu", "linux-x64"),
@@ -76,6 +75,16 @@ partial class Build {
CopyAll((buildDir / "loader").GlobFiles("libvulkan.so"), runtimes / rid / "native");
}
+
+ // Build for win-arm64 with llvm-mingw.
+ {
+ EnsureCleanDirectory(buildDir);
+
+ InheritedShell($"{prepare} -DUSE_GAS=ON {GetCMakeToolchainFlag("aarch64-w64-mingw32")}", buildDir).AssertZeroExitCode();
+ InheritedShell(build, buildDir).AssertZeroExitCode();
+
+ CopyAll((buildDir / "loader").GlobFiles("libvulkan-1.dll"), runtimes / "win-arm64" / "native");
+ }
}
else if (OperatingSystem.IsMacOS())
{
diff --git a/build/submodules/SwiftShader b/build/submodules/SwiftShader
index bbe6452b42..764410d4d6 160000
--- a/build/submodules/SwiftShader
+++ b/build/submodules/SwiftShader
@@ -1 +1 @@
-Subproject commit bbe6452b420c5ddc4b0fd421b0a3ce271262f4ca
+Subproject commit 764410d4d65546fd1e536b02059b1f714a390720
diff --git a/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj b/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj
index 4ab9b2f9bd..9d584035d7 100644
--- a/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj
+++ b/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj
@@ -22,6 +22,7 @@
+
diff --git a/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj b/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj
index 534198ba3f..75d5180e12 100644
--- a/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj
+++ b/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj
@@ -18,13 +18,20 @@
+
+
+
+
+
+
+
+
+
+
-
-
-