using Ryujinx.Graphics.GAL;
using SharpMetal.Metal;
using System.Runtime.Versioning;

namespace Ryujinx.Graphics.Metal
{
    [SupportedOSPlatform("macos")]
    struct RenderEncoderState
    {
        public MTLRenderPipelineState RenderPipelineState;
        public PrimitiveTopology Topology = PrimitiveTopology.Triangles;
        public MTLCullMode CullMode = MTLCullMode.None;
        public MTLWinding Winding = MTLWinding.Clockwise;

        public RenderEncoderState(MTLRenderPipelineState renderPipelineState)
        {
            RenderPipelineState = renderPipelineState;
        }

        public void SetEncoderState(MTLRenderCommandEncoder renderCommandEncoder)
        {
            renderCommandEncoder.SetRenderPipelineState(RenderPipelineState);
            renderCommandEncoder.SetCullMode(CullMode);
            renderCommandEncoder.SetFrontFacingWinding(Winding);
        }
    }
}
