diff --git a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs index 12461e96e..adaacd915 100644 --- a/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs +++ b/src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs @@ -561,6 +561,18 @@ namespace Ryujinx.Graphics.Gpu.Memory /// Size in bytes public void ExternalFlush(ulong address, ulong size) { + ulong maxAddress = Math.Max(address, Address); + ulong minEndAddress = Math.Min(address + size, Address + Size); + + if (maxAddress >= minEndAddress) + { + // Access doesn't overlap. + return; + } + + address = maxAddress; + size = minEndAddress - address; + _context.Renderer.BackgroundContextAction(() => { var ranges = _modifiedRanges;