aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMutantAura <44103205+MutantAura@users.noreply.github.com>2024-04-06 18:58:02 +0100
committerGitHub <noreply@github.com>2024-04-06 14:58:02 -0300
commit451a28afb80996a7859659befaa602fe2db5c119 (patch)
treef1c9b028091f69b75a42b02cd54ba0b26596e30c
parent12b235700cf104163bf8030df0feb6357a40f9d3 (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.cs7
-rw-r--r--src/Ryujinx.UI.Common/Configuration/ConfigurationState.cs18
-rw-r--r--src/Ryujinx.UI.Common/Helper/CommandLineState.cs7
-rw-r--r--src/Ryujinx/Program.cs14
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()