From 035840e7b57d8056c1b8546aa5d2ae3a8b65d6e4 Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Fri, 28 Sep 2012 23:48:18 +0200 Subject: Move last XFB size from Render to FramebufferManager. --- Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp index b234a7c865..fbb042c227 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; +unsigned int FramebufferManagerBase::s_last_xfb_height; + FramebufferManagerBase::FramebufferManagerBase() { m_realXFBSource = NULL; -- cgit v1.2.3 From a38bb488d205752dd3c3e59bae55924ae286c4ec Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Sat, 29 Sep 2012 00:19:28 +0200 Subject: Remove Renderer::xScale and Renderer::yScale. --- .../VideoCommon/Src/FramebufferManagerBase.cpp | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp index fbb042c227..be6109decf 100644 --- a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp +++ b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp @@ -229,3 +229,31 @@ void FramebufferManagerBase::ReplaceVirtualXFB() } } } + +unsigned int FramebufferManagerBase::ScaleToVirtualXfbWidth(unsigned int width, unsigned int backbuffer_width) +{ + if (g_ActiveConfig.RealXFBEnabled()) + return width; + + if (g_ActiveConfig.b3DVision) + { + // This works, yet the version in the else doesn't. No idea why. + return width * (backbuffer_width-1) / (FramebufferManagerBase::LastXfbWidth()-1); + } + else + return width * (Renderer::GetTargetRectangle().GetWidth() - 1) / (float)(FramebufferManagerBase::LastXfbWidth()-1); +} + +unsigned int FramebufferManagerBase::ScaleToVirtualXfbHeight(unsigned int height, unsigned int backbuffer_height) +{ + if (g_ActiveConfig.RealXFBEnabled()) + return height; + + if (g_ActiveConfig.b3DVision) + { + // This works, yet the version in the else doesn't. No idea why. + return height * (backbuffer_height-1) / (FramebufferManagerBase::LastXfbHeight()-1); + } + else + return height * (Renderer::GetTargetRectangle().GetHeight() - 1) / (float)(FramebufferManagerBase::LastXfbHeight()-1); +} -- cgit v1.2.3 From f88e7d3b73e99908e29b243c22210c4b8d47353b Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Sat, 29 Sep 2012 23:08:17 +0200 Subject: Fix an off-by-one error. --- Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp index be6109decf..090c1c7872 100644 --- a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp +++ b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp @@ -238,10 +238,10 @@ unsigned int FramebufferManagerBase::ScaleToVirtualXfbWidth(unsigned int width, if (g_ActiveConfig.b3DVision) { // This works, yet the version in the else doesn't. No idea why. - return width * (backbuffer_width-1) / (FramebufferManagerBase::LastXfbWidth()-1); + return width * backbuffer_width / FramebufferManagerBase::LastXfbWidth(); } else - return width * (Renderer::GetTargetRectangle().GetWidth() - 1) / (float)(FramebufferManagerBase::LastXfbWidth()-1); + return width * Renderer::GetTargetRectangle().GetWidth() / FramebufferManagerBase::LastXfbWidth(); } unsigned int FramebufferManagerBase::ScaleToVirtualXfbHeight(unsigned int height, unsigned int backbuffer_height) @@ -252,8 +252,8 @@ unsigned int FramebufferManagerBase::ScaleToVirtualXfbHeight(unsigned int height if (g_ActiveConfig.b3DVision) { // This works, yet the version in the else doesn't. No idea why. - return height * (backbuffer_height-1) / (FramebufferManagerBase::LastXfbHeight()-1); + return height * backbuffer_height / FramebufferManagerBase::LastXfbHeight(); } else - return height * (Renderer::GetTargetRectangle().GetHeight() - 1) / (float)(FramebufferManagerBase::LastXfbHeight()-1); + return height * Renderer::GetTargetRectangle().GetHeight() / FramebufferManagerBase::LastXfbHeight(); } -- cgit v1.2.3 From b02bb7617fe5bdcda524d065b5601834e0a3ed4a Mon Sep 17 00:00:00 2001 From: NeoBrainX Date: Tue, 2 Oct 2012 22:11:15 +0200 Subject: Fix some fractional EFB scaling issues. --- .../Core/VideoCommon/Src/FramebufferManagerBase.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp index 090c1c7872..c883714daf 100644 --- a/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp +++ b/Source/Core/VideoCommon/Src/FramebufferManagerBase.cpp @@ -10,8 +10,8 @@ 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; -unsigned int FramebufferManagerBase::s_last_xfb_height; +unsigned int FramebufferManagerBase::s_last_xfb_width = 1; +unsigned int FramebufferManagerBase::s_last_xfb_height = 1; FramebufferManagerBase::FramebufferManagerBase() { @@ -230,30 +230,30 @@ void FramebufferManagerBase::ReplaceVirtualXFB() } } -unsigned int FramebufferManagerBase::ScaleToVirtualXfbWidth(unsigned int width, unsigned int backbuffer_width) +int FramebufferManagerBase::ScaleToVirtualXfbWidth(int x, unsigned int backbuffer_width) { if (g_ActiveConfig.RealXFBEnabled()) - return width; + return x; if (g_ActiveConfig.b3DVision) { // This works, yet the version in the else doesn't. No idea why. - return width * backbuffer_width / FramebufferManagerBase::LastXfbWidth(); + return x * (int)backbuffer_width / (int)FramebufferManagerBase::LastXfbWidth(); } else - return width * Renderer::GetTargetRectangle().GetWidth() / FramebufferManagerBase::LastXfbWidth(); + return x * (int)Renderer::GetTargetRectangle().GetWidth() / (int)FramebufferManagerBase::LastXfbWidth(); } -unsigned int FramebufferManagerBase::ScaleToVirtualXfbHeight(unsigned int height, unsigned int backbuffer_height) +int FramebufferManagerBase::ScaleToVirtualXfbHeight(int y, unsigned int backbuffer_height) { if (g_ActiveConfig.RealXFBEnabled()) - return height; + return y; if (g_ActiveConfig.b3DVision) { // This works, yet the version in the else doesn't. No idea why. - return height * backbuffer_height / FramebufferManagerBase::LastXfbHeight(); + return y * (int)backbuffer_height / (int)FramebufferManagerBase::LastXfbHeight(); } else - return height * Renderer::GetTargetRectangle().GetHeight() / FramebufferManagerBase::LastXfbHeight(); + return y * (int)Renderer::GetTargetRectangle().GetHeight() / (int)FramebufferManagerBase::LastXfbHeight(); } -- cgit v1.2.3