From eddb8edaeb11274664ea09389fd8819391f6aca0 Mon Sep 17 00:00:00 2001 From: KeatonTheBot Date: Tue, 30 Jun 2026 20:30:15 -0500 Subject: [PATCH] Refactor MoltenVK/KosmicKrisp initialization --- .../KosmicKrisp/KKInitialization.cs | 25 ------------- .../MoltenVK/MVKInitialization.cs | 30 --------------- src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs | 37 +++++++++++++++++++ src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 7 ++-- 4 files changed, 40 insertions(+), 59 deletions(-) delete mode 100644 src/Ryujinx.Graphics.Vulkan/KosmicKrisp/KKInitialization.cs delete mode 100644 src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs create mode 100644 src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs diff --git a/src/Ryujinx.Graphics.Vulkan/KosmicKrisp/KKInitialization.cs b/src/Ryujinx.Graphics.Vulkan/KosmicKrisp/KKInitialization.cs deleted file mode 100644 index 4dbeda16b..000000000 --- a/src/Ryujinx.Graphics.Vulkan/KosmicKrisp/KKInitialization.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Ryujinx.Common.Logging; -using System; -using System.IO; -using System.Runtime.Versioning; - -namespace Ryujinx.Graphics.Vulkan.KosmicKrisp -{ - [SupportedOSPlatform("macos")] - public static class KKInitialization - { - public static void Initialize() - { - string contentsDir = Path.GetDirectoryName(AppContext.BaseDirectory.TrimEnd('/'))!; - string basePath = Path.Combine(contentsDir, "Resources"); - string icdPath = Path.Combine(basePath, "vulkan", "icd.d", "libkosmickrisp_icd.json"); - - if (!File.Exists(icdPath)) - throw new FileNotFoundException("KosmicKrisp ICD JSON not found", icdPath); - - Environment.SetEnvironmentVariable("VK_DRIVER_FILES", icdPath); - - Console.WriteLine($"[KKInit] VK_DRIVER_FILES just set to: {Environment.GetEnvironmentVariable("VK_DRIVER_FILES")}"); - } - } -} diff --git a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs b/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs deleted file mode 100644 index c893edec5..000000000 --- a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Ryujinx.Common.Logging; -using System; -using System.IO; -using System.Runtime.Versioning; - -namespace Ryujinx.Graphics.Vulkan.MoltenVK -{ - [SupportedOSPlatform("macos")] - public static class MVKInitialization - { - public static void Initialize() - { - Environment.SetEnvironmentVariable("MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", "1"); - Environment.SetEnvironmentVariable("MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE", "0"); - Environment.SetEnvironmentVariable("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", "0"); - Environment.SetEnvironmentVariable("MVK_CONFIG_RESUME_LOST_DEVICE", "1"); - - string contentsDir = Path.GetDirectoryName(AppContext.BaseDirectory.TrimEnd('/'))!; - string basePath = Path.Combine(contentsDir, "Resources"); - string icdPath = Path.Combine(basePath, "vulkan", "icd.d", "MoltenVK_icd.json"); - - if (!File.Exists(icdPath)) - throw new FileNotFoundException("MoltenVK ICD JSON not found", icdPath); - - Environment.SetEnvironmentVariable("VK_DRIVER_FILES", icdPath); - - Console.WriteLine($"[MVKInit] VK_DRIVER_FILES just set to: {Environment.GetEnvironmentVariable("VK_DRIVER_FILES")}"); - } - } -} diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs b/src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs new file mode 100644 index 000000000..43691b692 --- /dev/null +++ b/src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; +using System.Runtime.Versioning; + +namespace Ryujinx.Graphics.Vulkan.Driver +{ + [SupportedOSPlatform("macos")] + public static class VulkanDriver + { + private static string GetIcdPath(string fileName) + { + string contentsDir = Path.GetDirectoryName(AppContext.BaseDirectory.TrimEnd('/'))!; + string icdPath = Path.Combine(contentsDir, "Resources", "vulkan", "icd.d", fileName); + + return !File.Exists(icdPath) ? throw new FileNotFoundException($"{fileName} not found", icdPath) : icdPath; + } + + public static void MoltenVK() + { + Environment.SetEnvironmentVariable("MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS", "1"); + Environment.SetEnvironmentVariable("MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE", "0"); + Environment.SetEnvironmentVariable("MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS", "0"); + Environment.SetEnvironmentVariable("MVK_CONFIG_RESUME_LOST_DEVICE", "1"); + + Environment.SetEnvironmentVariable("VK_DRIVER_FILES", GetIcdPath("MoltenVK_icd.json")); + + Console.WriteLine($"[MoltenVK] VK_DRIVER_FILES just set to: {Environment.GetEnvironmentVariable("VK_DRIVER_FILES")}"); + } + + public static void KosmicKrisp() + { + Environment.SetEnvironmentVariable("VK_DRIVER_FILES", GetIcdPath("libkosmickrisp_icd.json")); + + Console.WriteLine($"[KosmicKrisp] VK_DRIVER_FILES just set to: {Environment.GetEnvironmentVariable("VK_DRIVER_FILES")}"); + } + } +} diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index dfac6b25e..32aaca512 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -5,8 +5,7 @@ using Ryujinx.Common.Logging; using Ryujinx.Graphics.GAL; using Ryujinx.Graphics.Shader; using Ryujinx.Graphics.Shader.Translation; -using Ryujinx.Graphics.Vulkan.KosmicKrisp; -using Ryujinx.Graphics.Vulkan.MoltenVK; +using Ryujinx.Graphics.Vulkan.Driver; using Ryujinx.Graphics.Vulkan.Queries; using Silk.NET.Vulkan; using Silk.NET.Vulkan.Extensions.EXT; @@ -131,11 +130,11 @@ namespace Ryujinx.Graphics.Vulkan { if (translationLayer == TranslationLayer.MoltenVK) { - MVKInitialization.Initialize(); + VulkanDriver.MoltenVK(); } if (translationLayer == TranslationLayer.KosmicKrisp) { - KKInitialization.Initialize(); + VulkanDriver.KosmicKrisp(); } }