summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/Renderer.cpp
diff options
context:
space:
mode:
authorConnor McLaughlin <stenzek@gmail.com>2019-04-28 23:37:51 +1000
committerGitHub <noreply@github.com>2019-04-28 23:37:51 +1000
commit1b1662773eff56d4c25818b7470ff2d6de19cb53 (patch)
tree94e95f47b04119d90fb68e62fdecae3e9995e41d /Source/Core/VideoBackends/Vulkan/Renderer.cpp
parentd2d8d7ce90f92bb45e2d8b645ec72f104fee5e6b (diff)
parent53af27b1338827d6f08ef87a8f360dc1ceb550f8 (diff)
Merge pull request #8048 from stenzek/vulkan-negative-scissor-rect
Vulkan: Don't set a negative offset in scissor rect
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/Renderer.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/Renderer.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/Renderer.cpp b/Source/Core/VideoBackends/Vulkan/Renderer.cpp
index 8d702adb45..ac3dbe4c2a 100644
--- a/Source/Core/VideoBackends/Vulkan/Renderer.cpp
+++ b/Source/Core/VideoBackends/Vulkan/Renderer.cpp
@@ -561,6 +561,19 @@ void Renderer::SetScissorRect(const MathUtil::Rectangle<int>& rc)
{
VkRect2D scissor = {{rc.left, rc.top},
{static_cast<u32>(rc.GetWidth()), static_cast<u32>(rc.GetHeight())}};
+
+ // See Vulkan spec for vkCmdSetScissor:
+ // The x and y members of offset must be greater than or equal to 0.
+ if (scissor.offset.x < 0)
+ {
+ scissor.extent.width -= -scissor.offset.x;
+ scissor.offset.x = 0;
+ }
+ if (scissor.offset.y < 0)
+ {
+ scissor.extent.height -= -scissor.offset.y;
+ scissor.offset.y = 0;
+ }
StateTracker::GetInstance()->SetScissor(scissor);
}