From ff9d33d2a7f056392f3fd20c3ed0e88dc2d43334 Mon Sep 17 00:00:00 2001 From: Luna Date: Fri, 23 Jan 2015 10:40:49 +0100 Subject: [PATCH] Move the hack to FramebufferCommon.cpp and rename. --- GPU/Common/FramebufferCommon.cpp | 26 +++++++++++++++++++++ GPU/Common/FramebufferCommon.h | 1 + GPU/Directx9/FramebufferDX9.cpp | 39 +------------------------------ GPU/GLES/Framebuffer.cpp | 40 ++------------------------------ UI/GameSettingsScreen.cpp | 2 +- 5 files changed, 31 insertions(+), 77 deletions(-) diff --git a/GPU/Common/FramebufferCommon.cpp b/GPU/Common/FramebufferCommon.cpp index 2b64aa5ee..515e8cf6b 100644 --- a/GPU/Common/FramebufferCommon.cpp +++ b/GPU/Common/FramebufferCommon.cpp @@ -737,3 +737,29 @@ void FramebufferManagerCommon::NotifyBlockTransferAfter(u32 dstBasePtr, int dstS } } } + +void FramebufferManagerCommon::SetRenderSize(VirtualFramebuffer *vfb) { + float renderWidthFactor = (float)PSP_CoreParameter().renderWidth / 480.0f; + float renderHeightFactor = (float)PSP_CoreParameter().renderHeight / 272.0f; + bool force1x = false; + switch (g_Config.iBloomHack) { + case 1: + force1x = vfb->bufferWidth <= 128 || vfb->bufferHeight <= 64; + break; + case 2: + force1x = vfb->bufferWidth <= 256 || vfb->bufferHeight <= 128; + break; + case 3: + force1x = vfb->bufferWidth <= 480 || vfb->bufferHeight <= 272; + break; + } + + if (force1x && g_Config.iInternalResolution != 1) { + vfb->renderWidth = vfb->bufferWidth; + vfb->renderHeight = vfb->bufferHeight; + } + else { + vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; + vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; + } +} \ No newline at end of file diff --git a/GPU/Common/FramebufferCommon.h b/GPU/Common/FramebufferCommon.h index b71ca1c80..6209b0b30 100644 --- a/GPU/Common/FramebufferCommon.h +++ b/GPU/Common/FramebufferCommon.h @@ -170,6 +170,7 @@ public: SetColorUpdated(currentRenderVfb_); } } + void SetRenderSize(VirtualFramebuffer *vfb); protected: virtual void DisableState() = 0; diff --git a/GPU/Directx9/FramebufferDX9.cpp b/GPU/Directx9/FramebufferDX9.cpp index 9f84af7b8..b635817e5 100644 --- a/GPU/Directx9/FramebufferDX9.cpp +++ b/GPU/Directx9/FramebufferDX9.cpp @@ -378,44 +378,7 @@ namespace DX9 { vfb->bufferHeight = std::max(vfb->bufferHeight, h); } - if (g_Config.iInternalResolution == 1) { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } else { - switch (g_Config.iBloomHack) { - case 0: - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - break; - case 1: - if (vfb->bufferWidth <= 128 || vfb->bufferHeight <= 64) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - case 2: - if (vfb->bufferWidth <= 256 || vfb->bufferHeight <= 128) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - case 3: - if (vfb->bufferWidth < 480 || vfb->bufferHeight < 272) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - } - } + SetRenderSize(vfb); bool trueColor = g_Config.bTrueColor; if (hackForce04154000Download_ && vfb->fb_address == 0x00154000) { diff --git a/GPU/GLES/Framebuffer.cpp b/GPU/GLES/Framebuffer.cpp index 4196cd88c..948b25e47 100644 --- a/GPU/GLES/Framebuffer.cpp +++ b/GPU/GLES/Framebuffer.cpp @@ -36,6 +36,7 @@ #include "GPU/Common/PostShader.h" #include "GPU/Common/TextureDecoder.h" +#include "GPU/Common/FramebufferCommon.h" #include "GPU/Debugger/Stepping.h" #include "GPU/GLES/Framebuffer.h" #include "GPU/GLES/TextureCache.h" @@ -667,44 +668,7 @@ void FramebufferManager::ResizeFramebufFBO(VirtualFramebuffer *vfb, u16 w, u16 h vfb->bufferHeight = std::max(vfb->bufferHeight, h); } - if (g_Config.iInternalResolution==1) { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } else { - switch (g_Config.iBloomHack) { - case 0: - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - break; - case 1: - if (vfb->bufferWidth <= 128 || vfb->bufferHeight <= 64) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - case 2: - if (vfb->bufferWidth <= 256 || vfb->bufferHeight <= 128) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - case 3: - if (vfb->bufferWidth < 480 || vfb->bufferHeight < 272) { - vfb->renderWidth = vfb->bufferWidth; - vfb->renderHeight = vfb->bufferHeight; - } else { - vfb->renderWidth = vfb->bufferWidth * renderWidthFactor; - vfb->renderHeight = vfb->bufferHeight * renderHeightFactor; - } - break; - } - } + SetRenderSize(vfb); bool trueColor = g_Config.bTrueColor; if (hackForce04154000Download_ && vfb->fb_address == 0x00154000) { diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index dcfe44762..06c6036d7 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -288,7 +288,7 @@ void GameSettingsScreen::CreateViews() { depthRange->SetDisabledPtr(&g_Config.bSoftwareRendering); static const char *bloomHackOptions[] = { "Off", "Safe", "Balanced", "Aggressive" }; - PopupMultiChoice *bloomHack = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iBloomHack, gs->T("Bloom Effect Smoothing"), bloomHackOptions, 0, ARRAY_SIZE(bloomHackOptions), gs, screenManager())); + PopupMultiChoice *bloomHack = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iBloomHack, gs->T("Lower resolution for effects (reduces artifacts)"), bloomHackOptions, 0, ARRAY_SIZE(bloomHackOptions), gs, screenManager())); bloomHackEnable_ = !g_Config.bSoftwareRendering && (g_Config.iInternalResolution != 1); bloomHack->SetEnabledPtr(&bloomHackEnable_);