diff --git a/GPU/GLES/DisplayListInterpreter.cpp b/GPU/GLES/DisplayListInterpreter.cpp index a2b440c7b1..59434680b5 100644 --- a/GPU/GLES/DisplayListInterpreter.cpp +++ b/GPU/GLES/DisplayListInterpreter.cpp @@ -233,6 +233,7 @@ void GLES_GPU::DeviceLost() { // FBO:s appear to survive? Or no? shaderManager_->ClearCache(false); textureCache_.Clear(false); + framebufferManager_.DeviceLost(); } void GLES_GPU::InitClear() { diff --git a/GPU/GLES/Framebuffer.cpp b/GPU/GLES/Framebuffer.cpp index a2e7d39fe7..860b2e29fd 100644 --- a/GPU/GLES/Framebuffer.cpp +++ b/GPU/GLES/Framebuffer.cpp @@ -567,6 +567,11 @@ void FramebufferManager::EndFrame() { } } +void FramebufferManager::DeviceLost() { + DestroyAllFBOs(); + resized_ = false; +} + void FramebufferManager::BeginFrame() { DecimateFBOs(); // NOTE - this is all wrong. At the beginning of the frame is a TERRIBLE time to draw the fb. diff --git a/GPU/GLES/Framebuffer.h b/GPU/GLES/Framebuffer.h index 7af8ef7270..9285cab997 100644 --- a/GPU/GLES/Framebuffer.h +++ b/GPU/GLES/Framebuffer.h @@ -94,6 +94,7 @@ public: void BeginFrame(); void EndFrame(); void Resized(); + void DeviceLost(); void CopyDisplayToOutput(); void SetRenderFrameBuffer(); // Uses parameters computed from gstate void UpdateFromMemory(u32 addr, int size);