mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2026-08-09 10:37:08 +00:00
Refactor MoltenVK/KosmicKrisp initialization
This commit is contained in:
parent
07eacab5bc
commit
eddb8edaeb
4 changed files with 40 additions and 59 deletions
|
|
@ -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")}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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")}");
|
||||
}
|
||||
}
|
||||
}
|
||||
37
src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs
Normal file
37
src/Ryujinx.Graphics.Vulkan/VulkanDriver.cs
Normal 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")}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue