diff --git a/GPU/Debugger/Stepping.cpp b/GPU/Debugger/Stepping.cpp index cb345c310b..f9bb659401 100644 --- a/GPU/Debugger/Stepping.cpp +++ b/GPU/Debugger/Stepping.cpp @@ -135,6 +135,10 @@ bool EnterStepping(std::function callback) { return true; } +bool IsStepping() { + return isStepping; +} + static bool GetBuffer(const GPUDebugBuffer *&buffer, PauseAction type, const GPUDebugBuffer &resultBuffer) { if (!isStepping) { return false; diff --git a/GPU/Debugger/Stepping.h b/GPU/Debugger/Stepping.h index 4a8b954fbd..9900d8872b 100644 --- a/GPU/Debugger/Stepping.h +++ b/GPU/Debugger/Stepping.h @@ -26,6 +26,7 @@ namespace GPUStepping { // Begins stepping and calls callback while inside a lock preparing stepping. // This would be a good place to deliver a message to code that stepping is ready. bool EnterStepping(std::function callback); + bool IsStepping(); bool GPU_GetCurrentFramebuffer(const GPUDebugBuffer *&buffer); bool GPU_GetCurrentDepthbuffer(const GPUDebugBuffer *&buffer); diff --git a/GPU/GLES/Framebuffer.cpp b/GPU/GLES/Framebuffer.cpp index a90ac36f00..883498427d 100644 --- a/GPU/GLES/Framebuffer.cpp +++ b/GPU/GLES/Framebuffer.cpp @@ -37,6 +37,7 @@ #include "GPU/Common/PostShader.h" #include "GPU/Common/TextureDecoder.h" +#include "GPU/Debugger/Stepping.h" #include "GPU/GLES/Framebuffer.h" #include "GPU/GLES/TextureCache.h" #include "GPU/GLES/TransformPipeline.h" @@ -1139,6 +1140,9 @@ void FramebufferManager::BindFramebufferColor(VirtualFramebuffer *framebuffer, b // currentRenderVfb_ will always be set when this is called, except from the GE debugger. // Let's just not bother with the copy in that case. + if (GPUStepping::IsStepping()) { + skipCopy = true; + } if (!skipCopy && currentRenderVfb_ && MaskedEqual(framebuffer->fb_address, gstate.getFrameBufRawAddress())) { // TODO: Maybe merge with bvfbs_? Not sure if those could be packing, and they're created at a different size. FBO *renderCopy = GetTempFBO(framebuffer->renderWidth, framebuffer->renderHeight, framebuffer->colorDepth);