From 66e58aa6a705d31dc7048670d9c3d89407b892d6 Mon Sep 17 00:00:00 2001 From: Isaac Marovitz Date: Mon, 1 Jan 2024 15:35:30 -0800 Subject: [PATCH] iOS - Platform Checks Co-authored-by: riperiperi --- .../CodeGen/Arm64/HardwareCapabilities.cs | 5 ++-- src/ARMeilleure/Native/JitSupportDarwin.cs | 1 + .../Signal/NativeSignalHandlerGenerator.cs | 4 ++-- .../Configuration/AppDataManager.cs | 4 ++++ .../Logging/Targets/ConsoleLogTarget.cs | 18 ++++++++++---- src/Ryujinx.Common/ReleaseInformation.cs | 7 +++++- .../SystemInterop/StdErrAdapter.cs | 5 +++- src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs | 2 +- .../Signal/UnixSignalHandlerRegistration.cs | 4 ++-- .../MoltenVK/MVKInitialization.cs | 1 + src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs | 4 ++-- .../StaticService/Types/IpAddressSetting.cs | 2 +- .../Sockets/Bsd/Impl/WinSockHelper.cs | 6 ++--- src/Ryujinx.Headless.SDL2/Program.cs | 4 ++-- src/Ryujinx.Memory/MemoryBlock.cs | 2 +- src/Ryujinx.Memory/MemoryManagement.cs | 24 +++++++++---------- src/Ryujinx.Memory/MemoryManagementUnix.cs | 1 + src/Ryujinx.Memory/MemoryManagerUnixHelper.cs | 7 +++--- .../Configuration/ConfigurationState.cs | 2 +- src/Ryujinx.Ui.Common/Helper/ObjectiveC.cs | 1 + src/Ryujinx/Ui/Helper/MetalHelper.cs | 1 + 21 files changed, 67 insertions(+), 38 deletions(-) diff --git a/src/ARMeilleure/CodeGen/Arm64/HardwareCapabilities.cs b/src/ARMeilleure/CodeGen/Arm64/HardwareCapabilities.cs index 86afc2b4d..e957f6786 100644 --- a/src/ARMeilleure/CodeGen/Arm64/HardwareCapabilities.cs +++ b/src/ARMeilleure/CodeGen/Arm64/HardwareCapabilities.cs @@ -20,7 +20,7 @@ namespace ARMeilleure.CodeGen.Arm64 LinuxFeatureInfoHwCap2 = (LinuxFeatureFlagsHwCap2)getauxval(AT_HWCAP2); } - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { for (int i = 0; i < _sysctlNames.Length; i++) { @@ -124,12 +124,13 @@ namespace ARMeilleure.CodeGen.Arm64 #endregion - #region macOS + #region Darwin [LibraryImport("libSystem.dylib", SetLastError = true)] private static unsafe partial int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string name, out int oldValue, ref ulong oldSize, IntPtr newValue, ulong newValueSize); [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] private static bool CheckSysctlName(string name) { ulong size = sizeof(int); diff --git a/src/ARMeilleure/Native/JitSupportDarwin.cs b/src/ARMeilleure/Native/JitSupportDarwin.cs index 339460397..5f9266da2 100644 --- a/src/ARMeilleure/Native/JitSupportDarwin.cs +++ b/src/ARMeilleure/Native/JitSupportDarwin.cs @@ -5,6 +5,7 @@ using System.Runtime.Versioning; namespace ARMeilleure.Native { [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] static partial class JitSupportDarwin { [LibraryImport("libarmeilleure-jitsupport", EntryPoint = "armeilleure_jit_memcpy")] diff --git a/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs b/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs index c5e708e16..3f2fbd019 100644 --- a/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs +++ b/src/ARMeilleure/Signal/NativeSignalHandlerGenerator.cs @@ -87,13 +87,13 @@ namespace ARMeilleure.Signal private static Operand GenerateUnixFaultAddress(EmitterContext context, Operand sigInfoPtr) { - ulong structAddressOffset = OperatingSystem.IsMacOS() ? 24ul : 16ul; // si_addr + ulong structAddressOffset = (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) ? 24ul : 16ul; // si_addr return context.Load(OperandType.I64, context.Add(sigInfoPtr, Const(structAddressOffset))); } private static Operand GenerateUnixWriteFlag(EmitterContext context, Operand ucontextPtr) { - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { const ulong McontextOffset = 48; // uc_mcontext Operand ctxPtr = context.Load(OperandType.I64, context.Add(ucontextPtr, Const(McontextOffset))); diff --git a/src/Ryujinx.Common/Configuration/AppDataManager.cs b/src/Ryujinx.Common/Configuration/AppDataManager.cs index e91295331..22e9c577a 100644 --- a/src/Ryujinx.Common/Configuration/AppDataManager.cs +++ b/src/Ryujinx.Common/Configuration/AppDataManager.cs @@ -50,6 +50,10 @@ namespace Ryujinx.Common.Configuration { appDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Application Support"); } + else if (OperatingSystem.IsIOS()) + { + appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + } else { appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); diff --git a/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs index 42ba00cd5..e132618b9 100644 --- a/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs +++ b/src/Ryujinx.Common/Logging/Targets/ConsoleLogTarget.cs @@ -30,15 +30,25 @@ namespace Ryujinx.Common.Logging.Targets public void Log(object sender, LogEventArgs args) { - Console.ForegroundColor = GetLogColor(args.Level); - Console.WriteLine(_formatter.Format(args)); - Console.ResetColor(); + if (OperatingSystem.IsIOS()) + { + Console.WriteLine(_formatter.Format(args)); + } + else + { + Console.ForegroundColor = GetLogColor(args.Level); + Console.WriteLine(_formatter.Format(args)); + Console.ResetColor(); + } } public void Dispose() { GC.SuppressFinalize(this); - Console.ResetColor(); + if (!OperatingSystem.IsIOS()) + { + Console.ResetColor(); + } } } } diff --git a/src/Ryujinx.Common/ReleaseInformation.cs b/src/Ryujinx.Common/ReleaseInformation.cs index 5de8aa568..4c1b3c261 100644 --- a/src/Ryujinx.Common/ReleaseInformation.cs +++ b/src/Ryujinx.Common/ReleaseInformation.cs @@ -40,6 +40,11 @@ namespace Ryujinx.Common return "Android_1.0"; } + if (OperatingSystem.IsIOS()) + { + return "iOS"; + } + try { return Assembly.GetEntryAssembly().GetCustomAttribute().InformationalVersion; @@ -59,7 +64,7 @@ namespace Ryujinx.Common #else public static string GetBaseApplicationDirectory() { - if (IsFlatHubBuild() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic) + if (IsFlatHubBuild() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || PlatformInfo.IsBionic) { return AppDataManager.BaseDirPath; } diff --git a/src/Ryujinx.Common/SystemInterop/StdErrAdapter.cs b/src/Ryujinx.Common/SystemInterop/StdErrAdapter.cs index a04c404d8..a17c28717 100644 --- a/src/Ryujinx.Common/SystemInterop/StdErrAdapter.cs +++ b/src/Ryujinx.Common/SystemInterop/StdErrAdapter.cs @@ -19,7 +19,7 @@ namespace Ryujinx.Common.SystemInterop public StdErrAdapter() { - if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS()) + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { RegisterPosix(); } @@ -27,6 +27,7 @@ namespace Ryujinx.Common.SystemInterop [SupportedOSPlatform("linux")] [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] private void RegisterPosix() { const int StdErrFileno = 2; @@ -44,6 +45,7 @@ namespace Ryujinx.Common.SystemInterop [SupportedOSPlatform("linux")] [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] private async Task EventWorkerAsync(CancellationToken cancellationToken) { using TextReader reader = new StreamReader(_pipeReader, leaveOpen: true); @@ -92,6 +94,7 @@ namespace Ryujinx.Common.SystemInterop [SupportedOSPlatform("linux")] [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] private static Stream CreateFileDescriptorStream(int fd) { return new FileStream( diff --git a/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs b/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs index 83669a354..17a192a1d 100644 --- a/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs +++ b/src/Ryujinx.Cpu/Signal/NativeSignalHandler.cs @@ -88,7 +88,7 @@ namespace Ryujinx.Cpu.Signal ref SignalHandlerConfig config = ref GetConfigRef(); - if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic) + if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic || OperatingSystem.IsIOS()) { _signalHandlerPtr = MapCode(NativeSignalHandlerGenerator.GenerateUnixSignalHandler(_handlerConfig, rangeStructSize, pageSize)); diff --git a/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs b/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs index c20d2c696..43c0a1fe5 100644 --- a/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs +++ b/src/Ryujinx.Cpu/Signal/UnixSignalHandlerRegistration.cs @@ -135,7 +135,7 @@ namespace Ryujinx.Cpu.Signal throw new SystemException($"Could not register SIGSEGV sigaction. Error: {Marshal.GetLastPInvokeErrorMessage()}"); } - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { result = sigaction(SIGBUS, ref sig, out _); @@ -249,7 +249,7 @@ namespace Ryujinx.Cpu.Signal { bool success = sigaction(SIGSEGV, ref oldAction, out SigAction _) == 0; - if (success && OperatingSystem.IsMacOS()) + if (success && (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS())) { success = sigaction(SIGBUS, ref oldAction, out SigAction _) == 0; } diff --git a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs b/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs index 457240aa0..fadfc66dd 100644 --- a/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs +++ b/src/Ryujinx.Graphics.Vulkan/MoltenVK/MVKInitialization.cs @@ -6,6 +6,7 @@ using System.Runtime.Versioning; namespace Ryujinx.Graphics.Vulkan.MoltenVK { [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] public static partial class MVKInitialization { [LibraryImport("libMoltenVK.dylib")] diff --git a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs index 674335c2e..abc67321e 100644 --- a/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs +++ b/src/Ryujinx.Graphics.Vulkan/VulkanRenderer.cs @@ -103,11 +103,11 @@ namespace Ryujinx.Graphics.Vulkan Textures = new HashSet(); Samplers = new HashSet(); - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { MVKInitialization.Initialize(); - // Any device running on MacOS is using MoltenVK, even Intel and AMD vendors. + // Any device running on Darwin is using MoltenVK, even Intel and AMD vendors. IsMoltenVk = true; } } diff --git a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs index 4fa674de9..2927edf29 100644 --- a/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs +++ b/src/Ryujinx.HLE/HOS/Services/Nifm/StaticService/Types/IpAddressSetting.cs @@ -15,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService.Types public IpAddressSetting(IPInterfaceProperties interfaceProperties, UnicastIPAddressInformation unicastIPAddressInformation) { - IsDhcpEnabled = OperatingSystem.IsMacOS() || interfaceProperties.DhcpServerAddresses.Count != 0; + IsDhcpEnabled = (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) || interfaceProperties.DhcpServerAddresses.Count != 0; Address = new IpV4Address(unicastIPAddressInformation.Address); IPv4Mask = new IpV4Address(unicastIPAddressInformation.IPv4Mask); GatewayAddress = (interfaceProperties.GatewayAddresses.Count == 0) ? new IpV4Address() : new IpV4Address(interfaceProperties.GatewayAddresses[0].Address); diff --git a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WinSockHelper.cs b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WinSockHelper.cs index e2ef75f80..9a32d0970 100644 --- a/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WinSockHelper.cs +++ b/src/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/WinSockHelper.cs @@ -91,7 +91,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl { 0, 0 }, }; - private static readonly Dictionary _errorMapMacOs = new() + private static readonly Dictionary _errorMapDarwin = new() { { 35, LinuxError.EAGAIN }, { 11, LinuxError.EDEADLOCK }, @@ -283,9 +283,9 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd.Impl public static LinuxError ConvertError(WsaError errorCode) { - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { - if (_errorMapMacOs.TryGetValue((int)errorCode, out LinuxError errno)) + if (_errorMapDarwin.TryGetValue((int)errorCode, out LinuxError errno)) { return errno; } diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs index e545079b9..3778c99ec 100644 --- a/src/Ryujinx.Headless.SDL2/Program.cs +++ b/src/Ryujinx.Headless.SDL2/Program.cs @@ -343,12 +343,12 @@ namespace Ryujinx.Headless.SDL2 GraphicsConfig.EnableShaderCache = true; - if (OperatingSystem.IsMacOS()) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { if (option.GraphicsBackend == GraphicsBackend.OpenGl) { option.GraphicsBackend = GraphicsBackend.Vulkan; - Logger.Warning?.Print(LogClass.Application, "OpenGL is not supported on macOS, switching to Vulkan!"); + Logger.Warning?.Print(LogClass.Application, "OpenGL is not supported on Darwin, switching to Vulkan!"); } } diff --git a/src/Ryujinx.Memory/MemoryBlock.cs b/src/Ryujinx.Memory/MemoryBlock.cs index f9284ba5b..ee50517d7 100644 --- a/src/Ryujinx.Memory/MemoryBlock.cs +++ b/src/Ryujinx.Memory/MemoryBlock.cs @@ -426,7 +426,7 @@ namespace Ryujinx.Memory return OperatingSystem.IsWindowsVersionAtLeast(10, 0, 17134); } - return OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic; + return OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic; } return true; diff --git a/src/Ryujinx.Memory/MemoryManagement.cs b/src/Ryujinx.Memory/MemoryManagement.cs index 0ec49849b..780a293ea 100644 --- a/src/Ryujinx.Memory/MemoryManagement.cs +++ b/src/Ryujinx.Memory/MemoryManagement.cs @@ -10,7 +10,7 @@ namespace Ryujinx.Memory { return MemoryManagementWindows.Allocate((IntPtr)size); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { return MemoryManagementUnix.Allocate(size, forJit); } @@ -26,7 +26,7 @@ namespace Ryujinx.Memory { return MemoryManagementWindows.Reserve((IntPtr)size, viewCompatible); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { return MemoryManagementUnix.Reserve(size, forJit); } @@ -42,7 +42,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.Commit(address, (IntPtr)size); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.Commit(address, size, forJit); } @@ -58,7 +58,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.Decommit(address, (IntPtr)size); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.Decommit(address, size); } @@ -74,7 +74,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.MapView(sharedMemory, srcOffset, address, (IntPtr)size, owner); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.MapView(sharedMemory, srcOffset, address, size); } @@ -90,7 +90,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.UnmapView(sharedMemory, address, (IntPtr)size, owner); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.UnmapView(address, size); } @@ -108,7 +108,7 @@ namespace Ryujinx.Memory { result = MemoryManagementWindows.Reprotect(address, (IntPtr)size, permission, forView); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { result = MemoryManagementUnix.Reprotect(address, size, permission); } @@ -129,7 +129,7 @@ namespace Ryujinx.Memory { return MemoryManagementWindows.Free(address, (IntPtr)size); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { return MemoryManagementUnix.Free(address); } @@ -145,7 +145,7 @@ namespace Ryujinx.Memory { return MemoryManagementWindows.CreateSharedMemory((IntPtr)size, reserve); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { return MemoryManagementUnix.CreateSharedMemory(size, reserve); } @@ -161,7 +161,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.DestroySharedMemory(handle); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.DestroySharedMemory(handle); } @@ -177,7 +177,7 @@ namespace Ryujinx.Memory { return MemoryManagementWindows.MapSharedMemory(handle); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { return MemoryManagementUnix.MapSharedMemory(handle, size); } @@ -193,7 +193,7 @@ namespace Ryujinx.Memory { MemoryManagementWindows.UnmapSharedMemory(address); } - else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || Ryujinx.Common.PlatformInfo.IsBionic) + else if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || Ryujinx.Common.PlatformInfo.IsBionic) { MemoryManagementUnix.UnmapSharedMemory(address, size); } diff --git a/src/Ryujinx.Memory/MemoryManagementUnix.cs b/src/Ryujinx.Memory/MemoryManagementUnix.cs index a4020c026..88f10e327 100644 --- a/src/Ryujinx.Memory/MemoryManagementUnix.cs +++ b/src/Ryujinx.Memory/MemoryManagementUnix.cs @@ -9,6 +9,7 @@ namespace Ryujinx.Memory { [SupportedOSPlatform("linux")] [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] [SupportedOSPlatform("android")] static class MemoryManagementUnix { diff --git a/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs b/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs index a0d943d35..543bed803 100644 --- a/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs +++ b/src/Ryujinx.Memory/MemoryManagerUnixHelper.cs @@ -6,6 +6,7 @@ namespace Ryujinx.Memory { [SupportedOSPlatform("linux")] [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] public static partial class MemoryManagerUnixHelper { [Flags] @@ -117,7 +118,7 @@ namespace Ryujinx.Memory { result |= MAP_ANONYMOUS_LINUX_GENERIC; } - else if (OperatingSystem.IsMacOS()) + else if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { result |= MAP_ANONYMOUS_DARWIN; } @@ -133,7 +134,7 @@ namespace Ryujinx.Memory { result |= MAP_NORESERVE_LINUX_GENERIC; } - else if (OperatingSystem.IsMacOS()) + else if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { result |= MAP_NORESERVE_DARWIN; } @@ -149,7 +150,7 @@ namespace Ryujinx.Memory { result |= MAP_UNLOCKED_LINUX_GENERIC; } - else if (OperatingSystem.IsMacOS()) + else if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS()) { // FIXME: Doesn't exist on Darwin } diff --git a/src/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs b/src/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs index b017d384c..52575a7e3 100644 --- a/src/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs +++ b/src/Ryujinx.Ui.Common/Configuration/ConfigurationState.cs @@ -1536,7 +1536,7 @@ namespace Ryujinx.Ui.Common.Configuration { // Any system running macOS or returning any amount of valid Vulkan devices should default to Vulkan. // Checks for if the Vulkan version and featureset is compatible should be performed within VulkanRenderer. - if (OperatingSystem.IsMacOS() || VulkanRenderer.GetPhysicalDevices().Length > 0) + if (OperatingSystem.IsMacOS() || OperatingSystem.IsIOS() || VulkanRenderer.GetPhysicalDevices().Length > 0) { return GraphicsBackend.Vulkan; } diff --git a/src/Ryujinx.Ui.Common/Helper/ObjectiveC.cs b/src/Ryujinx.Ui.Common/Helper/ObjectiveC.cs index af8723e2f..16a67ecb2 100644 --- a/src/Ryujinx.Ui.Common/Helper/ObjectiveC.cs +++ b/src/Ryujinx.Ui.Common/Helper/ObjectiveC.cs @@ -5,6 +5,7 @@ using System.Runtime.Versioning; namespace Ryujinx.Ui.Common.Helper { [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] public static partial class ObjectiveC { private const string ObjCRuntime = "/usr/lib/libobjc.A.dylib"; diff --git a/src/Ryujinx/Ui/Helper/MetalHelper.cs b/src/Ryujinx/Ui/Helper/MetalHelper.cs index a7af2aed2..f46a5e36e 100644 --- a/src/Ryujinx/Ui/Helper/MetalHelper.cs +++ b/src/Ryujinx/Ui/Helper/MetalHelper.cs @@ -8,6 +8,7 @@ namespace Ryujinx.Ui.Helper public delegate void UpdateBoundsCallbackDelegate(Window window); [SupportedOSPlatform("macos")] + [SupportedOSPlatform("ios")] static partial class MetalHelper { private const string LibObjCImport = "/usr/lib/libobjc.A.dylib";