summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/RenderBase.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-05-08 23:19:38 +1000
committerStenzek <stenzek@gmail.com>2018-05-08 23:19:38 +1000
commitfd5aaa096c18609e4c22e583611907e9712978c7 (patch)
tree5fc6b8b971e2c0b0ac56f4112850c06bceeb86b6 /Source/Core/VideoCommon/RenderBase.cpp
parent90f869e9408a1b8509bafb8800998e439bb3d9af (diff)
RenderBase: Ensure the draw size does not exceed the window size
This was happening when crop was enabled, causing blank outputs for some Vulkan drivers (namely radv), as the draw rectangle is used as the viewport.
Diffstat (limited to 'Source/Core/VideoCommon/RenderBase.cpp')
-rw-r--r--Source/Core/VideoCommon/RenderBase.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp
index 76d40f5aa3..97b666cbe3 100644
--- a/Source/Core/VideoCommon/RenderBase.cpp
+++ b/Source/Core/VideoCommon/RenderBase.cpp
@@ -539,6 +539,10 @@ void Renderer::UpdateDrawRectangle()
crop_width = win_width;
}
+ // Clamp the draw width/height to the screen size, to ensure we don't render off-screen.
+ draw_width = std::min(draw_width, win_width);
+ draw_height = std::min(draw_height, win_height);
+
// ensure divisibility by 4 to make it compatible with all the video encoders
draw_width = std::ceil(draw_width) - static_cast<int>(std::ceil(draw_width)) % 4;
draw_height = std::ceil(draw_height) - static_cast<int>(std::ceil(draw_height)) % 4;