summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/D3D/FramebufferManager.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-11-19 18:54:05 +1000
committerStenzek <stenzek@gmail.com>2016-11-19 20:29:51 +1000
commitd6d33411834df82dea8e7c250925ccfe595e0cc2 (patch)
tree5d1f27994874800ddd85f1fb9824825348c4266b /Source/Core/VideoBackends/D3D/FramebufferManager.cpp
parent6b88a854a791ad94d5b4a31b0dccfba99d514dd3 (diff)
D3D: Fix strided XFB copies
Diffstat (limited to 'Source/Core/VideoBackends/D3D/FramebufferManager.cpp')
-rw-r--r--Source/Core/VideoBackends/D3D/FramebufferManager.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/Source/Core/VideoBackends/D3D/FramebufferManager.cpp b/Source/Core/VideoBackends/D3D/FramebufferManager.cpp
index 3f7ab4c528..e95b2ab70e 100644
--- a/Source/Core/VideoBackends/D3D/FramebufferManager.cpp
+++ b/Source/Core/VideoBackends/D3D/FramebufferManager.cpp
@@ -275,8 +275,10 @@ void FramebufferManager::CopyToRealXFB(u32 xfbAddr, u32 fbStride, u32 fbHeight,
const EFBRectangle& sourceRc, float Gamma)
{
u8* dst = Memory::GetPointer(xfbAddr);
- // below div2 due to dx using pixel width
- s_xfbEncoder.Encode(dst, fbStride / 2, fbHeight, sourceRc, Gamma);
+
+ // The destination stride can differ from the copy region width, in which case the pixels
+ // outside the copy region should not be written to.
+ s_xfbEncoder.Encode(dst, static_cast<u32>(sourceRc.GetWidth()), fbHeight, sourceRc, Gamma);
}
std::unique_ptr<XFBSourceBase> FramebufferManager::CreateXFBSource(unsigned int target_width,