From 1a16a527b337c3904d0a8da10055bb342aa7fd2b Mon Sep 17 00:00:00 2001 From: Stenzek Date: Wed, 19 Jul 2023 17:26:42 +1000 Subject: [PATCH] GS: Hardware reset on load state Stops unnecessary readbacks. --- pcsx2/GS/GS.cpp | 11 +++++++++++ pcsx2/GS/GSState.cpp | 2 +- pcsx2/GS/Renderers/Common/GSRenderer.cpp | 11 ----------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pcsx2/GS/GS.cpp b/pcsx2/GS/GS.cpp index 100a82bf0d..62a40f99e6 100644 --- a/pcsx2/GS/GS.cpp +++ b/pcsx2/GS/GS.cpp @@ -357,6 +357,17 @@ void GSclose() void GSreset(bool hardware_reset) { g_gs_renderer->Reset(hardware_reset); + + // Restart video capture if it's been started. + // Otherwise we get a buildup of audio frames from the CPU thread. + if (hardware_reset && GSCapture::IsCapturing()) + { + std::string next_filename = GSCapture::GetNextCaptureFileName(); + const GSVector2i size = GSCapture::GetSize(); + Console.Warning(fmt::format("Restarting video capture to {}.", next_filename)); + g_gs_renderer->EndCapture(); + g_gs_renderer->BeginCapture(std::move(next_filename), size); + } } void GSgifSoftReset(u32 mask) diff --git a/pcsx2/GS/GSState.cpp b/pcsx2/GS/GSState.cpp index 4634d593e1..b5ad36762a 100644 --- a/pcsx2/GS/GSState.cpp +++ b/pcsx2/GS/GSState.cpp @@ -2531,7 +2531,7 @@ int GSState::Defrost(const freezeData* fd) Flush(GSFlushReason::LOADSTATE); - Reset(false); + Reset(true); ReadState(&m_env.PRIM, data); diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 3dfbce0e9f..0f01ff068a 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -80,17 +80,6 @@ void GSRenderer::Reset(bool hardware_reset) g_gs_device->ClearCurrent(); GSState::Reset(hardware_reset); - - // Restart video capture if it's been started. - // Otherwise we get a buildup of audio frames from the CPU thread. - if (hardware_reset && GSCapture::IsCapturing()) - { - std::string next_filename = GSCapture::GetNextCaptureFileName(); - const GSVector2i size = GSCapture::GetSize(); - Console.Warning(fmt::format("Restarting video capture to {}.", next_filename)); - EndCapture(); - BeginCapture(std::move(next_filename), size); - } } void GSRenderer::Destroy()