Support depth clip mode and disable shader fast math optimization on NVIDIA as a workaround for compiler bugs (?)

This commit is contained in:
gdkchan 2019-12-07 01:54:28 -03:00 committed by Thog
parent 17fb11ddb9
commit 7ce5584f9e
7 changed files with 55 additions and 4 deletions

View file

@ -30,13 +30,15 @@ namespace Ryujinx.Graphics.OpenGL
private TextureView _unit0Texture;
private ClipOrigin _clipOrigin;
private ClipOrigin _clipOrigin;
private ClipDepthMode _clipDepthMode;
private uint[] _componentMasks;
internal Pipeline()
{
_clipOrigin = ClipOrigin.LowerLeft;
_clipOrigin = ClipOrigin.LowerLeft;
_clipDepthMode = ClipDepthMode.NegativeOneToOne;
}
public void BindBlendState(int index, BlendDescriptor blend)
@ -646,6 +648,18 @@ namespace Ryujinx.Graphics.OpenGL
// GL.PolygonOffsetClamp(factor, units, clamp);
}
public void SetDepthMode(DepthMode mode)
{
ClipDepthMode depthMode = mode.Convert();
if (_clipDepthMode != depthMode)
{
_clipDepthMode = depthMode;
GL.ClipControl(_clipOrigin, depthMode);
}
}
public void SetDepthTest(DepthTestDescriptor depthTest)
{
GL.DepthFunc((DepthFunction)depthTest.Func.Convert());
@ -828,7 +842,7 @@ namespace Ryujinx.Graphics.OpenGL
{
_clipOrigin = origin;
GL.ClipControl(origin, ClipDepthMode.NegativeOneToOne);
GL.ClipControl(origin, _clipDepthMode);
}
}