Explorar o código

Vulkan: Fix Scissor on Clears

Fernando Sahmkow %!s(int64=4) %!d(string=hai) anos
pai
achega
98b5e236d4
Modificáronse 1 ficheiros con 8 adicións e 1 borrados
  1. 8 1
      src/video_core/renderer_vulkan/vk_rasterizer.cpp

+ 8 - 1
src/video_core/renderer_vulkan/vk_rasterizer.cpp

@@ -247,8 +247,15 @@ void RasterizerVulkan::Clear() {
     }
     UpdateViewportsState(regs);
 
+    VkRect2D default_scissor;
+    default_scissor.offset.x = 0;
+    default_scissor.offset.y = 0;
+    default_scissor.extent.width = std::numeric_limits<s32>::max();
+    default_scissor.extent.height = std::numeric_limits<s32>::max();
+
     VkClearRect clear_rect{
-        .rect = GetScissorState(regs, 0, up_scale, down_shift),
+        .rect = regs.clear_flags.scissor ? GetScissorState(regs, 0, up_scale, down_shift)
+                                         : default_scissor,
         .baseArrayLayer = regs.clear_buffers.layer,
         .layerCount = 1,
     };