From 6a98c643cabeea25dc42e19fe475a687a034a532 Mon Sep 17 00:00:00 2001 From: gdk Date: Sat, 30 Nov 2019 23:53:09 -0300 Subject: Add a pass to turn global memory access into storage access, and do all storage related transformations on IR --- Ryujinx.Graphics.Gpu/Memory/BufferManager.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/Memory') diff --git a/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs b/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs index a066585c..83ca5db5 100644 --- a/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs +++ b/Ryujinx.Graphics.Gpu/Memory/BufferManager.cs @@ -1,3 +1,4 @@ +using Ryujinx.Common; using Ryujinx.Graphics.GAL; using Ryujinx.Graphics.GAL.InputAssembler; using Ryujinx.Graphics.Gpu.State; @@ -113,10 +114,9 @@ namespace Ryujinx.Graphics.Gpu.Memory public void SetComputeStorageBuffer(int index, ulong gpuVa, ulong size) { - // TODO: Improve - size += gpuVa & 0x3fUL; + size += gpuVa & ((ulong)_context.Capabilities.StorageBufferOffsetAlignment - 1); - gpuVa &= ~0x3fUL; + gpuVa = BitUtils.AlignDown(gpuVa, _context.Capabilities.StorageBufferOffsetAlignment); ulong address = TranslateAndCreateBuffer(gpuVa, size); @@ -125,10 +125,9 @@ namespace Ryujinx.Graphics.Gpu.Memory public void SetGraphicsStorageBuffer(int stage, int index, ulong gpuVa, ulong size) { - // TODO: Improve - size += gpuVa & 0x3fUL; + size += gpuVa & ((ulong)_context.Capabilities.StorageBufferOffsetAlignment - 1); - gpuVa &= ~0x3fUL; + gpuVa = BitUtils.AlignDown(gpuVa, _context.Capabilities.StorageBufferOffsetAlignment); ulong address = TranslateAndCreateBuffer(gpuVa, size); -- cgit v1.2.3