|
|
@@ -86,46 +86,6 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- private void InvalidateRangeInternal(ulong offset, int size)
|
|
|
- {
|
|
|
- InvalidateRangeImpl(Address + offset, (ulong)size);
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// Invalidates a range of memory of the GPU resource pool.
|
|
|
- /// Entries that falls inside the speicified range will be invalidated,
|
|
|
- /// causing all the data to be reloaded from guest memory.
|
|
|
- /// </summary>
|
|
|
- /// <param name="address">The start address of the range to invalidate</param>
|
|
|
- /// <param name="size">The size of the range to invalidate</param>
|
|
|
- public void InvalidateRange(ulong address, ulong size)
|
|
|
- {
|
|
|
- ulong endAddress = address + size;
|
|
|
-
|
|
|
- ulong texturePoolEndAddress = Address + Size;
|
|
|
-
|
|
|
- // If the range being invalidated is not overlapping the texture pool range,
|
|
|
- // then we don't have anything to do, exit early.
|
|
|
- if (address >= texturePoolEndAddress || endAddress <= Address)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (address < Address)
|
|
|
- {
|
|
|
- address = Address;
|
|
|
- }
|
|
|
-
|
|
|
- if (endAddress > texturePoolEndAddress)
|
|
|
- {
|
|
|
- endAddress = texturePoolEndAddress;
|
|
|
- }
|
|
|
-
|
|
|
- size = endAddress - address;
|
|
|
-
|
|
|
- InvalidateRangeImpl(address, size);
|
|
|
- }
|
|
|
-
|
|
|
protected abstract void InvalidateRangeImpl(ulong address, ulong size);
|
|
|
|
|
|
protected abstract void Delete(T item);
|