Wipe all FBOs on device lost. May help app switching issues on Android.

This commit is contained in:
Henrik Rydgard 2013-06-11 11:28:41 +02:00
parent 9fbb947fcd
commit 112f1b4901
3 changed files with 7 additions and 0 deletions

View file

@ -233,6 +233,7 @@ void GLES_GPU::DeviceLost() {
// FBO:s appear to survive? Or no? // FBO:s appear to survive? Or no?
shaderManager_->ClearCache(false); shaderManager_->ClearCache(false);
textureCache_.Clear(false); textureCache_.Clear(false);
framebufferManager_.DeviceLost();
} }
void GLES_GPU::InitClear() { void GLES_GPU::InitClear() {

View file

@ -567,6 +567,11 @@ void FramebufferManager::EndFrame() {
} }
} }
void FramebufferManager::DeviceLost() {
DestroyAllFBOs();
resized_ = false;
}
void FramebufferManager::BeginFrame() { void FramebufferManager::BeginFrame() {
DecimateFBOs(); DecimateFBOs();
// NOTE - this is all wrong. At the beginning of the frame is a TERRIBLE time to draw the fb. // NOTE - this is all wrong. At the beginning of the frame is a TERRIBLE time to draw the fb.

View file

@ -94,6 +94,7 @@ public:
void BeginFrame(); void BeginFrame();
void EndFrame(); void EndFrame();
void Resized(); void Resized();
void DeviceLost();
void CopyDisplayToOutput(); void CopyDisplayToOutput();
void SetRenderFrameBuffer(); // Uses parameters computed from gstate void SetRenderFrameBuffer(); // Uses parameters computed from gstate
void UpdateFromMemory(u32 addr, int size); void UpdateFromMemory(u32 addr, int size);