summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp
diff options
context:
space:
mode:
authorNeoBrainX <NeoBrainX@googlemail.com>2010-10-23 18:44:01 +0000
committerNeoBrainX <NeoBrainX@googlemail.com>2010-10-23 18:44:01 +0000
commit91186d2b8a714da4ddaa10b85a4d0165b615c4de (patch)
treed812584120d69a0cbe57210ca4fb8c1c79528d74 /Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp
parent7410056536e67044b7d0defd7809d8d8b89ae3c8 (diff)
DX11: If the virtual XFB list overflows, replace the oldest XFB with a new one instead of just failing.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6305 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp b/Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp
index 94cd925886..79d162d558 100644
--- a/Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp
+++ b/Source/Plugins/Plugin_VideoDX11/Src/FramebufferManager.cpp
@@ -181,8 +181,8 @@ void FramebufferManager::copyToVirtualXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight
if (it == m_virtualXFBList.end() && (int)m_virtualXFBList.size() >= MAX_VIRTUAL_XFB)
{
- PanicAlert("Requested creating a new virtual XFB although the maximum number has already been reached! Report this to the devs");
- return;
+ // Replace the last virtual XFB (might cause glitches, but better than allocating 50 XFBs...)
+ --it;
}
float scaleX = Renderer::GetTargetScaleX();
@@ -243,12 +243,10 @@ void FramebufferManager::copyToVirtualXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight
// Add the new Virtual XFB to the list
if (m_virtualXFBList.size() >= MAX_VIRTUAL_XFB)
{
- PanicAlert("Requested creating a new virtual XFB although the maximum number has already been reached! Report this to the devs");
- SAFE_RELEASE(newVirt.xfbSource.tex);
- return;
- // TODO, possible alternative to failing: just delete the oldest virtual XFB:
- // m_virtualXFBList.back().xfbSource.tex->Release();
- // m_virtualXFBList.pop_back();
+ // List overflowed; delete the oldest.
+ m_virtualXFBList.back().xfbSource.tex->Release();
+ m_virtualXFBList.pop_back();
+ WARN_LOG(VIDEO, "Virtual XFB list overflown, releasing oldest virtual XFB");
}
m_virtualXFBList.push_front(newVirt);
}