aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service
diff options
context:
space:
mode:
authorduck912 <350528965+Duck912@users.noreply.github.com>2026-10-31 00:42:26 -0400
committerDuck912 <350528965+Duck912@users.noreply.github.com>2026-11-01 14:58:49 -0500
commit681d50cd9cadf0b2205311dc20c84a9e774898d9 (patch)
tree98cb9b25a936d268321a8ee5f9cc61c6b6768963 /src/core/hle/service
parent210fb0cb690318e8ff65a042cfecb8dc345a66ab (diff)
nx2: report the class family flags in the GPU characteristics
The Switch 2 SDK filters its class enumeration by flags bits 40..43 (2D, 3D, compute and inline-to-memory) before it picks its context classes. Without them Fire Emblem: Fortune's Weave tears NVN down at boot (2162-0001). Bisected against the Eden NS2 tree's characteristics block; its other differences are not needed. Assisted-by: Claude Opus 5.5 (bisecting and drafting) Signed-off-by: duck912 <350528965+Duck912@users.noreply.github.com>
Diffstat (limited to 'src/core/hle/service')
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
index c13ad4fbff..cf4a473496 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
@@ -228,6 +228,9 @@ void ApplyNx2Characteristics(GC& gc) {
if (remap) {
gc.flags |= 1ULL << 35;
}
+ // Bits 40..43: the 2D, 3D, compute and inline-to-memory class families. The SDK filters its
+ // class enumeration by them; without them Fire Emblem: Fortune's Weave aborts at boot.
+ gc.flags |= 0xfULL << 40;
// The Switch 2 layout keeps nine s16 interface versions at 0x70..0x80 (like nvgpu's
// *_ioctl_nr_last); its NvRm requires e.g. [0x78] >= 6 and enables features above 0xa, 0x1f