mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-24 06:47:44 +02:00
properly merge + move hleconfig tick scalar parameter
This commit is contained in:
parent
776c0cb5cf
commit
94f34a9ed1
6 changed files with 66 additions and 106 deletions
|
@ -8,6 +8,8 @@ namespace Ryujinx.Cpu
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ITickSource : ICounter
|
public interface ITickSource : ICounter
|
||||||
{
|
{
|
||||||
|
public const long RealityTickScalar = 100;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Time elapsed since the counter was created.
|
/// Time elapsed since the counter was created.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -206,6 +206,7 @@ namespace Ryujinx.HLE
|
||||||
VSyncMode vSyncMode,
|
VSyncMode vSyncMode,
|
||||||
bool enableDockedMode,
|
bool enableDockedMode,
|
||||||
bool enablePtc,
|
bool enablePtc,
|
||||||
|
long tickScalar,
|
||||||
bool enableInternetAccess,
|
bool enableInternetAccess,
|
||||||
IntegrityCheckLevel fsIntegrityCheckLevel,
|
IntegrityCheckLevel fsIntegrityCheckLevel,
|
||||||
int fsGlobalAccessLogMode,
|
int fsGlobalAccessLogMode,
|
||||||
|
@ -222,7 +223,6 @@ namespace Ryujinx.HLE
|
||||||
string multiplayerLdnPassphrase,
|
string multiplayerLdnPassphrase,
|
||||||
string multiplayerLdnServer,
|
string multiplayerLdnServer,
|
||||||
int customVSyncInterval,
|
int customVSyncInterval,
|
||||||
long tickScalar,
|
|
||||||
EnabledDirtyHack[] dirtyHacks = null)
|
EnabledDirtyHack[] dirtyHacks = null)
|
||||||
{
|
{
|
||||||
MemoryConfiguration = memoryConfiguration;
|
MemoryConfiguration = memoryConfiguration;
|
||||||
|
@ -232,6 +232,7 @@ namespace Ryujinx.HLE
|
||||||
CustomVSyncInterval = customVSyncInterval;
|
CustomVSyncInterval = customVSyncInterval;
|
||||||
EnableDockedMode = enableDockedMode;
|
EnableDockedMode = enableDockedMode;
|
||||||
EnablePtc = enablePtc;
|
EnablePtc = enablePtc;
|
||||||
|
TickScalar = tickScalar;
|
||||||
EnableInternetAccess = enableInternetAccess;
|
EnableInternetAccess = enableInternetAccess;
|
||||||
FsIntegrityCheckLevel = fsIntegrityCheckLevel;
|
FsIntegrityCheckLevel = fsIntegrityCheckLevel;
|
||||||
FsGlobalAccessLogMode = fsGlobalAccessLogMode;
|
FsGlobalAccessLogMode = fsGlobalAccessLogMode;
|
||||||
|
@ -247,7 +248,6 @@ namespace Ryujinx.HLE
|
||||||
MultiplayerDisableP2p = multiplayerDisableP2p;
|
MultiplayerDisableP2p = multiplayerDisableP2p;
|
||||||
MultiplayerLdnPassphrase = multiplayerLdnPassphrase;
|
MultiplayerLdnPassphrase = multiplayerLdnPassphrase;
|
||||||
MultiplayerLdnServer = multiplayerLdnServer;
|
MultiplayerLdnServer = multiplayerLdnServer;
|
||||||
TickScalar = tickScalar;
|
|
||||||
Hacks = dirtyHacks ?? [];
|
Hacks = dirtyHacks ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ using Ryujinx.Audio.Backends.CompatLayer;
|
||||||
using Ryujinx.Audio.Integration;
|
using Ryujinx.Audio.Integration;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
|
using Ryujinx.Cpu;
|
||||||
using Ryujinx.Graphics.Gpu;
|
using Ryujinx.Graphics.Gpu;
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.HLE.HOS;
|
using Ryujinx.HLE.HOS;
|
||||||
|
@ -31,7 +32,7 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
public long TickScalar
|
public long TickScalar
|
||||||
{
|
{
|
||||||
get => System?.TickSource?.TickScalar ?? 100;
|
get => System?.TickSource?.TickScalar ?? ITickSource.RealityTickScalar;
|
||||||
set => System.TickSource.TickScalar = value;
|
set => System.TickSource.TickScalar = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
VSyncMode = Configuration.VSyncMode;
|
VSyncMode = Configuration.VSyncMode;
|
||||||
CustomVSyncInterval = Configuration.CustomVSyncInterval;
|
CustomVSyncInterval = Configuration.CustomVSyncInterval;
|
||||||
TickScalar = TurboMode ? Configuration.TickScalar : 100;
|
TickScalar = TurboMode ? Configuration.TickScalar : ITickSource.RealityTickScalar;
|
||||||
System.State.DockedMode = Configuration.EnableDockedMode;
|
System.State.DockedMode = Configuration.EnableDockedMode;
|
||||||
System.PerformanceState.PerformanceMode = System.State.DockedMode ? PerformanceMode.Boost : PerformanceMode.Default;
|
System.PerformanceState.PerformanceMode = System.State.DockedMode ? PerformanceMode.Boost : PerformanceMode.Default;
|
||||||
System.EnablePtc = Configuration.EnablePtc;
|
System.EnablePtc = Configuration.EnablePtc;
|
||||||
|
@ -138,7 +139,7 @@ namespace Ryujinx.HLE
|
||||||
public void ToggleTurbo()
|
public void ToggleTurbo()
|
||||||
{
|
{
|
||||||
TurboMode = !TurboMode;
|
TurboMode = !TurboMode;
|
||||||
TickScalar = TurboMode ? Configuration.TickScalar : 100;
|
TickScalar = TurboMode ? Configuration.TickScalar : ITickSource.RealityTickScalar;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LoadCart(string exeFsDir, string romFsFile = null) => Processes.LoadUnpackedNca(exeFsDir, romFsFile);
|
public bool LoadCart(string exeFsDir, string romFsFile = null) => Processes.LoadUnpackedNca(exeFsDir, romFsFile);
|
||||||
|
|
|
@ -7,7 +7,6 @@ using DiscordRPC;
|
||||||
using Gommon;
|
using Gommon;
|
||||||
using LibHac.Common;
|
using LibHac.Common;
|
||||||
using LibHac.Ns;
|
using LibHac.Ns;
|
||||||
using LibHac.Tools.FsSystem;
|
|
||||||
using Ryujinx.Audio.Backends.Dummy;
|
using Ryujinx.Audio.Backends.Dummy;
|
||||||
using Ryujinx.Audio.Backends.OpenAL;
|
using Ryujinx.Audio.Backends.OpenAL;
|
||||||
using Ryujinx.Audio.Backends.SDL2;
|
using Ryujinx.Audio.Backends.SDL2;
|
||||||
|
@ -36,11 +35,9 @@ using Ryujinx.Graphics.GAL.Multithreading;
|
||||||
using Ryujinx.Graphics.Gpu;
|
using Ryujinx.Graphics.Gpu;
|
||||||
using Ryujinx.Graphics.OpenGL;
|
using Ryujinx.Graphics.OpenGL;
|
||||||
using Ryujinx.Graphics.Vulkan;
|
using Ryujinx.Graphics.Vulkan;
|
||||||
using Ryujinx.HLE;
|
|
||||||
using Ryujinx.HLE.FileSystem;
|
using Ryujinx.HLE.FileSystem;
|
||||||
using Ryujinx.HLE.HOS;
|
using Ryujinx.HLE.HOS;
|
||||||
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
using Ryujinx.HLE.HOS.Services.Account.Acc;
|
||||||
using Ryujinx.HLE.HOS.SystemState;
|
|
||||||
using Ryujinx.Input;
|
using Ryujinx.Input;
|
||||||
using Ryujinx.Input.HLE;
|
using Ryujinx.Input.HLE;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
|
@ -903,54 +900,19 @@ namespace Ryujinx.Ava
|
||||||
_ => new OpenGLRenderer()
|
_ => new OpenGLRenderer()
|
||||||
};
|
};
|
||||||
|
|
||||||
BackendThreading threadingMode = ConfigurationState.Instance.Graphics.BackendThreading;
|
|
||||||
|
|
||||||
bool isGALThreaded = threadingMode == BackendThreading.On || (threadingMode == BackendThreading.Auto && renderer.PreferThreading);
|
|
||||||
if (isGALThreaded)
|
|
||||||
{
|
|
||||||
renderer = new ThreadedRenderer(renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({threadingMode}): {isGALThreaded}");
|
|
||||||
|
|
||||||
// Initialize Configuration.
|
// Initialize Configuration.
|
||||||
MemoryConfiguration memoryConfiguration = ConfigurationState.Instance.System.DramSize.Value;
|
Device = new Switch(ConfigurationState.Instance.CreateHleConfiguration()
|
||||||
|
.Configure(
|
||||||
Device = new Switch(new HLEConfiguration(
|
|
||||||
VirtualFileSystem,
|
VirtualFileSystem,
|
||||||
_viewModel.LibHacHorizonManager,
|
_viewModel.LibHacHorizonManager,
|
||||||
ContentManager,
|
ContentManager,
|
||||||
_accountManager,
|
_accountManager,
|
||||||
_userChannelPersistence,
|
_userChannelPersistence,
|
||||||
renderer,
|
renderer.TryMakeThreaded(ConfigurationState.Instance.Graphics.BackendThreading),
|
||||||
InitializeAudio(),
|
InitializeAudio(),
|
||||||
memoryConfiguration,
|
_viewModel.UiHandler
|
||||||
_viewModel.UiHandler,
|
)
|
||||||
(SystemLanguage)ConfigurationState.Instance.System.Language.Value,
|
);
|
||||||
(RegionCode)ConfigurationState.Instance.System.Region.Value,
|
|
||||||
ConfigurationState.Instance.Graphics.VSyncMode,
|
|
||||||
ConfigurationState.Instance.System.EnableDockedMode,
|
|
||||||
ConfigurationState.Instance.System.EnablePtc,
|
|
||||||
ConfigurationState.Instance.System.EnableInternetAccess,
|
|
||||||
ConfigurationState.Instance.System.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
|
|
||||||
ConfigurationState.Instance.System.FsGlobalAccessLogMode,
|
|
||||||
ConfigurationState.Instance.System.MatchSystemTime
|
|
||||||
? 0
|
|
||||||
: ConfigurationState.Instance.System.SystemTimeOffset,
|
|
||||||
ConfigurationState.Instance.System.TimeZone,
|
|
||||||
ConfigurationState.Instance.System.MemoryManagerMode,
|
|
||||||
ConfigurationState.Instance.System.IgnoreMissingServices,
|
|
||||||
ConfigurationState.Instance.Graphics.AspectRatio,
|
|
||||||
ConfigurationState.Instance.System.AudioVolume,
|
|
||||||
ConfigurationState.Instance.System.UseHypervisor,
|
|
||||||
ConfigurationState.Instance.Multiplayer.LanInterfaceId.Value,
|
|
||||||
ConfigurationState.Instance.Multiplayer.Mode,
|
|
||||||
ConfigurationState.Instance.Multiplayer.DisableP2p,
|
|
||||||
ConfigurationState.Instance.Multiplayer.LdnPassphrase,
|
|
||||||
ConfigurationState.Instance.Multiplayer.GetLdnServer(),
|
|
||||||
ConfigurationState.Instance.Graphics.CustomVSyncInterval,
|
|
||||||
ConfigurationState.Instance.System.TickScalar,
|
|
||||||
ConfigurationState.Instance.Hacks.ShowDirtyHacks ? ConfigurationState.Instance.Hacks.EnabledHacks : null));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IHardwareDeviceDriver InitializeAudio()
|
private static IHardwareDeviceDriver InitializeAudio()
|
||||||
|
@ -1196,6 +1158,9 @@ namespace Ryujinx.Ava
|
||||||
|
|
||||||
private void UpdateShaderCount()
|
private void UpdateShaderCount()
|
||||||
{
|
{
|
||||||
|
if (_displayCount is 0 && _renderer.ProgramCount is 0)
|
||||||
|
return;
|
||||||
|
|
||||||
// If there is a mismatch between total program compile and previous count
|
// If there is a mismatch between total program compile and previous count
|
||||||
// this means new shaders have been compiled and should be displayed.
|
// this means new shaders have been compiled and should be displayed.
|
||||||
if (_renderer.ProgramCount != _previousCount)
|
if (_renderer.ProgramCount != _previousCount)
|
||||||
|
@ -1275,12 +1240,10 @@ namespace Ryujinx.Ava
|
||||||
VSyncModeToggle();
|
VSyncModeToggle();
|
||||||
break;
|
break;
|
||||||
case KeyboardHotkeyState.CustomVSyncIntervalDecrement:
|
case KeyboardHotkeyState.CustomVSyncIntervalDecrement:
|
||||||
Device.DecrementCustomVSyncInterval();
|
_viewModel.CustomVSyncInterval = Device.DecrementCustomVSyncInterval();
|
||||||
_viewModel.CustomVSyncInterval -= 1;
|
|
||||||
break;
|
break;
|
||||||
case KeyboardHotkeyState.CustomVSyncIntervalIncrement:
|
case KeyboardHotkeyState.CustomVSyncIntervalIncrement:
|
||||||
Device.IncrementCustomVSyncInterval();
|
_viewModel.CustomVSyncInterval = Device.IncrementCustomVSyncInterval();
|
||||||
_viewModel.CustomVSyncInterval += 1;
|
|
||||||
break;
|
break;
|
||||||
case KeyboardHotkeyState.TurboMode:
|
case KeyboardHotkeyState.TurboMode:
|
||||||
if (!ConfigurationState.Instance.Hid.Hotkeys.Value.TurboModeWhileHeld)
|
if (!ConfigurationState.Instance.Hid.Hotkeys.Value.TurboModeWhileHeld)
|
||||||
|
|
|
@ -10,6 +10,7 @@ using Ryujinx.Common.Configuration.Hid.Controller.Motion;
|
||||||
using Ryujinx.Common.Configuration.Hid.Keyboard;
|
using Ryujinx.Common.Configuration.Hid.Keyboard;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Common.Utilities;
|
using Ryujinx.Common.Utilities;
|
||||||
|
using Ryujinx.Cpu;
|
||||||
using Ryujinx.Graphics.GAL;
|
using Ryujinx.Graphics.GAL;
|
||||||
using Ryujinx.Graphics.GAL.Multithreading;
|
using Ryujinx.Graphics.GAL.Multithreading;
|
||||||
using Ryujinx.Graphics.OpenGL;
|
using Ryujinx.Graphics.OpenGL;
|
||||||
|
@ -312,31 +313,16 @@ namespace Ryujinx.Headless
|
||||||
return new OpenGLRenderer();
|
return new OpenGLRenderer();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Switch InitializeEmulationContext(WindowBase window, IRenderer renderer, Options options)
|
private static Switch InitializeEmulationContext(WindowBase window, IRenderer renderer, Options options) =>
|
||||||
{
|
new(
|
||||||
BackendThreading threadingMode = options.BackendThreading;
|
new HleConfiguration(
|
||||||
|
|
||||||
bool threadedGAL = threadingMode == BackendThreading.On || (threadingMode == BackendThreading.Auto && renderer.PreferThreading);
|
|
||||||
|
|
||||||
if (threadedGAL)
|
|
||||||
{
|
|
||||||
renderer = new ThreadedRenderer(renderer);
|
|
||||||
}
|
|
||||||
|
|
||||||
HLEConfiguration configuration = new(_virtualFileSystem,
|
|
||||||
_libHacHorizonManager,
|
|
||||||
_contentManager,
|
|
||||||
_accountManager,
|
|
||||||
_userChannelPersistence,
|
|
||||||
renderer,
|
|
||||||
new SDL2HardwareDeviceDriver(),
|
|
||||||
options.DramSize,
|
options.DramSize,
|
||||||
window,
|
|
||||||
options.SystemLanguage,
|
options.SystemLanguage,
|
||||||
options.SystemRegion,
|
options.SystemRegion,
|
||||||
options.VSyncMode,
|
options.VSyncMode,
|
||||||
!options.DisableDockedMode,
|
!options.DisableDockedMode,
|
||||||
!options.DisablePTC,
|
!options.DisablePTC,
|
||||||
|
ITickSource.RealityTickScalar,
|
||||||
options.EnableInternetAccess,
|
options.EnableInternetAccess,
|
||||||
!options.DisableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
|
!options.DisableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
|
||||||
options.FsGlobalAccessLogMode,
|
options.FsGlobalAccessLogMode,
|
||||||
|
@ -352,10 +338,18 @@ namespace Ryujinx.Headless
|
||||||
false,
|
false,
|
||||||
string.Empty,
|
string.Empty,
|
||||||
string.Empty,
|
string.Empty,
|
||||||
options.CustomVSyncInterval,
|
options.CustomVSyncInterval
|
||||||
100);
|
)
|
||||||
|
.Configure(
|
||||||
return new Switch(configuration);
|
_virtualFileSystem,
|
||||||
}
|
_libHacHorizonManager,
|
||||||
|
_contentManager,
|
||||||
|
_accountManager,
|
||||||
|
_userChannelPersistence,
|
||||||
|
renderer.TryMakeThreaded(options.BackendThreading),
|
||||||
|
new SDL2HardwareDeviceDriver(),
|
||||||
|
window
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -862,6 +862,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
|
||||||
Graphics.VSyncMode,
|
Graphics.VSyncMode,
|
||||||
System.EnableDockedMode,
|
System.EnableDockedMode,
|
||||||
System.EnablePtc,
|
System.EnablePtc,
|
||||||
|
System.TickScalar,
|
||||||
System.EnableInternetAccess,
|
System.EnableInternetAccess,
|
||||||
System.EnableFsIntegrityChecks
|
System.EnableFsIntegrityChecks
|
||||||
? IntegrityCheckLevel.ErrorOnInvalid
|
? IntegrityCheckLevel.ErrorOnInvalid
|
||||||
|
@ -882,7 +883,6 @@ namespace Ryujinx.Ava.Utilities.Configuration
|
||||||
Multiplayer.LdnPassphrase,
|
Multiplayer.LdnPassphrase,
|
||||||
Multiplayer.GetLdnServer(),
|
Multiplayer.GetLdnServer(),
|
||||||
Graphics.CustomVSyncInterval,
|
Graphics.CustomVSyncInterval,
|
||||||
System.TickScalar,
|
|
||||||
Hacks.ShowDirtyHacks ? Hacks.EnabledHacks : null);
|
Hacks.ShowDirtyHacks ? Hacks.EnabledHacks : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue