// ------------------------------------------------------------------------------
// <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.Direct3D11;

/// <include file='../Direct3D11.xml' path='doc/member[@name="D3D11_SHADER_TRACE_DESC"]/*' />
/// <unmanaged>D3D11_SHADER_TRACE_DESC</unmanaged>
public partial struct ShaderTraceDescription
{
	/// <include file='../Direct3D11.xml' path='doc/member[@name="D3D11_SHADER_TRACE_DESC::Type"]/*' />
	public ShaderType Type;

	/// <include file='../Direct3D11.xml' path='doc/member[@name="D3D11_SHADER_TRACE_DESC::Flags"]/*' />
	public uint Flags;

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

	[UnscopedRef]
	public ref VertexShaderTraceDescription VertexShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.VertexShaderTraceDesc;
		}
	}

	[UnscopedRef]
	public ref HullShaderTraceDescription HullShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.HullShaderTraceDesc;
		}
	}

	[UnscopedRef]
	public ref DomainShaderTraceDescription DomainShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.DomainShaderTraceDesc;
		}
	}

	[UnscopedRef]
	public ref GeometryShaderTraceDescription GeometryShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.GeometryShaderTraceDesc;
		}
	}

	[UnscopedRef]
	public ref PixelShaderTraceDescription PixelShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.PixelShaderTraceDesc;
		}
	}

	[UnscopedRef]
	public ref ComputeShaderTraceDescription ComputeShaderTraceDesc
	{
		[MethodImpl(MethodImplOptions.AggressiveInlining)]
		get
		{
			return ref Anonymous.ComputeShaderTraceDesc;
		}
	}

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

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

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

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

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

		/// <include file='../Direct3D11.xml' path='doc/member[@name="_Anonymous_e__Union::ComputeShaderTraceDesc"]/*' />
		[FieldOffset(0)]
		public ComputeShaderTraceDescription ComputeShaderTraceDesc;
	}
}
