From cee712105850ac3385cd0091a923438167433f9f Mon Sep 17 00:00:00 2001
From: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
Date: Sat, 8 Apr 2023 01:22:00 +0200
Subject: Move solution and projects to src
---
src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs | 78 ++++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
(limited to 'src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs')
diff --git a/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs b/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
new file mode 100644
index 00000000..41afb34b
--- /dev/null
+++ b/src/Ryujinx.Graphics.GAL/ProgramPipelineState.cs
@@ -0,0 +1,78 @@
+using Ryujinx.Common.Memory;
+using System;
+
+namespace Ryujinx.Graphics.GAL
+{
+ ///
+ /// Descriptor for a pipeline buffer binding.
+ ///
+ public readonly struct BufferPipelineDescriptor
+ {
+ public bool Enable { get; }
+ public int Stride { get; }
+ public int Divisor { get; }
+
+ public BufferPipelineDescriptor(bool enable, int stride, int divisor)
+ {
+ Enable = enable;
+ Stride = stride;
+ Divisor = divisor;
+ }
+ }
+
+ ///
+ /// State required for a program to compile shaders.
+ ///
+ public struct ProgramPipelineState
+ {
+ // Some state is considered always dynamic and should not be included:
+ // - Viewports/Scissors
+ // - Bias values (not enable)
+
+ public int SamplesCount;
+ public Array8 AttachmentEnable;
+ public Array8 AttachmentFormats;
+ public bool DepthStencilEnable;
+ public Format DepthStencilFormat;
+
+ public bool LogicOpEnable;
+ public LogicalOp LogicOp;
+ public Array8 BlendDescriptors;
+ public Array8 ColorWriteMask;
+
+ public int VertexAttribCount;
+ public Array32 VertexAttribs;
+
+ public int VertexBufferCount;
+ public Array32 VertexBuffers;
+
+ // TODO: Min/max depth bounds.
+ public DepthTestDescriptor DepthTest;
+ public StencilTestDescriptor StencilTest;
+ public FrontFace FrontFace;
+ public Face CullMode;
+ public bool CullEnable;
+
+ public PolygonModeMask BiasEnable;
+
+ public float LineWidth;
+ // TODO: Polygon mode.
+ public bool DepthClampEnable;
+ public bool RasterizerDiscard;
+ public PrimitiveTopology Topology;
+ public bool PrimitiveRestartEnable;
+ public uint PatchControlPoints;
+
+ public void SetVertexAttribs(ReadOnlySpan vertexAttribs)
+ {
+ VertexAttribCount = vertexAttribs.Length;
+ vertexAttribs.CopyTo(VertexAttribs.AsSpan());
+ }
+
+ public void SetLogicOpState(bool enable, LogicalOp op)
+ {
+ LogicOp = op;
+ LogicOpEnable = enable;
+ }
+ }
+}
--
cgit v1.2.3