diff --git a/pcsx2/GS/GS.cpp b/pcsx2/GS/GS.cpp index 964017f79e..ad24c17fe7 100644 --- a/pcsx2/GS/GS.cpp +++ b/pcsx2/GS/GS.cpp @@ -389,6 +389,9 @@ void GSgifTransfer3(u8* mem, u32 size) void GSvsync(u32 field, bool registers_written) { + // Do not move the flush into the VSync() method. It's here because EE transfers + // get cleared in HW VSync, and may be needed for a buffered draw (FFX FMVs). + g_gs_renderer->Flush(GSState::VSYNC); g_gs_renderer->VSync(field, registers_written, g_gs_renderer->IsIdleFrame()); } diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 4927109507..5234ab669e 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -536,8 +536,6 @@ void GSRenderer::EndPresentFrame() void GSRenderer::VSync(u32 field, bool registers_written, bool idle_frame) { - Flush(GSFlushReason::VSYNC); - if (GSConfig.DumpGSData && s_n >= GSConfig.SaveN) { m_regs->Dump(GetDrawDumpPath("vsync_%05d_f%lld_gs_reg.txt", s_n, g_perfmon.GetFrame()));