// ------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------

namespace Win32.Graphics.Direct3D12;

/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC"]/*' />
/// <unmanaged>D3D12_GRAPHICS_PIPELINE_STATE_DESC</unmanaged>
public partial struct GraphicsPipelineStateDescription
{
	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::pRootSignature"]/*' />
	public unsafe ID3D12RootSignature* pRootSignature;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::VS"]/*' />
	public ShaderBytecode VS;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::PS"]/*' />
	public ShaderBytecode PS;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::DS"]/*' />
	public ShaderBytecode DS;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::HS"]/*' />
	public ShaderBytecode HS;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::GS"]/*' />
	public ShaderBytecode GS;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::StreamOutput"]/*' />
	public StreamOutputDescription StreamOutput;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::BlendState"]/*' />
	public BlendDescription BlendState;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::SampleMask"]/*' />
	public uint SampleMask;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::RasterizerState"]/*' />
	public RasterizerDescription RasterizerState;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::DepthStencilState"]/*' />
	public DepthStencilDescription DepthStencilState;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::InputLayout"]/*' />
	public InputLayoutDescription InputLayout;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::IBStripCutValue"]/*' />
	public IndexBufferStripCutValue IBStripCutValue;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::PrimitiveTopologyType"]/*' />
	public PrimitiveTopologyType PrimitiveTopologyType;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::NumRenderTargets"]/*' />
	public uint NumRenderTargets;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::RTVFormats"]/*' />
	public RTVFormats__FixedBuffer RTVFormats;

	public unsafe struct RTVFormats__FixedBuffer
	{
		public Graphics.Dxgi.Common.Format e0;
		public Graphics.Dxgi.Common.Format e1;
		public Graphics.Dxgi.Common.Format e2;
		public Graphics.Dxgi.Common.Format e3;
		public Graphics.Dxgi.Common.Format e4;
		public Graphics.Dxgi.Common.Format e5;
		public Graphics.Dxgi.Common.Format e6;
		public Graphics.Dxgi.Common.Format e7;

		[UnscopedRef]
		public ref Graphics.Dxgi.Common.Format this[int index]
		{
			[MethodImpl(MethodImplOptions.AggressiveInlining)]
			get
			{
				return ref AsSpan()[index];
			}
		}

		[UnscopedRef]
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		public Span<Graphics.Dxgi.Common.Format> AsSpan()
		{
			return MemoryMarshal.CreateSpan(ref e0, 8);
		}
	}

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::DSVFormat"]/*' />
	public Graphics.Dxgi.Common.Format DSVFormat;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::SampleDesc"]/*' />
	public Graphics.Dxgi.Common.SampleDescription SampleDesc;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::NodeMask"]/*' />
	public uint NodeMask;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::CachedPSO"]/*' />
	public CachedPipelineState CachedPSO;

	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_GRAPHICS_PIPELINE_STATE_DESC::Flags"]/*' />
	public PipelineStateFlags Flags;
}
