summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2016-10-05 22:27:37 +1000
committerStenzek <stenzek@gmail.com>2016-10-05 22:28:51 +1000
commitb39ac950eb8fa71fd745e4c42d2805d3317daeda (patch)
tree2099ca2af45a52e4e42c4803f03b0e3f7ee3e99c /Source/Core
parent400ba3c7e52b47d061a6abd95999c47da539ec4b (diff)
Vulkan: Don't save borders to screenshots/frame dumps
This matches the behavior on GL, making for easier comparisons.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/VideoBackends/Vulkan/Renderer.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp
index 74e2707a5d..c8f9aaa4d3 100644
--- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp
+++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp
@@ -618,8 +618,15 @@ void Renderer::DrawScreen(const TargetRectangle& src_rect, const Texture2D* src_
bool Renderer::DrawScreenshot(const TargetRectangle& src_rect, const Texture2D* src_tex)
{
- u32 width = std::max(1u, static_cast<u32>(s_backbuffer_width));
- u32 height = std::max(1u, static_cast<u32>(s_backbuffer_height));
+ // Draw the screenshot to an image containing only the active screen area, removing any
+ // borders as a result of the game rendering in a different aspect ratio.
+ TargetRectangle target_rect = GetTargetRectangle();
+ target_rect.right = target_rect.GetWidth();
+ target_rect.bottom = target_rect.GetHeight();
+ target_rect.left = 0;
+ target_rect.top = 0;
+ u32 width = std::max(1u, static_cast<u32>(target_rect.GetWidth()));
+ u32 height = std::max(1u, static_cast<u32>(target_rect.GetHeight()));
if (!ResizeScreenshotBuffer(width, height))
return false;
@@ -637,8 +644,8 @@ bool Renderer::DrawScreenshot(const TargetRectangle& src_rect, const Texture2D*
VK_SUBPASS_CONTENTS_INLINE);
vkCmdClearAttachments(g_command_buffer_mgr->GetCurrentCommandBuffer(), 1, &clear_attachment, 1,
&clear_rect);
- BlitScreen(m_framebuffer_mgr->GetColorCopyForReadbackRenderPass(), GetTargetRectangle(), src_rect,
- src_tex, true);
+ BlitScreen(m_framebuffer_mgr->GetColorCopyForReadbackRenderPass(), target_rect, src_rect, src_tex,
+ true);
vkCmdEndRenderPass(g_command_buffer_mgr->GetCurrentCommandBuffer());
// Copy to the readback texture.