aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Gpu/Shader/ShaderCodeAccessor.cs
blob: 240a4ce9fd1f10f819ccbdf488d70d4613b1ec12 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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);
        }
    }
}