summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_rasterizer.cpp
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-10-17 17:48:44 +0200
committerGitHub <noreply@github.com>2023-10-17 17:48:44 +0200
commitb577d7a55f476464fb7bc3616e3781fae2be01c3 (patch)
tree4857d8227fb19dd73e33877b74904973e5f7e8ac /src/video_core/renderer_vulkan/vk_rasterizer.cpp
parentMerge pull request #11788 from Squall-Leonhart/IFREMOVED (diff)
parentvideo_core: Fix d24r8/s8d24 convert shader build error in moltenvk (diff)
downloadyuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar.gz
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar.bz2
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar.lz
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar.xz
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.tar.zst
yuzu-b577d7a55f476464fb7bc3616e3781fae2be01c3.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.cpp')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 83f2b6045..61d03daae 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -975,6 +975,19 @@ void RasterizerVulkan::UpdateScissorsState(Tegra::Engines::Maxwell3D::Regs& regs
if (!state_tracker.TouchScissors()) {
return;
}
+ if (!regs.viewport_scale_offset_enabled) {
+ const auto x = static_cast<float>(regs.surface_clip.x);
+ const auto y = static_cast<float>(regs.surface_clip.y);
+ const auto width = static_cast<float>(regs.surface_clip.width);
+ const auto height = static_cast<float>(regs.surface_clip.height);
+ VkRect2D scissor;
+ scissor.offset.x = static_cast<u32>(x);
+ scissor.offset.y = static_cast<u32>(y);
+ scissor.extent.width = static_cast<u32>(width != 0.0f ? width : 1.0f);
+ scissor.extent.height = static_cast<u32>(height != 0.0f ? height : 1.0f);
+ scheduler.Record([scissor](vk::CommandBuffer cmdbuf) { cmdbuf.SetScissor(0, scissor); });
+ return;
+ }
u32 up_scale = 1;
u32 down_shift = 0;
if (texture_cache.IsRescaling()) {