Android fixes and features

* Jit cache eviction (fixes out of memory errors in some games)

* Low power PPTC

* Fix 'unknown' games displayed when using game folder with subfolders

* Turn off NCE and PPTC by default
This commit is contained in:
KeatonTheBot
2025-06-02 21:47:55 -05:00
parent 3af88ad2e6
commit fda90239bc
58 changed files with 914 additions and 190 deletions
@@ -79,6 +79,8 @@ namespace LibKenjinx
int vSyncMode,
bool enableDockedMode,
bool enablePtc,
bool enableLowPowerPtc,
bool enableJitCacheEviction,
bool enableInternetAccess,
bool enableFsIntegrityChecks,
int fsGlobalAccessLogMode,
@@ -98,6 +100,8 @@ namespace LibKenjinx
(VSyncMode)vSyncMode,
enableDockedMode,
enablePtc,
enableLowPowerPtc,
enableJitCacheEviction,
enableInternetAccess,
enableFsIntegrityChecks,
fsGlobalAccessLogMode,
+4
View File
@@ -26,6 +26,8 @@ namespace LibKenjinx
VSyncMode vSyncMode,
bool enableDockedMode,
bool enablePtc,
bool enableLowPowerPtc,
bool enableJitCacheEviction,
bool enableInternetAccess,
bool enableFsIntegrityChecks,
int fsGlobalAccessLogMode,
@@ -45,6 +47,8 @@ namespace LibKenjinx
vSyncMode,
enableDockedMode,
enablePtc,
enableLowPowerPtc,
enableJitCacheEviction,
enableInternetAccess,
enableFsIntegrityChecks,
fsGlobalAccessLogMode,
+4
View File
@@ -10,6 +10,7 @@ using Ryujinx.Graphics.Gpu;
using Ryujinx.Graphics.Gpu.Shader;
using Ryujinx.Graphics.OpenGL;
using Ryujinx.Graphics.Vulkan;
using Ryujinx.UI.Common.Configuration;
using Silk.NET.Vulkan;
using System;
using System.Collections.Generic;
@@ -94,6 +95,9 @@ namespace LibKenjinx
{
return;
}
ARMeilleure.Optimizations.EcoFriendly = SwitchDevice!.EnableLowPowerPtc;
ARMeilleure.Optimizations.CacheEviction = SwitchDevice!.EnableJitCacheEviction;
var device = SwitchDevice!.EmulationContext!;
_gpuDoneEvent = new ManualResetEvent(true);
+4
View File
@@ -41,6 +41,8 @@ namespace LibKenjinx
VSyncMode vSyncMode,
bool enableDockedMode,
bool enablePtc,
bool enableLowPowerPtc,
bool enableJitCacheEviction,
bool enableInternetAccess,
bool enableFsIntegrityChecks,
int fsGlobalAccessLogMode,
@@ -55,6 +57,8 @@ namespace LibKenjinx
vSyncMode,
enableDockedMode,
enablePtc,
enableLowPowerPtc,
enableJitCacheEviction,
enableInternetAccess,
enableFsIntegrityChecks,
fsGlobalAccessLogMode,
+13 -3
View File
@@ -419,7 +419,7 @@ namespace LibKenjinx
}
// Return the ControlFS
controlFs = controlNca?.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None);
controlFs = controlNca?.OpenFileSystem(NcaSectionType.Data, SwitchDevice.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None);
titleId = controlNca?.Header.TitleId.ToString("x16");
}
@@ -486,7 +486,7 @@ namespace LibKenjinx
if (patchNca != null && controlNca != null)
{
updatedControlFs = controlNca.OpenFileSystem(NcaSectionType.Data, IntegrityCheckLevel.None);
updatedControlFs = controlNca.OpenFileSystem(NcaSectionType.Data, SwitchDevice.EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None);
return true;
}
@@ -708,6 +708,10 @@ namespace LibKenjinx
public InputManager? InputManager { get; set; }
public Switch? EmulationContext { get; set; }
public IHostUIHandler? HostUiHandler { get; set; }
public bool EnableLowPowerPtc { get; set; }
public bool EnableJitCacheEviction { get; set; }
public bool EnableFsIntegrityChecks { get; set; }
internal void DisposeContext()
{
@@ -803,6 +807,8 @@ namespace LibKenjinx
VSyncMode vSyncMode,
bool enableDockedMode,
bool enablePtc,
bool enableLowPowerPtc,
bool enableJitCacheEviction,
bool enableInternetAccess,
bool enableFsIntegrityChecks,
int fsGlobalAccessLogMode,
@@ -824,6 +830,10 @@ namespace LibKenjinx
renderer = new ThreadedRenderer(renderer);
}
EnableLowPowerPtc = enableLowPowerPtc;
EnableJitCacheEviction = enableJitCacheEviction;
EnableFsIntegrityChecks = enableFsIntegrityChecks;
HLEConfiguration configuration = new HLEConfiguration(VirtualFileSystem,
LibHacHorizonManager,
ContentManager,
@@ -839,7 +849,7 @@ namespace LibKenjinx
enableDockedMode,
enablePtc,
enableInternetAccess,
enableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
EnableFsIntegrityChecks ? IntegrityCheckLevel.ErrorOnInvalid : IntegrityCheckLevel.None,
fsGlobalAccessLogMode,
0,
timeZone,