2021-07-11 13:20:40 -07:00
|
|
|
using Ryujinx.Graphics.GAL;
|
2021-10-18 14:38:04 -07:00
|
|
|
using Ryujinx.Graphics.Gpu.Engine.Threed;
|
2021-07-11 13:20:40 -07:00
|
|
|
|
2021-07-07 16:56:06 -07:00
|
|
|
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; }
|
|
|
|
|
2021-07-11 13:20:40 -07:00
|
|
|
/// <summary>
|
|
|
|
/// Primitive topology of current draw.
|
|
|
|
/// </summary>
|
|
|
|
public PrimitiveTopology Topology { get; }
|
|
|
|
|
2021-10-18 14:38:04 -07:00
|
|
|
/// <summary>
|
|
|
|
/// Tessellation mode.
|
|
|
|
/// </summary>
|
|
|
|
public TessMode TessellationMode { get; }
|
|
|
|
|
2022-01-21 07:35:21 -08:00
|
|
|
/// <summary>
|
|
|
|
/// Transform feedback information, if the shader uses transform feedback. Otherwise, should be null.
|
|
|
|
/// </summary>
|
|
|
|
public TransformFeedbackDescriptor[] TransformFeedbackDescriptors { get; set; }
|
|
|
|
|
2021-07-07 16:56:06 -07:00
|
|
|
/// <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>
|
2021-07-11 13:20:40 -07:00
|
|
|
/// <param name="topology">Primitive topology</param>
|
2021-10-18 14:38:04 -07:00
|
|
|
/// <param name="tessellationMode">Tessellation mode</param>
|
2021-07-11 13:20:40 -07:00
|
|
|
public GpuAccessorState(
|
|
|
|
ulong texturePoolGpuVa,
|
|
|
|
int texturePoolMaximumId,
|
|
|
|
int textureBufferIndex,
|
|
|
|
bool earlyZForce,
|
2021-10-18 14:38:04 -07:00
|
|
|
PrimitiveTopology topology,
|
|
|
|
TessMode tessellationMode)
|
2021-07-07 16:56:06 -07:00
|
|
|
{
|
|
|
|
TexturePoolGpuVa = texturePoolGpuVa;
|
|
|
|
TexturePoolMaximumId = texturePoolMaximumId;
|
|
|
|
TextureBufferIndex = textureBufferIndex;
|
|
|
|
EarlyZForce = earlyZForce;
|
2021-07-11 13:20:40 -07:00
|
|
|
Topology = topology;
|
2021-10-18 14:38:04 -07:00
|
|
|
TessellationMode = tessellationMode;
|
2022-01-21 07:35:21 -08:00
|
|
|
TransformFeedbackDescriptors = null;
|
2021-07-07 16:56:06 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|