aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.GAL/DepthStencil
diff options
context:
space:
mode:
authorgdk <gab.dark.100@gmail.com>2019-10-13 03:02:07 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit1876b346fea647e8284a66bb6d62c38801035cff (patch)
tree6eeff094298cda84d1613dc5ec0691e51d7b35f1 /Ryujinx.Graphics.GAL/DepthStencil
parentf617fb542a0e3d36012d77a4b5acbde7b08902f2 (diff)
Initial work
Diffstat (limited to 'Ryujinx.Graphics.GAL/DepthStencil')
-rw-r--r--Ryujinx.Graphics.GAL/DepthStencil/DepthStencilState.cs47
-rw-r--r--Ryujinx.Graphics.GAL/DepthStencil/DepthTestDescriptor.cs20
-rw-r--r--Ryujinx.Graphics.GAL/DepthStencil/StencilOp.cs14
-rw-r--r--Ryujinx.Graphics.GAL/DepthStencil/StencilTestDescriptor.cs56
4 files changed, 137 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.GAL/DepthStencil/DepthStencilState.cs b/Ryujinx.Graphics.GAL/DepthStencil/DepthStencilState.cs
new file mode 100644
index 00000000..93b8d50e
--- /dev/null
+++ b/Ryujinx.Graphics.GAL/DepthStencil/DepthStencilState.cs
@@ -0,0 +1,47 @@
+namespace Ryujinx.Graphics.GAL.DepthStencil
+{
+ public struct DepthStencilState
+ {
+ public bool DepthTestEnable { get; }
+ public bool DepthWriteEnable { get; }
+ public bool StencilTestEnable { get; }
+
+ public CompareOp DepthFunc { get; }
+ public CompareOp StencilFrontFunc { get; }
+ public StencilOp StencilFrontSFail { get; }
+ public StencilOp StencilFrontDpPass { get; }
+ public StencilOp StencilFrontDpFail { get; }
+ public CompareOp StencilBackFunc { get; }
+ public StencilOp StencilBackSFail { get; }
+ public StencilOp StencilBackDpPass { get; }
+ public StencilOp StencilBackDpFail { get; }
+
+ public DepthStencilState(
+ bool depthTestEnable,
+ bool depthWriteEnable,
+ bool stencilTestEnable,
+ CompareOp depthFunc,
+ CompareOp stencilFrontFunc,
+ StencilOp stencilFrontSFail,
+ StencilOp stencilFrontDpPass,
+ StencilOp stencilFrontDpFail,
+ CompareOp stencilBackFunc,
+ StencilOp stencilBackSFail,
+ StencilOp stencilBackDpPass,
+ StencilOp stencilBackDpFail)
+ {
+ DepthTestEnable = depthTestEnable;
+ DepthWriteEnable = depthWriteEnable;
+ StencilTestEnable = stencilTestEnable;
+ DepthFunc = depthFunc;
+ StencilFrontFunc = stencilFrontFunc;
+ StencilFrontSFail = stencilFrontSFail;
+ StencilFrontDpPass = stencilFrontDpPass;
+ StencilFrontDpFail = stencilFrontDpFail;
+ StencilBackFunc = stencilBackFunc;
+ StencilBackSFail = stencilBackSFail;
+ StencilBackDpPass = stencilBackDpPass;
+ StencilBackDpFail = stencilBackDpFail;
+ }
+ }
+}
diff --git a/Ryujinx.Graphics.GAL/DepthStencil/DepthTestDescriptor.cs b/Ryujinx.Graphics.GAL/DepthStencil/DepthTestDescriptor.cs
new file mode 100644
index 00000000..98b1429b
--- /dev/null
+++ b/Ryujinx.Graphics.GAL/DepthStencil/DepthTestDescriptor.cs
@@ -0,0 +1,20 @@
+namespace Ryujinx.Graphics.GAL.DepthStencil
+{
+ public struct DepthTestDescriptor
+ {
+ public bool TestEnable { get; }
+ public bool WriteEnable { get; }
+
+ public CompareOp Func { get; }
+
+ public DepthTestDescriptor(
+ bool testEnable,
+ bool writeEnable,
+ CompareOp func)
+ {
+ TestEnable = testEnable;
+ WriteEnable = writeEnable;
+ Func = func;
+ }
+ }
+}
diff --git a/Ryujinx.Graphics.GAL/DepthStencil/StencilOp.cs b/Ryujinx.Graphics.GAL/DepthStencil/StencilOp.cs
new file mode 100644
index 00000000..3818c6a5
--- /dev/null
+++ b/Ryujinx.Graphics.GAL/DepthStencil/StencilOp.cs
@@ -0,0 +1,14 @@
+namespace Ryujinx.Graphics.GAL.DepthStencil
+{
+ public enum StencilOp
+ {
+ Keep = 1,
+ Zero,
+ Replace,
+ IncrementAndClamp,
+ DecrementAndClamp,
+ Invert,
+ IncrementAndWrap,
+ DecrementAndWrap
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.Graphics.GAL/DepthStencil/StencilTestDescriptor.cs b/Ryujinx.Graphics.GAL/DepthStencil/StencilTestDescriptor.cs
new file mode 100644
index 00000000..2db53172
--- /dev/null
+++ b/Ryujinx.Graphics.GAL/DepthStencil/StencilTestDescriptor.cs
@@ -0,0 +1,56 @@
+namespace Ryujinx.Graphics.GAL.DepthStencil
+{
+ public struct StencilTestDescriptor
+ {
+ public bool TestEnable { get; }
+
+ public CompareOp FrontFunc { get; }
+ public StencilOp FrontSFail { get; }
+ public StencilOp FrontDpPass { get; }
+ public StencilOp FrontDpFail { get; }
+ public int FrontFuncRef { get; }
+ public int FrontFuncMask { get; }
+ public int FrontMask { get; }
+ public CompareOp BackFunc { get; }
+ public StencilOp BackSFail { get; }
+ public StencilOp BackDpPass { get; }
+ public StencilOp BackDpFail { get; }
+ public int BackFuncRef { get; }
+ public int BackFuncMask { get; }
+ public int BackMask { get; }
+
+ public StencilTestDescriptor(
+ bool testEnable,
+ CompareOp frontFunc,
+ StencilOp frontSFail,
+ StencilOp frontDpPass,
+ StencilOp frontDpFail,
+ int frontFuncRef,
+ int frontFuncMask,
+ int frontMask,
+ CompareOp backFunc,
+ StencilOp backSFail,
+ StencilOp backDpPass,
+ StencilOp backDpFail,
+ int backFuncRef,
+ int backFuncMask,
+ int backMask)
+ {
+ TestEnable = testEnable;
+ FrontFunc = frontFunc;
+ FrontSFail = frontSFail;
+ FrontDpPass = frontDpPass;
+ FrontDpFail = frontDpFail;
+ FrontFuncRef = frontFuncRef;
+ FrontFuncMask = frontFuncMask;
+ FrontMask = frontMask;
+ BackFunc = backFunc;
+ BackSFail = backSFail;
+ BackDpPass = backDpPass;
+ BackDpFail = backDpFail;
+ BackFuncRef = backFuncRef;
+ BackFuncMask = backFuncMask;
+ BackMask = backMask;
+ }
+ }
+}