From 7ac6b8e742fd78ef1b9c2762dc9cd51ee5d8757e Mon Sep 17 00:00:00 2001 From: riperiperi Date: Sat, 6 Jan 2024 20:16:01 +0000 Subject: [PATCH] 16k external flush workaround --- src/Ryujinx.Graphics.Gpu/Memory/Buffer.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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;