// ------------------------------------------------------------------------------
// <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_INDIRECT_ARGUMENT_DESC"]/*' />
/// <unmanaged>D3D12_INDIRECT_ARGUMENT_DESC</unmanaged>
public partial struct IndirectArgumentDescription
{
	/// <include file='../Direct3D12.xml' path='doc/member[@name="D3D12_INDIRECT_ARGUMENT_DESC::Type"]/*' />
	public IndirectArgumentType Type;

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

	[UnscopedRef]
	public ref _Anonymous_e__Union._VertexBuffer_e__Struct VertexBuffer
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.VertexBuffer;
		}
	}

	[UnscopedRef]
	public ref _Anonymous_e__Union._Constant_e__Struct Constant
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.Constant;
		}
	}

	[UnscopedRef]
	public ref _Anonymous_e__Union._ConstantBufferView_e__Struct ConstantBufferView
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.ConstantBufferView;
		}
	}

	[UnscopedRef]
	public ref _Anonymous_e__Union._ShaderResourceView_e__Struct ShaderResourceView
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.ShaderResourceView;
		}
	}

	[UnscopedRef]
	public ref _Anonymous_e__Union._UnorderedAccessView_e__Struct UnorderedAccessView
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.UnorderedAccessView;
		}
	}

	[StructLayout(LayoutKind.Explicit)]
	public partial struct _Anonymous_e__Union
	{
		/// <include file='../Direct3D12.xml' path='doc/member[@name="_Anonymous_e__Union::VertexBuffer"]/*' />
		[FieldOffset(0)]
		public _Anonymous_e__Union._VertexBuffer_e__Struct VertexBuffer;

		/// <include file='../Direct3D12.xml' path='doc/member[@name="_Anonymous_e__Union::Constant"]/*' />
		[FieldOffset(0)]
		public _Anonymous_e__Union._Constant_e__Struct Constant;

		/// <include file='../Direct3D12.xml' path='doc/member[@name="_Anonymous_e__Union::ConstantBufferView"]/*' />
		[FieldOffset(0)]
		public _Anonymous_e__Union._ConstantBufferView_e__Struct ConstantBufferView;

		/// <include file='../Direct3D12.xml' path='doc/member[@name="_Anonymous_e__Union::ShaderResourceView"]/*' />
		[FieldOffset(0)]
		public _Anonymous_e__Union._ShaderResourceView_e__Struct ShaderResourceView;

		/// <include file='../Direct3D12.xml' path='doc/member[@name="_Anonymous_e__Union::UnorderedAccessView"]/*' />
		[FieldOffset(0)]
		public _Anonymous_e__Union._UnorderedAccessView_e__Struct UnorderedAccessView;

		public partial struct _ShaderResourceView_e__Struct
		{
			/// <include file='../Direct3D12.xml' path='doc/member[@name="_ShaderResourceView_e__Struct::RootParameterIndex"]/*' />
			public uint RootParameterIndex;
		}
		public partial struct _Constant_e__Struct
		{
			/// <include file='../Direct3D12.xml' path='doc/member[@name="_Constant_e__Struct::RootParameterIndex"]/*' />
			public uint RootParameterIndex;

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

			/// <include file='../Direct3D12.xml' path='doc/member[@name="_Constant_e__Struct::Num32BitValuesToSet"]/*' />
			public uint Num32BitValuesToSet;
		}
		public partial struct _UnorderedAccessView_e__Struct
		{
			/// <include file='../Direct3D12.xml' path='doc/member[@name="_UnorderedAccessView_e__Struct::RootParameterIndex"]/*' />
			public uint RootParameterIndex;
		}
		public partial struct _VertexBuffer_e__Struct
		{
			/// <include file='../Direct3D12.xml' path='doc/member[@name="_VertexBuffer_e__Struct::Slot"]/*' />
			public uint Slot;
		}
		public partial struct _ConstantBufferView_e__Struct
		{
			/// <include file='../Direct3D12.xml' path='doc/member[@name="_ConstantBufferView_e__Struct::RootParameterIndex"]/*' />
			public uint RootParameterIndex;
		}
	}
}
