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