Add a separate device memory manager (#6153)
* Add a separate device memory manager * Still need this * Device writes are always tracked * Device writes are always tracked (2) * Rename more instances of gmm to mm
This commit is contained in:
@@ -454,7 +454,7 @@ namespace Ryujinx.Graphics.Vic.Image
|
||||
int srcStride = GetPitch(width, bytesPerPixel);
|
||||
int inSize = srcStride * height;
|
||||
|
||||
ReadOnlySpan<byte> src = rm.Gmm.GetSpan(ExtendOffset(offset), inSize);
|
||||
ReadOnlySpan<byte> src = rm.MemoryManager.GetSpan(ExtendOffset(offset), inSize);
|
||||
|
||||
int outSize = dstStride * height;
|
||||
int bufferIndex = rm.BufferPool.RentMinimum(outSize, out byte[] buffer);
|
||||
@@ -481,7 +481,7 @@ namespace Ryujinx.Graphics.Vic.Image
|
||||
{
|
||||
int inSize = GetBlockLinearSize(width, height, bytesPerPixel, gobBlocksInY);
|
||||
|
||||
ReadOnlySpan<byte> src = rm.Gmm.GetSpan(ExtendOffset(offset), inSize);
|
||||
ReadOnlySpan<byte> src = rm.MemoryManager.GetSpan(ExtendOffset(offset), inSize);
|
||||
|
||||
int outSize = dstStride * height;
|
||||
int bufferIndex = rm.BufferPool.RentMinimum(outSize, out byte[] buffer);
|
||||
|
@@ -636,7 +636,7 @@ namespace Ryujinx.Graphics.Vic.Image
|
||||
{
|
||||
if (linear)
|
||||
{
|
||||
rm.Gmm.WriteMapped(ExtendOffset(offset), src);
|
||||
rm.MemoryManager.Write(ExtendOffset(offset), src);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -659,7 +659,7 @@ namespace Ryujinx.Graphics.Vic.Image
|
||||
|
||||
LayoutConverter.ConvertLinearToBlockLinear(dst, width, height, dstStride, bytesPerPixel, gobBlocksInY, src);
|
||||
|
||||
rm.Gmm.WriteMapped(ExtendOffset(offset), dst);
|
||||
rm.MemoryManager.Write(ExtendOffset(offset), dst);
|
||||
|
||||
rm.BufferPool.Return(dstIndex);
|
||||
}
|
||||
|
@@ -1,17 +1,17 @@
|
||||
using Ryujinx.Graphics.Gpu.Memory;
|
||||
using Ryujinx.Graphics.Device;
|
||||
using Ryujinx.Graphics.Vic.Image;
|
||||
|
||||
namespace Ryujinx.Graphics.Vic
|
||||
{
|
||||
readonly struct ResourceManager
|
||||
{
|
||||
public MemoryManager Gmm { get; }
|
||||
public DeviceMemoryManager MemoryManager { get; }
|
||||
public BufferPool<Pixel> SurfacePool { get; }
|
||||
public BufferPool<byte> BufferPool { get; }
|
||||
|
||||
public ResourceManager(MemoryManager gmm, BufferPool<Pixel> surfacePool, BufferPool<byte> bufferPool)
|
||||
public ResourceManager(DeviceMemoryManager mm, BufferPool<Pixel> surfacePool, BufferPool<byte> bufferPool)
|
||||
{
|
||||
Gmm = gmm;
|
||||
MemoryManager = mm;
|
||||
SurfacePool = surfacePool;
|
||||
BufferPool = bufferPool;
|
||||
}
|
||||
|
@@ -8,7 +8,6 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
|
||||
<ProjectReference Include="..\Ryujinx.Graphics.Device\Ryujinx.Graphics.Device.csproj" />
|
||||
<ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
|
||||
<ProjectReference Include="..\Ryujinx.Graphics.Host1x\Ryujinx.Graphics.Host1x.csproj" />
|
||||
<ProjectReference Include="..\Ryujinx.Graphics.Texture\Ryujinx.Graphics.Texture.csproj" />
|
||||
</ItemGroup>
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using Ryujinx.Graphics.Device;
|
||||
using Ryujinx.Graphics.Gpu.Memory;
|
||||
using Ryujinx.Graphics.Vic.Image;
|
||||
using Ryujinx.Graphics.Vic.Types;
|
||||
using System;
|
||||
@@ -9,14 +8,14 @@ namespace Ryujinx.Graphics.Vic
|
||||
{
|
||||
public class VicDevice : IDeviceState
|
||||
{
|
||||
private readonly MemoryManager _gmm;
|
||||
private readonly DeviceMemoryManager _mm;
|
||||
private readonly ResourceManager _rm;
|
||||
private readonly DeviceState<VicRegisters> _state;
|
||||
|
||||
public VicDevice(MemoryManager gmm)
|
||||
public VicDevice(DeviceMemoryManager mm)
|
||||
{
|
||||
_gmm = gmm;
|
||||
_rm = new ResourceManager(gmm, new BufferPool<Pixel>(), new BufferPool<byte>());
|
||||
_mm = mm;
|
||||
_rm = new ResourceManager(mm, new BufferPool<Pixel>(), new BufferPool<byte>());
|
||||
_state = new DeviceState<VicRegisters>(new Dictionary<string, RwCallback>
|
||||
{
|
||||
{ nameof(VicRegisters.Execute), new RwCallback(Execute, null) },
|
||||
@@ -68,7 +67,7 @@ namespace Ryujinx.Graphics.Vic
|
||||
|
||||
private T ReadIndirect<T>(uint offset) where T : unmanaged
|
||||
{
|
||||
return _gmm.Read<T>((ulong)offset << 8);
|
||||
return _mm.Read<T>((ulong)offset << 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user