aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 12:03:11 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 12:03:11 -0400
commitd3a0adb2ef02182815507f0d069af788586e2642 (patch)
tree0ef9cb6df524b5fa522a01b9e3d28746b13e56f0 /src/core/hle/kernel
parent053d8c51847c4886c36393e7505278794625ba81 (diff)
Switch 2: back GPU-only regions outside the application pool
nx2:gpu 214 regions are memory the graphics server keeps itself, but Eden took their pages from the application pool: title 4's six 300 MB regions left it 1.8 GB less than the 9.55 GiB the kernel reports, all of which its heap and VAMM plan to use. Add 8 GiB of DRAM to the 12 GB layout for the non-secure system pool and back the regions from there; the device memory tracker now covers 32 GiB of physical memory.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp2
-rw-r--r--src/core/hle/kernel/board/nintendo/nx/k_system_control.h4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
index 3343d1d282..ba4737e25f 100644
--- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
+++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp
@@ -94,7 +94,7 @@ size_t KSystemControl::Init::GetIntendedMemorySize() {
case Smc::MemorySize_10GB:
return 10_GiB;
case Smc::MemorySize_12GB:
- return 12_GiB;
+ return 12_GiB + KSystemControl::Nx2GraphicsServerMemorySize;
}
}
diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
index 41a25ba1c8..cc5572bde8 100644
--- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
+++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.h
@@ -21,6 +21,10 @@ public:
// This can be overridden as needed.
static constexpr size_t SecureAppletMemorySize = 4 * 1024 * 1024; // 4_MB
+ // Extra DRAM on the 12 GB layout for memory the Switch 2 graphics server keeps itself (nx2:gpu
+ // 214 GPU-only regions). It sits in the non-secure system pool, outside the application pool.
+ static constexpr size_t Nx2GraphicsServerMemorySize = 8ULL * 1024 * 1024 * 1024; // 8_GiB
+
public:
class Init {
public: