Ryujinx/Ryujinx.Graphics.Gpu/Shader/GpuChannelPoolState.cs
Andrey Sukharev 4da44e09cb
Make structs readonly when applicable (#4002)
* Make all structs readonly when applicable. It should reduce amount of needless defensive copies

* Make structs with trivial boilerplate equality code record structs

* Remove unnecessary readonly modifiers from TextureCreateInfo

* Make BitMap structs readonly too
2022-12-05 14:47:39 +01:00

50 lines
1.8 KiB
C#

using System;
namespace Ryujinx.Graphics.Gpu.Shader
{
/// <summary>
/// State used by the <see cref="GpuAccessor"/>.
/// </summary>
readonly struct GpuChannelPoolState : IEquatable<GpuChannelPoolState>
{
/// <summary>
/// GPU virtual address of the texture pool.
/// </summary>
public readonly ulong TexturePoolGpuVa;
/// <summary>
/// Maximum ID of the texture pool.
/// </summary>
public readonly int TexturePoolMaximumId;
/// <summary>
/// Constant buffer slot where the texture handles are located.
/// </summary>
public readonly int TextureBufferIndex;
/// <summary>
/// Creates a new GPU texture pool 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>
public GpuChannelPoolState(ulong texturePoolGpuVa, int texturePoolMaximumId, int textureBufferIndex)
{
TexturePoolGpuVa = texturePoolGpuVa;
TexturePoolMaximumId = texturePoolMaximumId;
TextureBufferIndex = textureBufferIndex;
}
/// <summary>
/// Check if the pool states are equal.
/// </summary>
/// <param name="other">Pool state to compare with</param>
/// <returns>True if they are equal, false otherwise</returns>
public bool Equals(GpuChannelPoolState other)
{
return TexturePoolGpuVa == other.TexturePoolGpuVa &&
TexturePoolMaximumId == other.TexturePoolMaximumId &&
TextureBufferIndex == other.TextureBufferIndex;
}
}
}