diff --git a/GPU/GLES/Framebuffer.cpp b/GPU/GLES/Framebuffer.cpp index c4972ca33..0b2d17d21 100644 --- a/GPU/GLES/Framebuffer.cpp +++ b/GPU/GLES/Framebuffer.cpp @@ -501,6 +501,7 @@ void FramebufferManager::SetRenderFrameBuffer() { void FramebufferManager::CopyDisplayToOutput() { fbo_unbind(); + currentRenderVfb_ = 0; VirtualFramebuffer *vfb = GetDisplayFBO(); if (!vfb) { @@ -532,8 +533,6 @@ void FramebufferManager::CopyDisplayToOutput() { } displayFramebuf_ = vfb; - currentRenderVfb_ = 0; - if (vfb->fbo) { glstate.viewport.set(0, 0, PSP_CoreParameter().pixelWidth, PSP_CoreParameter().pixelHeight); DEBUG_LOG(HLE, "Displaying FBO %08x", vfb->fb_address); @@ -622,6 +621,8 @@ std::vector FramebufferManager::GetFramebufferList() { void FramebufferManager::DecimateFBOs() { fbo_unbind(); + currentRenderVfb_ = 0; + for (auto iter = vfbs_.begin(); iter != vfbs_.end();) { VirtualFramebuffer *vfb = *iter; if (vfb == displayFramebuf_ || vfb == prevDisplayFramebuf_ || vfb == prevPrevDisplayFramebuf_) { @@ -646,6 +647,8 @@ void FramebufferManager::DecimateFBOs() { void FramebufferManager::DestroyAllFBOs() { fbo_unbind(); + currentRenderVfb_ = 0; + for (auto iter = vfbs_.begin(); iter != vfbs_.end(); ++iter) { VirtualFramebuffer *vfb = *iter; textureCache_->NotifyFramebufferDestroyed(vfb->fb_address, vfb); @@ -670,6 +673,8 @@ void FramebufferManager::UpdateFromMemory(u32 addr, int size) { return; fbo_unbind(); + currentRenderVfb_ = 0; + for (auto iter = vfbs_.begin(); iter != vfbs_.end(); ) { VirtualFramebuffer *vfb = *iter; if (MaskedEqual(vfb->fb_address, addr)) {