From 0e037d021347e802b28bd74af3459b007b48083e Mon Sep 17 00:00:00 2001
From: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>
Date: Wed, 31 May 2023 08:08:50 +0100
Subject: [PATCH] macOS Headless Fixes (#5167)
* Default hypervisor to disabled
* Include MVK on macOS
* Properly sign headless builds on macOS
* Force Vulkan on macOS
* Suggestions
---
src/Ryujinx.Headless.SDL2/Options.cs | 2 +-
src/Ryujinx.Headless.SDL2/Program.cs | 13 +++++++++++--
.../Ryujinx.Headless.SDL2.csproj | 8 +++++++-
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/src/Ryujinx.Headless.SDL2/Options.cs b/src/Ryujinx.Headless.SDL2/Options.cs
index 7dffa1b00..d7ad8cf79 100644
--- a/src/Ryujinx.Headless.SDL2/Options.cs
+++ b/src/Ryujinx.Headless.SDL2/Options.cs
@@ -130,7 +130,7 @@ namespace Ryujinx.Headless.SDL2
public float AudioVolume { get; set; }
[Option("use-hypervisor", Required = false, Default = true, HelpText = "Uses Hypervisor over JIT if available.")]
- public bool UseHypervisor { get; set; }
+ public bool? UseHypervisor { get; set; }
[Option("lan-interface-id", Required = false, Default = "0", HelpText = "GUID for the network interface used by LAN.")]
public string MultiplayerLanInterfaceId { get; set; }
diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs
index 643db845f..fc1b23ebb 100644
--- a/src/Ryujinx.Headless.SDL2/Program.cs
+++ b/src/Ryujinx.Headless.SDL2/Program.cs
@@ -339,6 +339,15 @@ namespace Ryujinx.Headless.SDL2
GraphicsConfig.EnableShaderCache = true;
+ if (OperatingSystem.IsMacOS())
+ {
+ if (option.GraphicsBackend == GraphicsBackend.OpenGl)
+ {
+ option.GraphicsBackend = GraphicsBackend.Vulkan;
+ Logger.Warning?.Print(LogClass.Application, "OpenGL is not supported on macOS, switching to Vulkan!");
+ }
+ }
+
IGamepad gamepad;
if (option.ListInputIds)
@@ -550,7 +559,7 @@ namespace Ryujinx.Headless.SDL2
options.IgnoreMissingServices,
options.AspectRatio,
options.AudioVolume,
- options.UseHypervisor,
+ options.UseHypervisor ?? true,
options.MultiplayerLanInterfaceId);
return new Switch(configuration);
@@ -703,4 +712,4 @@ namespace Ryujinx.Headless.SDL2
return true;
}
}
-}
+}
\ No newline at end of file
diff --git a/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj b/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj
index fc912d329..d2585c563 100644
--- a/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj
+++ b/src/Ryujinx.Headless.SDL2/Ryujinx.Headless.SDL2.csproj
@@ -7,6 +7,7 @@
true
1.0.0-dirty
$(DefineConstants);$(ExtraDefineConstants)
+ -
true
@@ -15,6 +16,10 @@
+
+
+
+
@@ -29,6 +34,7 @@
+
@@ -63,4 +69,4 @@
true
partial
-
+
\ No newline at end of file