From 035f4611cb8f369d11e97651aff1988e60e8a120 Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Fri, 30 Oct 2026 05:05:24 +0100 Subject: [PATCH] [vk_rasterizer] Fix viewport Y flip for negative scale_y (#4558) - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md). - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- credit: ReiKatari Aggelos 1/2 viewport fix https://github.com/ReiKatari/STORM_SWITCH/commit/ff269fbb49388c1b90cd97b944365629e0fcc164 Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4558 Reviewed-by: Shinmegumi --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index f43bea1220..c87c68b64a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -82,7 +82,12 @@ VkViewport GetViewportState(const Device& device, const Maxwell& regs, size_t in if (lower_left) { // Flip by surface clip height - y += conv(static_cast(regs.surface_clip.height)); + const float clip_height = conv(static_cast(regs.surface_clip.height)); + if (src.scale_y < 0.0f && y >= clip_height) { + y = clip_height - y; + } else { + y += clip_height; + } height = -height; }