diff options
| author | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 00:50:13 -0400 |
|---|---|---|
| committer | Takoroka <137927095+Takoroka@users.noreply.github.com> | 2026-10-28 00:50:13 -0400 |
| commit | e6e0304303ba5280c318e6f66e9d5ea30d375060 (patch) | |
| tree | c3b89a734da9a32f4ebbfcd510e1dd082079d446 /src/video_core/engines/puller.cpp | |
| parent | a5e528e2d0bc784ebf24850e5913cece912c685e (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.cpp | 6 |
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())); } |
