ryujinx/Ryujinx.Graphics.Gpu/Shader/GpuAccessorState.cs

72 lines
2.5 KiB
C#
Raw Normal View History

using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.Gpu.Engine.Threed;
namespace Ryujinx.Graphics.Gpu.Shader
{
/// <summary>
/// State used by the <see cref="GpuAccessor"/>.
/// </summary>
struct GpuAccessorState
{
/// <summary>
/// GPU virtual address of the texture pool.
/// </summary>
public ulong TexturePoolGpuVa { get; }
/// <summary>
/// Maximum ID of the texture pool.
/// </summary>
public int TexturePoolMaximumId { get; }
/// <summary>
/// Constant buffer slot where the texture handles are located.
/// </summary>
public int TextureBufferIndex { get; }
/// <summary>
/// Early Z force enable.
/// </summary>
public bool EarlyZForce { get; }
/// <summary>
/// Primitive topology of current draw.
/// </summary>
public PrimitiveTopology Topology { get; }
/// <summary>
/// Tessellation mode.
/// </summary>
public TessMode TessellationMode { get; }
/// <summary>
/// Transform feedback information, if the shader uses transform feedback. Otherwise, should be null.
/// </summary>
public TransformFeedbackDescriptor[] TransformFeedbackDescriptors { get; set; }
/// <summary>
/// Creates a new instance of the GPU accessor state.
/// </summary>
/// <param name="texturePoolGpuVa">GPU virtual address of the texture pool</param>
/// <param name="texturePoolMaximumId">Maximum ID of the texture pool</param>
/// <param name="textureBufferIndex">Constant buffer slot where the texture handles are located</param>
/// <param name="earlyZForce">Early Z force enable</param>
/// <param name="topology">Primitive topology</param>
/// <param name="tessellationMode">Tessellation mode</param>
public GpuAccessorState(
ulong texturePoolGpuVa,
int texturePoolMaximumId,
int textureBufferIndex,
bool earlyZForce,
PrimitiveTopology topology,
TessMode tessellationMode)
{
TexturePoolGpuVa = texturePoolGpuVa;
TexturePoolMaximumId = texturePoolMaximumId;
TextureBufferIndex = textureBufferIndex;
EarlyZForce = earlyZForce;
Topology = topology;
TessellationMode = tessellationMode;
TransformFeedbackDescriptors = null;
}
}
}