From 337ec6b721accd855e286aa2134be932e6e12e72 Mon Sep 17 00:00:00 2001 From: Samuliak Date: Sat, 4 Jan 2025 17:02:03 +0100 Subject: [PATCH] fix: GPU capture button not working --- src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp | 3 +++ src/gui/MainWindow.cpp | 14 ++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp b/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp index 19a4b55d..c5bdd335 100644 --- a/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/Metal/MetalRenderer.cpp @@ -188,6 +188,9 @@ MetalRenderer::MetalRenderer() m_copyBufferToBufferPipeline = new MetalVoidVertexPipeline(this, utilityLibrary, "vertexCopyBufferToBuffer"); utilityLibrary->release(); + + // HACK: for some reason, this variable ends up being initialized to some garbage data, even though its declared as bool m_captureFrame = false; + m_captureFrame = false; } MetalRenderer::~MetalRenderer() diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index fc5152c5..e7cccca8 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -1013,16 +1013,10 @@ void MainWindow::OnDebugSetting(wxCommandEvent& event) } else if (event.GetId() == MAINFRAME_MENU_ID_DEBUG_GPU_CAPTURE) { + cemu_assert_debug(g_renderer->GetType() == RendererAPI::Metal); + #if ENABLE_METAL - if (g_renderer->GetType() == RendererAPI::Metal) - { - static_cast(g_renderer.get())->CaptureFrame(); - } - else - { - wxMessageBox(_("GPU capture is only supported on Metal."), _("Error"), wxOK | wxCENTRE | wxICON_ERROR); - return; - } + static_cast(g_renderer.get())->CaptureFrame(); #endif } else if (event.GetId() == MAINFRAME_MENU_ID_DEBUG_AUDIO_AUX_ONLY) @@ -2272,7 +2266,7 @@ void MainWindow::RecreateMenu() auto accurateBarriers = debugMenu->AppendCheckItem(MAINFRAME_MENU_ID_DEBUG_VK_ACCURATE_BARRIERS, _("&Accurate barriers (Vulkan)"), wxEmptyString); accurateBarriers->Check(GetConfig().vk_accurate_barriers); - auto gpuCapture = debugMenu->Append(MAINFRAME_MENU_ID_DEBUG_VK_ACCURATE_BARRIERS, _("&GPU capture (Metal)"), wxEmptyString); + auto gpuCapture = debugMenu->Append(MAINFRAME_MENU_ID_DEBUG_GPU_CAPTURE, _("&GPU capture (Metal)")); gpuCapture->Enable(m_game_launched && g_renderer->GetType() == RendererAPI::Metal); debugMenu->AppendSeparator();