mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-03-13 18:11:08 +00:00
gpu allocation optimizations (ryubing/ryujinx!195)
See merge request ryubing/ryujinx!195
This commit is contained in:
@@ -49,6 +49,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
/// Cache of GPU counters.
|
||||
/// </summary>
|
||||
internal CounterCache CounterCache { get; }
|
||||
|
||||
private delegate void WriteCallback(ulong address, ReadOnlySpan<byte> data);
|
||||
|
||||
private WriteCallback _write;
|
||||
private WriteCallback _writeTrackedResource;
|
||||
private WriteCallback _writeUntracked;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of the GPU memory manager.
|
||||
@@ -58,6 +64,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
internal MemoryManager(PhysicalMemory physicalMemory, ulong cpuMemorySize)
|
||||
{
|
||||
Physical = physicalMemory;
|
||||
_write = physicalMemory.Write;
|
||||
_writeTrackedResource = physicalMemory.WriteTrackedResource;
|
||||
_writeUntracked = physicalMemory.WriteUntracked;
|
||||
VirtualRangeCache = new VirtualRangeCache(this);
|
||||
CounterCache = new CounterCache();
|
||||
_pageTable = new ulong[PtLvl0Size][];
|
||||
@@ -269,7 +278,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
/// <param name="data">The data to be written</param>
|
||||
public void Write(ulong va, ReadOnlySpan<byte> data)
|
||||
{
|
||||
WriteImpl(va, data, Physical.Write);
|
||||
WriteImpl(va, data, _write);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -279,7 +288,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
/// <param name="data">The data to be written</param>
|
||||
public void WriteTrackedResource(ulong va, ReadOnlySpan<byte> data)
|
||||
{
|
||||
WriteImpl(va, data, Physical.WriteTrackedResource);
|
||||
WriteImpl(va, data, _writeTrackedResource);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -289,11 +298,9 @@ namespace Ryujinx.Graphics.Gpu.Memory
|
||||
/// <param name="data">The data to be written</param>
|
||||
public void WriteUntracked(ulong va, ReadOnlySpan<byte> data)
|
||||
{
|
||||
WriteImpl(va, data, Physical.WriteUntracked);
|
||||
WriteImpl(va, data, _writeUntracked);
|
||||
}
|
||||
|
||||
private delegate void WriteCallback(ulong address, ReadOnlySpan<byte> data);
|
||||
|
||||
/// <summary>
|
||||
/// Writes data to possibly non-contiguous GPU mapped memory.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user