diff options
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Memory')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Memory/Buffer.cs | 15 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Memory/PhysicalMemory.cs | 5 |
2 files changed, 11 insertions, 9 deletions
diff --git a/Ryujinx.Graphics.Gpu/Memory/Buffer.cs b/Ryujinx.Graphics.Gpu/Memory/Buffer.cs index 842249f3..a624386e 100644 --- a/Ryujinx.Graphics.Gpu/Memory/Buffer.cs +++ b/Ryujinx.Graphics.Gpu/Memory/Buffer.cs @@ -470,19 +470,16 @@ namespace Ryujinx.Graphics.Gpu.Memory return false; } - if (address < Address) - { - address = Address; - } + ulong maxAddress = Math.Max(address, Address); + ulong minEndAddress = Math.Min(address + size, Address + Size); - ulong maxSize = Address + Size - address; - - if (size > maxSize) + if (maxAddress >= minEndAddress) { - size = maxSize; + // Access doesn't overlap. + return false; } - ForceDirty(address, size); + ForceDirty(maxAddress, minEndAddress - maxAddress); return true; } diff --git a/Ryujinx.Graphics.Gpu/Memory/PhysicalMemory.cs b/Ryujinx.Graphics.Gpu/Memory/PhysicalMemory.cs index 051838f1..c1fc0c5c 100644 --- a/Ryujinx.Graphics.Gpu/Memory/PhysicalMemory.cs +++ b/Ryujinx.Graphics.Gpu/Memory/PhysicalMemory.cs @@ -22,6 +22,11 @@ namespace Ryujinx.Graphics.Gpu.Memory private int _referenceCount; /// <summary> + /// Indicates whenever the memory manager supports 4KB pages. + /// </summary> + public bool Supports4KBPages => _cpuMemory.Supports4KBPages; + + /// <summary> /// In-memory shader cache. /// </summary> public ShaderCache ShaderCache { get; } |
