summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp
diff options
context:
space:
mode:
authorMatthew Parlane <parlane@gmail.com>2012-12-24 12:58:15 +1300
committerMatthew Parlane <parlane@gmail.com>2012-12-24 12:58:15 +1300
commitf6418bd09357a528bc495f6854512586d76f28c6 (patch)
treece7748e276363190022f766f4e2d3664712f7c58 /Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp
parentd9dd94ac8b696ceb0e6b32eaafcc302b41f43bd1 (diff)
parenteedca572702c7416805375bd652c56af8665d167 (diff)
Merge branch 'master' into wii-usb
Diffstat (limited to 'Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp
index b234a7c865..c883714daf 100644
--- a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp
+++ b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp
@@ -10,6 +10,9 @@ XFBSourceBase *FramebufferManagerBase::m_realXFBSource; // Only used in Real XFB
FramebufferManagerBase::VirtualXFBListType FramebufferManagerBase::m_virtualXFBList; // Only used in Virtual XFB mode
const XFBSourceBase* FramebufferManagerBase::m_overlappingXFBArray[MAX_VIRTUAL_XFB];
+unsigned int FramebufferManagerBase::s_last_xfb_width = 1;
+unsigned int FramebufferManagerBase::s_last_xfb_height = 1;
+
FramebufferManagerBase::FramebufferManagerBase()
{
m_realXFBSource = NULL;
@@ -226,3 +229,31 @@ void FramebufferManagerBase::ReplaceVirtualXFB()
}
}
}
+
+int FramebufferManagerBase::ScaleToVirtualXfbWidth(int x, unsigned int backbuffer_width)
+{
+ if (g_ActiveConfig.RealXFBEnabled())
+ return x;
+
+ if (g_ActiveConfig.b3DVision)
+ {
+ // This works, yet the version in the else doesn't. No idea why.
+ return x * (int)backbuffer_width / (int)FramebufferManagerBase::LastXfbWidth();
+ }
+ else
+ return x * (int)Renderer::GetTargetRectangle().GetWidth() / (int)FramebufferManagerBase::LastXfbWidth();
+}
+
+int FramebufferManagerBase::ScaleToVirtualXfbHeight(int y, unsigned int backbuffer_height)
+{
+ if (g_ActiveConfig.RealXFBEnabled())
+ return y;
+
+ if (g_ActiveConfig.b3DVision)
+ {
+ // This works, yet the version in the else doesn't. No idea why.
+ return y * (int)backbuffer_height / (int)FramebufferManagerBase::LastXfbHeight();
+ }
+ else
+ return y * (int)Renderer::GetTargetRectangle().GetHeight() / (int)FramebufferManagerBase::LastXfbHeight();
+}