From fb853f13e92be33a2b75984cbb5c3921a9660019 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Sun, 16 Jan 2022 20:23:00 -0300 Subject: [PATCH] Scale scissor used for clears (#3002) --- Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs | 9 +++++++++ Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs index b705d63e32..7614121554 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/DrawManager.cs @@ -535,6 +535,15 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed scissorH = Math.Min(scissorH, scissorState.Y2 - scissorState.Y1); } + float scale = _channel.TextureManager.RenderTargetScale; + if (scale != 1f) + { + scissorX = (int)(scissorX * scale); + scissorY = (int)(scissorY * scale); + scissorW = (int)MathF.Ceiling(scissorW * scale); + scissorH = (int)MathF.Ceiling(scissorH * scale); + } + _context.Renderer.Pipeline.SetScissor(0, true, scissorX, scissorY, scissorW, scissorH); } diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs index 1228a9440b..1a9aeb4426 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs @@ -477,8 +477,8 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed { x = (int)(x * scale); y = (int)(y * scale); - width = (int)Math.Ceiling(width * scale); - height = (int)Math.Ceiling(height * scale); + width = (int)MathF.Ceiling(width * scale); + height = (int)MathF.Ceiling(height * scale); } _context.Renderer.Pipeline.SetScissor(index, true, x, y, width, height);