mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-24 04:37:42 +02:00
merge
This commit is contained in:
commit
776c0cb5cf
6 changed files with 96 additions and 35 deletions
|
@ -1,4 +1,6 @@
|
||||||
using Ryujinx.Common.Configuration;
|
using Ryujinx.Common.Configuration;
|
||||||
|
using Ryujinx.Common.Logging;
|
||||||
|
using Ryujinx.Graphics.GAL.Multithreading;
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
|
@ -10,6 +12,20 @@ namespace Ryujinx.Graphics.GAL
|
||||||
|
|
||||||
bool PreferThreading { get; }
|
bool PreferThreading { get; }
|
||||||
|
|
||||||
|
public IRenderer TryMakeThreaded(BackendThreading backendThreading = BackendThreading.Auto)
|
||||||
|
{
|
||||||
|
if (backendThreading is BackendThreading.On ||
|
||||||
|
(backendThreading is BackendThreading.Auto && PreferThreading))
|
||||||
|
{
|
||||||
|
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({backendThreading}): True");
|
||||||
|
return new ThreadedRenderer(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.Info?.PrintMsg(LogClass.Gpu, $"Backend Threading ({backendThreading}): False");
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
IPipeline Pipeline { get; }
|
IPipeline Pipeline { get; }
|
||||||
|
|
||||||
IWindow Window { get; }
|
IWindow Window { get; }
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnMitm
|
||||||
|
|
||||||
private readonly LanDiscovery _lanDiscovery;
|
private readonly LanDiscovery _lanDiscovery;
|
||||||
|
|
||||||
public LdnMitmClient(HLEConfiguration config)
|
public LdnMitmClient(HleConfiguration config)
|
||||||
{
|
{
|
||||||
UnicastIPAddressInformation localIpInterface = NetworkHelpers.GetLocalInterface(config.MultiplayerLanInterfaceId).Item2;
|
UnicastIPAddressInformation localIpInterface = NetworkHelpers.GetLocalInterface(config.MultiplayerLanInterfaceId).Item2;
|
||||||
|
|
||||||
|
|
|
@ -51,13 +51,13 @@ namespace Ryujinx.HLE.HOS.Services.Ldn.UserServiceCreator.LdnRyu
|
||||||
private string _passphrase;
|
private string _passphrase;
|
||||||
private byte[] _gameVersion = new byte[0x10];
|
private byte[] _gameVersion = new byte[0x10];
|
||||||
|
|
||||||
private readonly HLEConfiguration _config;
|
private readonly HleConfiguration _config;
|
||||||
|
|
||||||
public event EventHandler<NetworkChangeEventArgs> NetworkChange;
|
public event EventHandler<NetworkChangeEventArgs> NetworkChange;
|
||||||
|
|
||||||
public ProxyConfig Config { get; private set; }
|
public ProxyConfig Config { get; private set; }
|
||||||
|
|
||||||
public LdnMasterProxyClient(string address, int port, HLEConfiguration config) : base(address, port)
|
public LdnMasterProxyClient(string address, int port, HleConfiguration config) : base(address, port)
|
||||||
{
|
{
|
||||||
if (ProxyHelpers.SupportsNoDelay())
|
if (ProxyHelpers.SupportsNoDelay())
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,55 +15,55 @@ namespace Ryujinx.HLE
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// HLE configuration.
|
/// HLE configuration.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class HLEConfiguration
|
public class HleConfiguration
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The virtual file system used by the FS service.
|
/// The virtual file system used by the FS service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly VirtualFileSystem VirtualFileSystem;
|
internal VirtualFileSystem VirtualFileSystem { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The manager for handling a LibHac Horizon instance.
|
/// The manager for handling a LibHac Horizon instance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly LibHacHorizonManager LibHacHorizonManager;
|
internal LibHacHorizonManager LibHacHorizonManager { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The account manager used by the account service.
|
/// The account manager used by the account service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly AccountManager AccountManager;
|
internal AccountManager AccountManager { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The content manager used by the NCM service.
|
/// The content manager used by the NCM service.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly ContentManager ContentManager;
|
internal ContentManager ContentManager { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The persistent information between run for multi-application capabilities.
|
/// The persistent information between run for multi-application capabilities.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
public readonly UserChannelPersistence UserChannelPersistence;
|
public UserChannelPersistence UserChannelPersistence { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The GPU renderer to use for all GPU operations.
|
/// The GPU renderer to use for all GPU operations.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly IRenderer GpuRenderer;
|
internal IRenderer GpuRenderer { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The audio device driver to use for all audio operations.
|
/// The audio device driver to use for all audio operations.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly IHardwareDeviceDriver AudioDeviceDriver;
|
internal IHardwareDeviceDriver AudioDeviceDriver { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The handler for various UI related operations needed outside of HLE.
|
/// The handler for various UI related operations needed outside of HLE.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
internal readonly IHostUIHandler HostUIHandler;
|
internal IHostUIHandler HostUIHandler { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Control the memory configuration used by the emulation context.
|
/// Control the memory configuration used by the emulation context.
|
||||||
|
@ -200,15 +200,7 @@ namespace Ryujinx.HLE
|
||||||
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
/// <remarks>This cannot be changed after <see cref="Switch"/> instantiation.</remarks>
|
||||||
public EnabledDirtyHack[] Hacks { internal get; set; }
|
public EnabledDirtyHack[] Hacks { internal get; set; }
|
||||||
|
|
||||||
public HLEConfiguration(VirtualFileSystem virtualFileSystem,
|
public HleConfiguration(MemoryConfiguration memoryConfiguration,
|
||||||
LibHacHorizonManager libHacHorizonManager,
|
|
||||||
ContentManager contentManager,
|
|
||||||
AccountManager accountManager,
|
|
||||||
UserChannelPersistence userChannelPersistence,
|
|
||||||
IRenderer gpuRenderer,
|
|
||||||
IHardwareDeviceDriver audioDeviceDriver,
|
|
||||||
MemoryConfiguration memoryConfiguration,
|
|
||||||
IHostUIHandler hostUIHandler,
|
|
||||||
SystemLanguage systemLanguage,
|
SystemLanguage systemLanguage,
|
||||||
RegionCode region,
|
RegionCode region,
|
||||||
VSyncMode vSyncMode,
|
VSyncMode vSyncMode,
|
||||||
|
@ -233,15 +225,7 @@ namespace Ryujinx.HLE
|
||||||
long tickScalar,
|
long tickScalar,
|
||||||
EnabledDirtyHack[] dirtyHacks = null)
|
EnabledDirtyHack[] dirtyHacks = null)
|
||||||
{
|
{
|
||||||
VirtualFileSystem = virtualFileSystem;
|
|
||||||
LibHacHorizonManager = libHacHorizonManager;
|
|
||||||
AccountManager = accountManager;
|
|
||||||
ContentManager = contentManager;
|
|
||||||
UserChannelPersistence = userChannelPersistence;
|
|
||||||
GpuRenderer = gpuRenderer;
|
|
||||||
AudioDeviceDriver = audioDeviceDriver;
|
|
||||||
MemoryConfiguration = memoryConfiguration;
|
MemoryConfiguration = memoryConfiguration;
|
||||||
HostUIHandler = hostUIHandler;
|
|
||||||
SystemLanguage = systemLanguage;
|
SystemLanguage = systemLanguage;
|
||||||
Region = region;
|
Region = region;
|
||||||
VSyncMode = vSyncMode;
|
VSyncMode = vSyncMode;
|
||||||
|
@ -266,5 +250,30 @@ namespace Ryujinx.HLE
|
||||||
TickScalar = tickScalar;
|
TickScalar = tickScalar;
|
||||||
Hacks = dirtyHacks ?? [];
|
Hacks = dirtyHacks ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set the pre-configured services to use for this <see cref="HleConfiguration"/> instance.
|
||||||
|
/// </summary>
|
||||||
|
public HleConfiguration Configure(
|
||||||
|
VirtualFileSystem virtualFileSystem,
|
||||||
|
LibHacHorizonManager libHacHorizonManager,
|
||||||
|
ContentManager contentManager,
|
||||||
|
AccountManager accountManager,
|
||||||
|
UserChannelPersistence userChannelPersistence,
|
||||||
|
IRenderer gpuRenderer,
|
||||||
|
IHardwareDeviceDriver audioDeviceDriver,
|
||||||
|
IHostUIHandler hostUIHandler
|
||||||
|
)
|
||||||
|
{
|
||||||
|
VirtualFileSystem = virtualFileSystem;
|
||||||
|
LibHacHorizonManager = libHacHorizonManager;
|
||||||
|
AccountManager = accountManager;
|
||||||
|
ContentManager = contentManager;
|
||||||
|
UserChannelPersistence = userChannelPersistence;
|
||||||
|
GpuRenderer = gpuRenderer;
|
||||||
|
AudioDeviceDriver = audioDeviceDriver;
|
||||||
|
HostUIHandler = hostUIHandler;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,7 +20,7 @@ namespace Ryujinx.HLE
|
||||||
{
|
{
|
||||||
public static Switch Shared { get; private set; }
|
public static Switch Shared { get; private set; }
|
||||||
|
|
||||||
public HLEConfiguration Configuration { get; }
|
public HleConfiguration Configuration { get; }
|
||||||
public IHardwareDeviceDriver AudioDeviceDriver { get; }
|
public IHardwareDeviceDriver AudioDeviceDriver { get; }
|
||||||
public MemoryBlock Memory { get; }
|
public MemoryBlock Memory { get; }
|
||||||
public GpuContext Gpu { get; }
|
public GpuContext Gpu { get; }
|
||||||
|
@ -52,7 +52,7 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
public DirtyHacks DirtyHacks { get; }
|
public DirtyHacks DirtyHacks { get; }
|
||||||
|
|
||||||
public Switch(HLEConfiguration configuration)
|
public Switch(HleConfiguration configuration)
|
||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(configuration.GpuRenderer);
|
ArgumentNullException.ThrowIfNull(configuration.GpuRenderer);
|
||||||
ArgumentNullException.ThrowIfNull(configuration.AudioDeviceDriver);
|
ArgumentNullException.ThrowIfNull(configuration.AudioDeviceDriver);
|
||||||
|
@ -103,16 +103,20 @@ namespace Ryujinx.HLE
|
||||||
Gpu.GPFifo.DispatchCalls();
|
Gpu.GPFifo.DispatchCalls();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void IncrementCustomVSyncInterval()
|
public int IncrementCustomVSyncInterval()
|
||||||
{
|
{
|
||||||
CustomVSyncInterval += 1;
|
CustomVSyncInterval += 1;
|
||||||
UpdateVSyncInterval();
|
UpdateVSyncInterval();
|
||||||
|
|
||||||
|
return CustomVSyncInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DecrementCustomVSyncInterval()
|
public int DecrementCustomVSyncInterval()
|
||||||
{
|
{
|
||||||
CustomVSyncInterval -= 1;
|
CustomVSyncInterval -= 1;
|
||||||
UpdateVSyncInterval();
|
UpdateVSyncInterval();
|
||||||
|
|
||||||
|
return CustomVSyncInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateVSyncInterval()
|
public void UpdateVSyncInterval()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
using ARMeilleure;
|
using ARMeilleure;
|
||||||
using Gommon;
|
using Gommon;
|
||||||
using Ryujinx.Ava.Utilities.AppLibrary;
|
using LibHac.Tools.FsSystem;
|
||||||
using Ryujinx.Ava.Utilities.Configuration.System;
|
using Ryujinx.Ava.Utilities.Configuration.System;
|
||||||
using Ryujinx.Ava.Utilities.Configuration.UI;
|
using Ryujinx.Ava.Utilities.Configuration.UI;
|
||||||
using Ryujinx.Common;
|
using Ryujinx.Common;
|
||||||
|
@ -11,6 +11,7 @@ using Ryujinx.Common.Helper;
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.Common.Utilities;
|
using Ryujinx.Common.Utilities;
|
||||||
using Ryujinx.HLE;
|
using Ryujinx.HLE;
|
||||||
|
using Ryujinx.HLE.HOS.SystemState;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using RyuLogger = Ryujinx.Common.Logging.Logger;
|
using RyuLogger = Ryujinx.Common.Logging.Logger;
|
||||||
|
@ -19,7 +20,7 @@ namespace Ryujinx.Ava.Utilities.Configuration
|
||||||
{
|
{
|
||||||
public partial class ConfigurationState
|
public partial class ConfigurationState
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// UI configuration section
|
/// UI configuration section
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UISection
|
public class UISection
|
||||||
|
@ -852,5 +853,36 @@ namespace Ryujinx.Ava.Utilities.Configuration
|
||||||
EnableHardwareAcceleration = new ReactiveObject<bool>();
|
EnableHardwareAcceleration = new ReactiveObject<bool>();
|
||||||
HideCursor = new ReactiveObject<HideCursorMode>();
|
HideCursor = new ReactiveObject<HideCursorMode>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HleConfiguration CreateHleConfiguration() =>
|
||||||
|
new(
|
||||||
|
System.DramSize,
|
||||||
|
(SystemLanguage)System.Language.Value,
|
||||||
|
(RegionCode)System.Region.Value,
|
||||||
|
Graphics.VSyncMode,
|
||||||
|
System.EnableDockedMode,
|
||||||
|
System.EnablePtc,
|
||||||
|
System.EnableInternetAccess,
|
||||||
|
System.EnableFsIntegrityChecks
|
||||||
|
? IntegrityCheckLevel.ErrorOnInvalid
|
||||||
|
: IntegrityCheckLevel.None,
|
||||||
|
System.FsGlobalAccessLogMode,
|
||||||
|
System.MatchSystemTime
|
||||||
|
? 0
|
||||||
|
: System.SystemTimeOffset,
|
||||||
|
System.TimeZone,
|
||||||
|
System.MemoryManagerMode,
|
||||||
|
System.IgnoreMissingServices,
|
||||||
|
Graphics.AspectRatio,
|
||||||
|
System.AudioVolume,
|
||||||
|
System.UseHypervisor,
|
||||||
|
Multiplayer.LanInterfaceId,
|
||||||
|
Multiplayer.Mode,
|
||||||
|
Multiplayer.DisableP2p,
|
||||||
|
Multiplayer.LdnPassphrase,
|
||||||
|
Multiplayer.GetLdnServer(),
|
||||||
|
Graphics.CustomVSyncInterval,
|
||||||
|
System.TickScalar,
|
||||||
|
Hacks.ShowDirtyHacks ? Hacks.EnabledHacks : null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue