aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Graphics3d
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics/Graphics3d')
-rw-r--r--Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs8
1 files changed, 7 insertions, 1 deletions
diff --git a/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs b/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
index 7de76cce..749f5fdc 100644
--- a/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
+++ b/Ryujinx.Graphics/Graphics3d/NvGpuEngine3d.cs
@@ -419,7 +419,7 @@ namespace Ryujinx.Graphics.Graphics3d
// Once geometry shaders are fixed it should be equal to GalPipelineState.RenderTargetCount when shader loaded, otherwise equal to 1
State.ScissorTestCount = 1;
- for (int Index = 0; Index < GalPipelineState.RenderTargetsCount; Index++)
+ for (int Index = 0; Index < State.ScissorTestCount; Index++)
{
State.ScissorTestEnabled[Index] = ReadRegisterBool(NvGpuEngine3dReg.ScissorEnable + Index * 4);
@@ -438,6 +438,12 @@ namespace Ryujinx.Graphics.Graphics3d
if ((int)State.FlipY == -1)
{
State.ScissorTestY[Index] = ViewportHeight - State.ScissorTestY[Index] - State.ScissorTestHeight[Index];
+
+ // Handle negative viewpont coordinate
+ if (State.ScissorTestY[Index] < 0)
+ {
+ State.ScissorTestY[Index] = 0;
+ }
}
}
}