Refactor MoltenVK/KosmicKrisp initialization

This commit is contained in:
KeatonTheBot 2026-06-30 20:30:15 -05:00
parent 07eacab5bc
commit eddb8edaeb
4 changed files with 40 additions and 59 deletions

View file

@ -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")}");
}
}
}

View file

@ -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")}");
}
}
}

View file

@ -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")}");
}
}
}

View file

@ -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();
}
}