namespace Ryujinx.Graphics.Gal { public struct ColorMaskRgba { private static readonly ColorMaskRgba _Default = new ColorMaskRgba() { Red = true, Green = true, Blue = true, Alpha = true }; public static ColorMaskRgba Default => _Default; public bool Red; public bool Green; public bool Blue; public bool Alpha; } public class GalPipelineState { public const int Stages = 5; public const int ConstBuffersPerStage = 18; public const int RenderTargetsCount = 8; public long[][] ConstBufferKeys; public GalVertexBinding[] VertexBindings; public bool FramebufferSrgb; public float FlipX; public float FlipY; public int Instance; public GalFrontFace FrontFace; public bool CullFaceEnabled; public GalCullFace CullFace; public bool DepthTestEnabled; public bool DepthWriteEnabled; public GalComparisonOp DepthFunc; public bool StencilTestEnabled; public bool StencilTwoSideEnabled; public GalComparisonOp StencilBackFuncFunc; public int StencilBackFuncRef; public uint StencilBackFuncMask; public GalStencilOp StencilBackOpFail; public GalStencilOp StencilBackOpZFail; public GalStencilOp StencilBackOpZPass; public uint StencilBackMask; public GalComparisonOp StencilFrontFuncFunc; public int StencilFrontFuncRef; public uint StencilFrontFuncMask; public GalStencilOp StencilFrontOpFail; public GalStencilOp StencilFrontOpZFail; public GalStencilOp StencilFrontOpZPass; public uint StencilFrontMask; public bool BlendEnabled; public bool BlendSeparateAlpha; public GalBlendEquation BlendEquationRgb; public GalBlendFactor BlendFuncSrcRgb; public GalBlendFactor BlendFuncDstRgb; public GalBlendEquation BlendEquationAlpha; public GalBlendFactor BlendFuncSrcAlpha; public GalBlendFactor BlendFuncDstAlpha; public ColorMaskRgba ColorMask; public ColorMaskRgba[] ColorMasks; public bool PrimitiveRestartEnabled; public uint PrimitiveRestartIndex; public GalPipelineState() { ConstBufferKeys = new long[Stages][]; for (int Stage = 0; Stage < Stages; Stage++) { ConstBufferKeys[Stage] = new long[ConstBuffersPerStage]; } ColorMasks = new ColorMaskRgba[RenderTargetsCount]; } } }