diff options
author | MutantAura <44103205+MutantAura@users.noreply.github.com> | 2024-04-06 18:58:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-06 14:58:02 -0300 |
commit | 451a28afb80996a7859659befaa602fe2db5c119 (patch) | |
tree | f1c9b028091f69b75a42b02cd54ba0b26596e30c | |
parent | 12b235700cf104163bf8030df0feb6357a40f9d3 (diff) |
misc: Add ANGLE configuration option to JSON and CLI (#6520)1.1.1262
* Add hardware-acceleration toggle to ConfigurationState.
* Add command line override for easier RenderDoc use.
* Adjust CLI arguments.
* fix whitespace format check
* fix copypasta in comment
* Add X11 rendering mode toggle
* Remove ANGLE specific comments.
-rw-r--r-- | src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs | 7 | ||||
-rw-r--r-- | src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs | 18 | ||||
-rw-r--r-- | src/Ryujinx.UI.Common/Helper/CommandLineState.cs | 7 | ||||
-rw-r--r-- | src/Ryujinx/Program.cs | 14 |
4 files changed, 43 insertions, 3 deletions
diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs index 0f6c21ef..3387e1be 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationFileFormat.cs @@ -15,7 +15,7 @@ namespace Ryujinx.UI.Common.Configuration /// <summary> /// The current version of the file format /// </summary> - public const int CurrentVersion = 49; + public const int CurrentVersion = 50; /// <summary> /// Version of the configuration file format @@ -163,6 +163,11 @@ namespace Ryujinx.UI.Common.Configuration public bool ShowConfirmExit { get; set; } /// <summary> + /// Enables hardware-accelerated rendering for Avalonia + /// </summary> + public bool EnableHardwareAcceleration { get; set; } + + /// <summary> /// Whether to hide cursor on idle, always or never /// </summary> public HideCursorMode HideCursor { get; set; } diff --git a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs index b7f36087..2609dc9b 100644 --- a/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs +++ b/src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs @@ -627,6 +627,11 @@ namespace Ryujinx.UI.Common.Configuration public ReactiveObject<bool> ShowConfirmExit { get; private set; } /// <summary> + /// Enables hardware-accelerated rendering for Avalonia + /// </summary> + public ReactiveObject<bool> EnableHardwareAcceleration { get; private set; } + + /// <summary> /// Hide Cursor on Idle /// </summary> public ReactiveObject<HideCursorMode> HideCursor { get; private set; } @@ -642,6 +647,7 @@ namespace Ryujinx.UI.Common.Configuration EnableDiscordIntegration = new ReactiveObject<bool>(); CheckUpdatesOnStart = new ReactiveObject<bool>(); ShowConfirmExit = new ReactiveObject<bool>(); + EnableHardwareAcceleration = new ReactiveObject<bool>(); HideCursor = new ReactiveObject<HideCursorMode>(); } @@ -678,6 +684,7 @@ namespace Ryujinx.UI.Common.Configuration EnableDiscordIntegration = EnableDiscordIntegration, CheckUpdatesOnStart = CheckUpdatesOnStart, ShowConfirmExit = ShowConfirmExit, + EnableHardwareAcceleration = EnableHardwareAcceleration, HideCursor = HideCursor, EnableVsync = Graphics.EnableVsync, EnableShaderCache = Graphics.EnableShaderCache, @@ -785,6 +792,7 @@ namespace Ryujinx.UI.Common.Configuration EnableDiscordIntegration.Value = true; CheckUpdatesOnStart.Value = true; ShowConfirmExit.Value = true; + EnableHardwareAcceleration.Value = true; HideCursor.Value = HideCursorMode.OnIdle; Graphics.EnableVsync.Value = true; Graphics.EnableShaderCache.Value = true; @@ -1442,6 +1450,15 @@ namespace Ryujinx.UI.Common.Configuration configurationFileUpdated = true; } + if (configurationFileFormat.Version < 50) + { + Ryujinx.Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 50."); + + configurationFileFormat.EnableHardwareAcceleration = true; + + configurationFileUpdated = true; + } + Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog; Graphics.ResScale.Value = configurationFileFormat.ResScale; Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom; @@ -1472,6 +1489,7 @@ namespace Ryujinx.UI.Common.Configuration EnableDiscordIntegration.Value = configurationFileFormat.EnableDiscordIntegration; CheckUpdatesOnStart.Value = configurationFileFormat.CheckUpdatesOnStart; ShowConfirmExit.Value = configurationFileFormat.ShowConfirmExit; + EnableHardwareAcceleration.Value = configurationFileFormat.EnableHardwareAcceleration; HideCursor.Value = configurationFileFormat.HideCursor; Graphics.EnableVsync.Value = configurationFileFormat.EnableVsync; Graphics.EnableShaderCache.Value = configurationFileFormat.EnableShaderCache; diff --git a/src/Ryujinx.UI.Common/Helper/CommandLineState.cs b/src/Ryujinx.UI.Common/Helper/CommandLineState.cs index c3c5bd37..6de963a7 100644 --- a/src/Ryujinx.UI.Common/Helper/CommandLineState.cs +++ b/src/Ryujinx.UI.Common/Helper/CommandLineState.cs @@ -8,6 +8,7 @@ namespace Ryujinx.UI.Common.Helper public static string[] Arguments { get; private set; } public static bool? OverrideDockedMode { get; private set; } + public static bool? OverrideHardwareAcceleration { get; private set; } public static string OverrideGraphicsBackend { get; private set; } public static string OverrideHideCursor { get; private set; } public static string BaseDirPathArg { get; private set; } @@ -87,6 +88,12 @@ namespace Ryujinx.UI.Common.Helper OverrideHideCursor = args[++i]; break; + case "--software-gui": + OverrideHardwareAcceleration = false; + break; + case "--hardware-gui": + OverrideHardwareAcceleration = true; + break; default: LaunchPathArg = arg; break; diff --git a/src/Ryujinx/Program.cs b/src/Ryujinx/Program.cs index aecc585f..4a30aee9 100644 --- a/src/Ryujinx/Program.cs +++ b/src/Ryujinx/Program.cs @@ -60,12 +60,16 @@ namespace Ryujinx.Ava EnableMultiTouch = true, EnableIme = true, EnableInputFocusProxy = Environment.GetEnvironmentVariable("XDG_CURRENT_DESKTOP") == "gamescope", - RenderingMode = new[] { X11RenderingMode.Glx, X11RenderingMode.Software }, + RenderingMode = ConfigurationState.Instance.EnableHardwareAcceleration ? + new[] { X11RenderingMode.Glx, X11RenderingMode.Software } : + new[] { X11RenderingMode.Software }, }) .With(new Win32PlatformOptions { WinUICompositionBackdropCornerRadius = 8.0f, - RenderingMode = new[] { Win32RenderingMode.AngleEgl, Win32RenderingMode.Software }, + RenderingMode = ConfigurationState.Instance.EnableHardwareAcceleration ? + new[] { Win32RenderingMode.AngleEgl, Win32RenderingMode.Software } : + new[] { Win32RenderingMode.Software }, }) .UseSkia(); } @@ -191,6 +195,12 @@ namespace Ryujinx.Ava _ => ConfigurationState.Instance.HideCursor.Value, }; } + + // Check if hardware-acceleration was overridden. + if (CommandLineState.OverrideHardwareAcceleration != null) + { + ConfigurationState.Instance.EnableHardwareAcceleration.Value = CommandLineState.OverrideHardwareAcceleration.Value; + } } private static void PrintSystemInfo() |