From 74c3c3780588791217f889405f316d7b32d459a0 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sun, 6 Aug 2023 01:12:49 +0300 Subject: [PATCH] [GSP::GPU] Correct setBufferSwap (also add a panic until a test case appears) --- src/core/services/gsp_gpu.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/services/gsp_gpu.cpp b/src/core/services/gsp_gpu.cpp index d9c31ed7..5f11a5e1 100644 --- a/src/core/services/gsp_gpu.cpp +++ b/src/core/services/gsp_gpu.cpp @@ -263,14 +263,20 @@ void GPUService::setAxiConfigQoSMode(u32 messagePointer) { void GPUService::setBufferSwap(u32 messagePointer) { FramebufferInfo info{}; - const u32 screenId = mem.read32(messagePointer + 4); // Selects either PDC0 or PDC1 + const u32 screenId = mem.read32(messagePointer + 4); // Selects either PDC0 or PDC1 info.activeFb = mem.read32(messagePointer + 8); info.leftFramebufferVaddr = mem.read32(messagePointer + 12); info.rightFramebufferVaddr = mem.read32(messagePointer + 16); info.stride = mem.read32(messagePointer + 20); info.format = mem.read32(messagePointer + 24); - info.displayFb = mem.read32(messagePointer + 28); // Selects either framebuffer A or B + info.displayFb = mem.read32(messagePointer + 28); // Selects either framebuffer A or B + + log("GSP::GPU::SetBufferSwap\n"); + Helpers::panic("Untested GSP::GPU::SetBufferSwap call"); + setBufferSwapImpl(screenId, info); + mem.write32(messagePointer, IPC::responseHeader(0x05, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); } // Seems to also be completely undocumented