summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp143
1 files changed, 71 insertions, 72 deletions
diff --git a/Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp b/Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp
index 95566d0e26..7dd37ab154 100644
--- a/Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp
+++ b/Source/Plugins/Plugin_VideoSoftware/Src/EfbCopy.cpp
@@ -12,7 +12,7 @@
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
-// Official SVN repository and contact information can be found at
+// Official Git repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include "BPMemLoader.h"
@@ -30,84 +30,83 @@
namespace EfbCopy
{
- void CopyToXfb()
- {
- GLInterface->Update(); // just updates the render window position and the backbuffer size
+ void CopyToXfb()
+ {
+ GLInterface->Update(); // just updates the render window position and the backbuffer size
if (!g_SWVideoConfig.bHwRasterizer)
- {
- // copy to open gl for rendering
- EfbInterface::UpdateColorTexture();
- SWRenderer::DrawTexture(EfbInterface::efbColorTexture, EFB_WIDTH, EFB_HEIGHT);
- }
-
- SWRenderer::SwapBuffer();
+ {
+ // copy to open gl for rendering
+ EfbInterface::UpdateColorTexture();
+ SWRenderer::DrawTexture(EfbInterface::efbColorTexture, EFB_WIDTH, EFB_HEIGHT);
+ }
- }
+ SWRenderer::SwapBuffer();
+ }
- void CopyToRam()
- {
- if (!g_SWVideoConfig.bHwRasterizer)
+ void CopyToRam()
+ {
+ if (!g_SWVideoConfig.bHwRasterizer)
{
u8 *dest_ptr = Memory::GetPointer(bpmem.copyTexDest << 5);
TextureEncoder::Encode(dest_ptr);
}
- }
-
- void ClearEfb()
- {
- u32 clearColor = (bpmem.clearcolorAR & 0xff) << 24 | bpmem.clearcolorGB << 8 | (bpmem.clearcolorAR & 0xff00) >> 8;
-
- int left = bpmem.copyTexSrcXY.x;
- int top = bpmem.copyTexSrcXY.y;
- int right = left + bpmem.copyTexSrcWH.x;
- int bottom = top + bpmem.copyTexSrcWH.y;
-
- for (u16 y = top; y <= bottom; y++)
- {
- for (u16 x = left; x <= right; x++)
- {
- EfbInterface::SetColor(x, y, (u8*)(&clearColor));
- EfbInterface::SetDepth(x, y, bpmem.clearZValue);
- }
- }
- }
-
- void CopyEfb()
- {
- if (bpmem.triggerEFBCopy.copy_to_xfb)
- DebugUtil::OnFrameEnd();
-
- if (!g_bSkipCurrentFrame)
- {
- if (bpmem.triggerEFBCopy.copy_to_xfb)
- {
- CopyToXfb();
- Core::Callback_VideoCopiedToXFB(true);
-
- swstats.frameCount++;
- }
- else
- {
- CopyToRam();
- }
-
- if (bpmem.triggerEFBCopy.clear)
- {
- if (g_SWVideoConfig.bHwRasterizer)
- HwRasterizer::Clear();
- else
- ClearEfb();
- }
- }
- else
- {
- if (bpmem.triggerEFBCopy.copy_to_xfb)
- {
- // no frame rendered but tell that a frame has finished for frame skip counter
- Core::Callback_VideoCopiedToXFB(false);
- }
- }
- }
+ }
+
+ void ClearEfb()
+ {
+ u32 clearColor = (bpmem.clearcolorAR & 0xff) << 24 | bpmem.clearcolorGB << 8 | (bpmem.clearcolorAR & 0xff00) >> 8;
+
+ int left = bpmem.copyTexSrcXY.x;
+ int top = bpmem.copyTexSrcXY.y;
+ int right = left + bpmem.copyTexSrcWH.x;
+ int bottom = top + bpmem.copyTexSrcWH.y;
+
+ for (u16 y = top; y <= bottom; y++)
+ {
+ for (u16 x = left; x <= right; x++)
+ {
+ EfbInterface::SetColor(x, y, (u8*)(&clearColor));
+ EfbInterface::SetDepth(x, y, bpmem.clearZValue);
+ }
+ }
+ }
+
+ void CopyEfb()
+ {
+ if (bpmem.triggerEFBCopy.copy_to_xfb)
+ DebugUtil::OnFrameEnd();
+
+ if (!g_bSkipCurrentFrame)
+ {
+ if (bpmem.triggerEFBCopy.copy_to_xfb)
+ {
+ CopyToXfb();
+ Core::Callback_VideoCopiedToXFB(true);
+
+ swstats.frameCount++;
+ }
+ else
+ {
+ CopyToRam();
+ }
+
+ if (bpmem.triggerEFBCopy.clear)
+ {
+ if (g_SWVideoConfig.bHwRasterizer)
+ HwRasterizer::Clear();
+ else
+ ClearEfb();
+ }
+ }
+ else
+ {
+ if (bpmem.triggerEFBCopy.copy_to_xfb)
+ {
+ // no frame rendered but tell that a frame has finished for frame skip counter
+ Core::Callback_VideoCopiedToXFB(false);
+ }
+ }
+ }
}