gpu allocation optimizations (ryubing/ryujinx!195)

See merge request ryubing/ryujinx!195
This commit is contained in:
LotP
2025-10-26 14:14:51 -05:00
parent 718652599d
commit c94ffaa00a
20 changed files with 297 additions and 234 deletions

View File

@@ -159,6 +159,13 @@ namespace Ryujinx.Memory
AssertValidAddressAndSize(va, data.Length);
if (IsContiguousAndMapped(va, data.Length))
{
nuint pa = TranslateVirtualAddressChecked(va);
GetPhysicalAddressSpan(pa, data.Length).CopyTo(data);
}
int offset = 0, size;
if ((va & PageMask) != 0)
@@ -182,6 +189,28 @@ namespace Ryujinx.Memory
}
}
public virtual bool TryReadUnsafe(ulong va, int length, out Span<byte> data)
{
if (!IsContiguousAndMapped(va, length))
{
data = default;
return false;
}
if (length == 0)
{
data = Span<byte>.Empty;
return true;
}
AssertValidAddressAndSize(va, length);
nuint pa = TranslateVirtualAddressChecked(va);
data = GetPhysicalAddressSpan(pa, length);
return true;
}
public virtual T ReadTracked<T>(ulong va) where T : unmanaged
{
SignalMemoryTracking(va, (ulong)Unsafe.SizeOf<T>(), false);