aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/engines/puller.cpp
diff options
context:
space:
mode:
authorTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 00:50:13 -0400
committerTakoroka <137927095+Takoroka@users.noreply.github.com>2026-10-28 00:50:13 -0400
commite6e0304303ba5280c318e6f66e9d5ea30d375060 (patch)
treec3b89a734da9a32f4ebbfcd510e1dd082079d446 /src/video_core/engines/puller.cpp
parenta5e528e2d0bc784ebf24850e5913cece912c685e (diff)
nx2: title 4 runs past its loading screen without GPU stalls
- Native QMD: a launch whose shader Eden can't translate still completes and fires its releases (the console never fails a launch; queues wait on them). - QMD releases with flag bit 19 are max releases: NVN2 tracks QMD completion in a word other releases also advance, so a plain write moved it backwards. - Ampere lowering: LDSM.16.M88.{1,2,4} (SHFL + LDS), IMAD with a negated uniform addend, strong LDG (bit 77), 2D TLD4 gather, RED MIN/MAX/..., AST of RZ. 210 of the 214 shaders title 4 uses after its menu now lower. - Maxwell3D: ignore constant buffer binds to slots >= 18 instead of writing past the state array. - Debug: EDEN_NX2_SEM_WATCH covers QMD and compute-macro releases and logs address spaces; EDEN_NX2_3D_METHODS logs the first write to each 3D method; constant buffer binds are logged once per stage/slot.
Diffstat (limited to 'src/video_core/engines/puller.cpp')
-rw-r--r--src/video_core/engines/puller.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/video_core/engines/puller.cpp b/src/video_core/engines/puller.cpp
index 047e383b85..f4aaed6036 100644
--- a/src/video_core/engines/puller.cpp
+++ b/src/video_core/engines/puller.cpp
@@ -170,8 +170,10 @@ void Puller::ProcessSemaphoreTriggerMethod(DmaPusher& dma_pusher) {
return value ? GPUVAddr{std::strtoull(value, nullptr, 16)} : GPUVAddr{};
}();
if (watch != 0 && (regs.semaphore_address.SemaphoreAddress() & ~GPUVAddr{0xf}) == watch) {
- LOG_INFO(HW_GPU, "Semaphore watch: channel {} op {} {:#x} value {:#x} (now {:#x})",
- dma_pusher.channel_state.bind_id, static_cast<u32>(op),
+ LOG_INFO(HW_GPU, "Semaphore watch: channel {} as {} device {:#x} op {} {:#x} value {:#x} (now {:#x})",
+ dma_pusher.channel_state.bind_id, dma_pusher.memory_manager.GetID(),
+ dma_pusher.memory_manager.GpuToCpuAddress(regs.semaphore_address.SemaphoreAddress()).value_or(0),
+ static_cast<u32>(op),
regs.semaphore_address.SemaphoreAddress(), regs.semaphore_sequence,
dma_pusher.memory_manager.Read<u32>(regs.semaphore_address.SemaphoreAddress()));
}