From e625e4251a9a87f39034fc4948544ebcfcf5f586 Mon Sep 17 00:00:00 2001 From: Lightos1 <124387232+Lightos1@users.noreply.github.com> Date: Sat, 21 Mar 2026 18:02:05 +0100 Subject: [PATCH] add sched off code to rewrite --- .../sysmodule/src/board/board_load.cpp | 44 +++++++++++++++++++ .../sysmodule/src/board/board_load.hpp | 1 + 2 files changed, 45 insertions(+) diff --git a/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.cpp b/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.cpp index 73e7cc5f..1c495c04 100644 --- a/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.cpp +++ b/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.cpp @@ -31,6 +31,7 @@ #include #include #include "board_misc.hpp" +#include namespace board { @@ -130,4 +131,47 @@ namespace board { threadClose(&cpuCore2Thread); } + namespace { + constexpr u32 NVschedCtrlEnable = 0x00000601; + constexpr u32 NVschedCtrlDisable = 0x00000602; + } + + void SetGpuSchedulingMode(GpuSchedulingMode mode, GpuSchedulingOverrideMethod method, Result nvCheckSched, u32 fd2) { + if (R_FAILED(nvCheckSched) && method == GpuSchedulingOverrideMethod_NvService) { + return; + } + + u32 temp; + bool enabled = false; + switch (mode) { + case GpuSchedulingMode_DoNotOverride: break; + case GpuSchedulingMode_Disabled: + if (method == GpuSchedulingOverrideMethod_NvService) { + nvIoctl(fd2, NVschedCtrlDisable, &temp); + } else { + enabled = false; + } + break; + case GpuSchedulingMode_Enabled: + if (method == GpuSchedulingOverrideMethod_NvService) { + nvIoctl(fd2, NVschedCtrlEnable, &temp); + } else { + enabled = true; + } + break; + default: + ASSERT_ENUM_VALID(GpuSchedulingMode, mode); + } + + if (method == GpuSchedulingOverrideMethod_Ini) { + constexpr const char *IniPath = "sdmc:/atmosphere/config/system_settings.ini"; + constexpr const char *Section = "am.gpu"; + constexpr const char *Key = "gpu_scheduling_enabled"; + + const char *value = enabled ? "u8!0x1" : "u8!0x0"; + + ini_puts(Section, Key, value, IniPath); + } + } + } diff --git a/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.hpp b/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.hpp index a46fa7b7..6f830738 100644 --- a/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.hpp +++ b/Source/rewrite-hoc-clk/sysmodule/src/board/board_load.hpp @@ -32,5 +32,6 @@ namespace board { void StartLoad(Result nvCheck, u32 fd); void ExitLoad(); u32 GetPartLoad(); + void SetGpuSchedulingMode(GpuSchedulingMode mode, GpuSchedulingOverrideMethod method, Result nvCheckSched, u32 fd2); }