summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FramebufferManager.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2019-03-27 22:12:40 +1000
committerStenzek <stenzek@gmail.com>2019-03-27 22:12:40 +1000
commitc28393d6f90efe8503525ab905cf48056220d3e3 (patch)
tree342b6bac4f66b04949720e913fe08f596f4f7a1e /Source/Core/VideoCommon/FramebufferManager.cpp
parent54e09886d8fdaa1eefbb28e19165fdea4900b61a (diff)
FramebufferManager: Fix EFB peek cache stretching last tile
Diffstat (limited to 'Source/Core/VideoCommon/FramebufferManager.cpp')
-rw-r--r--Source/Core/VideoCommon/FramebufferManager.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/FramebufferManager.cpp b/Source/Core/VideoCommon/FramebufferManager.cpp
index c3c41af2c7..c308fcebfc 100644
--- a/Source/Core/VideoCommon/FramebufferManager.cpp
+++ b/Source/Core/VideoCommon/FramebufferManager.cpp
@@ -569,8 +569,12 @@ void FramebufferManager::PopulateEFBCache(bool depth, u32 tile_index)
{native_rect.left * rcp_src_width, native_rect.top * rcp_src_height,
native_rect.GetWidth() * rcp_src_width, native_rect.GetHeight() * rcp_src_height}};
g_vertex_manager->UploadUtilityUniforms(&uniforms, sizeof(uniforms));
+
+ // Viewport will not be TILE_SIZExTILE_SIZE for the last row of tiles, assuming a tile size of
+ // 64, because 528 is not evenly divisible by 64.
g_renderer->SetAndDiscardFramebuffer(data.framebuffer.get());
- g_renderer->SetViewportAndScissor(data.framebuffer->GetRect());
+ g_renderer->SetViewportAndScissor(
+ MathUtil::Rectangle<int>(0, 0, rect.GetWidth(), rect.GetHeight()));
g_renderer->SetPipeline(data.copy_pipeline.get());
g_renderer->SetTexture(0, src_texture);
g_renderer->SetSamplerState(0, depth ? RenderState::GetPointSamplerState() :