aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics/Gpu
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-04-14 00:39:24 -0300
committergdkchan <gab.dark.100@gmail.com>2018-04-14 00:39:24 -0300
commit42ebfdff7f2889be38a3415bf33aeb41df90bd98 (patch)
tree556639adf9f0ef20e0fc64f9293ccc8c6e11b5e3 /Ryujinx.Graphics/Gpu
parent47100ec8c1b3cabc7d53654163c1dd30b58d483d (diff)
[GPU] Fix frame buffer being upside down in some cases
Diffstat (limited to 'Ryujinx.Graphics/Gpu')
-rw-r--r--Ryujinx.Graphics/Gpu/NvGpuEngine3d.cs11
-rw-r--r--Ryujinx.Graphics/Gpu/NvGpuEngine3dReg.cs6
2 files changed, 17 insertions, 0 deletions
diff --git a/Ryujinx.Graphics/Gpu/NvGpuEngine3d.cs b/Ryujinx.Graphics/Gpu/NvGpuEngine3d.cs
index fd13367c..88ad7633 100644
--- a/Ryujinx.Graphics/Gpu/NvGpuEngine3d.cs
+++ b/Ryujinx.Graphics/Gpu/NvGpuEngine3d.cs
@@ -147,6 +147,17 @@ namespace Ryujinx.Graphics.Gpu
Gpu.Renderer.BindShader(Tag);
}
+ int RawSX = ReadRegister(NvGpuEngine3dReg.ViewportScaleX);
+ int RawSY = ReadRegister(NvGpuEngine3dReg.ViewportScaleY);
+
+ float SX = BitConverter.Int32BitsToSingle(RawSX);
+ float SY = BitConverter.Int32BitsToSingle(RawSY);
+
+ float SignX = MathF.Sign(SX);
+ float SignY = MathF.Sign(SY);
+
+ Gpu.Renderer.SetUniform2F(GalConsts.FlipUniformName, SignX, SignY);
+
return Tags;
}
diff --git a/Ryujinx.Graphics/Gpu/NvGpuEngine3dReg.cs b/Ryujinx.Graphics/Gpu/NvGpuEngine3dReg.cs
index 4f1dce94..605ca9da 100644
--- a/Ryujinx.Graphics/Gpu/NvGpuEngine3dReg.cs
+++ b/Ryujinx.Graphics/Gpu/NvGpuEngine3dReg.cs
@@ -6,6 +6,12 @@ namespace Ryujinx.Graphics.Gpu
FrameBufferNWidth = 0x202,
FrameBufferNHeight = 0x203,
FrameBufferNFormat = 0x204,
+ ViewportScaleX = 0x280,
+ ViewportScaleY = 0x281,
+ ViewportScaleZ = 0x282,
+ ViewportTranslateX = 0x283,
+ ViewportTranslateY = 0x284,
+ ViewportTranslateZ = 0x285,
VertexAttribNFormat = 0x458,
IBlendEnable = 0x4b9,
BlendSeparateAlpha = 0x4cf,