aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2022-05-05 20:16:58 +0100
committerGitHub <noreply@github.com>2022-05-05 21:16:58 +0200
commit50d7ecf76d07366a814cae19038199b887d3fda6 (patch)
tree02be9ae65eff23c17dfa078e7435605494a295a5
parent42a2a80b876bfbaac212f4f485f3e4019893b8a0 (diff)
Add alternative "GL" enum values for StencilOp (#3321)1.1.118
This PR adds the alternative enum values for StencilOp. Similar to the other enums, I added these with the same names but with Gl added to the end. These are used by homebrew using Nouveau, though they might be used by games with the official Vulkan driver. https://github.com/envytools/envytools/blob/39d90be897f41434d67277ebdf244d6bd419ecd9/rnndb/graph/nv_3ddefs.xml#L77 Fixes some broken graphics in Citra, such as missing shadows in Mario Kart 7. Likely fixes other homebrew.
-rw-r--r--Ryujinx.Graphics.GAL/StencilOp.cs11
-rw-r--r--Ryujinx.Graphics.OpenGL/EnumConversion.cs8
2 files changed, 18 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.GAL/StencilOp.cs b/Ryujinx.Graphics.GAL/StencilOp.cs
index f0ac829e..fe999b0f 100644
--- a/Ryujinx.Graphics.GAL/StencilOp.cs
+++ b/Ryujinx.Graphics.GAL/StencilOp.cs
@@ -9,6 +9,15 @@ namespace Ryujinx.Graphics.GAL
DecrementAndClamp,
Invert,
IncrementAndWrap,
- DecrementAndWrap
+ DecrementAndWrap,
+
+ ZeroGl = 0x0,
+ InvertGl = 0x150a,
+ KeepGl = 0x1e00,
+ ReplaceGl = 0x1e01,
+ IncrementAndClampGl = 0x1e02,
+ DecrementAndClampGl = 0x1e03,
+ IncrementAndWrapGl = 0x8507,
+ DecrementAndWrapGl = 0x8508
}
} \ No newline at end of file
diff --git a/Ryujinx.Graphics.OpenGL/EnumConversion.cs b/Ryujinx.Graphics.OpenGL/EnumConversion.cs
index 24cf1fc4..4a06e964 100644
--- a/Ryujinx.Graphics.OpenGL/EnumConversion.cs
+++ b/Ryujinx.Graphics.OpenGL/EnumConversion.cs
@@ -379,20 +379,28 @@ namespace Ryujinx.Graphics.OpenGL
switch (op)
{
case GAL.StencilOp.Keep:
+ case GAL.StencilOp.KeepGl:
return OpenTK.Graphics.OpenGL.StencilOp.Keep;
case GAL.StencilOp.Zero:
+ case GAL.StencilOp.ZeroGl:
return OpenTK.Graphics.OpenGL.StencilOp.Zero;
case GAL.StencilOp.Replace:
+ case GAL.StencilOp.ReplaceGl:
return OpenTK.Graphics.OpenGL.StencilOp.Replace;
case GAL.StencilOp.IncrementAndClamp:
+ case GAL.StencilOp.IncrementAndClampGl:
return OpenTK.Graphics.OpenGL.StencilOp.Incr;
case GAL.StencilOp.DecrementAndClamp:
+ case GAL.StencilOp.DecrementAndClampGl:
return OpenTK.Graphics.OpenGL.StencilOp.Decr;
case GAL.StencilOp.Invert:
+ case GAL.StencilOp.InvertGl:
return OpenTK.Graphics.OpenGL.StencilOp.Invert;
case GAL.StencilOp.IncrementAndWrap:
+ case GAL.StencilOp.IncrementAndWrapGl:
return OpenTK.Graphics.OpenGL.StencilOp.IncrWrap;
case GAL.StencilOp.DecrementAndWrap:
+ case GAL.StencilOp.DecrementAndWrapGl:
return OpenTK.Graphics.OpenGL.StencilOp.DecrWrap;
}