Ryujinx/Ryujinx.Graphics.Gpu/Shader/ShaderCodeAccessor.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

32 lines
1 KiB
C#

using Ryujinx.Graphics.Gpu.Memory;
using Ryujinx.Graphics.Gpu.Shader.HashTable;
using System;
namespace Ryujinx.Graphics.Gpu.Shader
{
/// <summary>
/// Shader code accessor.
/// </summary>
readonly struct ShaderCodeAccessor : IDataAccessor
{
private readonly MemoryManager _memoryManager;
private readonly ulong _baseAddress;
/// <summary>
/// Creates a new shader code accessor.
/// </summary>
/// <param name="memoryManager">Memory manager used to access the shader code</param>
/// <param name="baseAddress">Base address of the shader in memory</param>
public ShaderCodeAccessor(MemoryManager memoryManager, ulong baseAddress)
{
_memoryManager = memoryManager;
_baseAddress = baseAddress;
}
/// <inheritdoc/>
public ReadOnlySpan<byte> GetSpan(int offset, int length)
{
return _memoryManager.GetSpanMapped(_baseAddress + (ulong)offset, length);
}
}
}