Ryujinx/Ryujinx.Graphics.Gpu/Memory
riperiperi 187372cbde
Prune ForceDirty and CheckModified caches on unmap (#3862)
* Prune ForceDirty and CheckModified caches on unmap

Since we're now using this for modified checks on the HLE indirect draw method, I'm worried that leaving these to forever gather cache entries isn't the best idea for performance in the long term, and it could keep old buffer objects alive for longer than they should be.

This PR adds the ability to prune invalid entries before checking these caches, and queues it whenever gpu memory is unmapped. It also aligns modified checks to the page size, as I figured it would be possible for a huge number of overlapping over a game's runtime.

This prevents Super Mario Odyssey from having 10s of thousands of entries in the modified cache in Metro Kingdom, and them duplicating when entering and leaving a building (should be cleared, as they were unmapped).

* Address Feedback
2022-11-18 14:58:24 +00:00
..
Buffer.cs Removed unused usings. (#3593) 2022-08-18 18:04:54 +02:00
BufferBounds.cs Implement lazy flush-on-read for Buffers (SSBO/Copy) (#1790) 2021-01-17 17:08:06 -03:00
BufferCache.cs Prune ForceDirty and CheckModified caches on unmap (#3862) 2022-11-18 14:58:24 +00:00
BufferCacheEntry.cs POWER - Performance Optimizations With Extensive Ramifications (#2286) 2021-05-24 22:52:44 +02:00
BufferManager.cs GPU: Eliminate CB0 accesses when storage buffer accesses are resolved (#3847) 2022-11-17 18:47:41 +01:00
BufferModifiedRangeList.cs Avoid potential race 2021-10-07 01:13:51 +01:00
BufferTextureBinding.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
CounterCache.cs Implement Counter Queue and Partial Host Conditional Rendering (#1167) 2020-05-04 12:24:59 +10:00
GpuRegionHandle.cs Replace CacheResourceWrite with more general "precise" write (#2684) 2021-09-29 02:27:03 +02:00
IndexBuffer.cs Add XML documentation to Ryujinx.Graphics.Gpu.Memory 2020-01-09 02:13:00 +01:00
MemoryManager.cs New shader cache implementation (#3194) 2022-04-10 10:49:44 -03:00
MultiRangeWritableBlock.cs Texture Sync, incompatible overlap handling, data flush improvements. (#2971) 2022-01-09 13:28:48 -03:00
PhysicalMemory.cs New shader cache implementation (#3194) 2022-04-10 10:49:44 -03:00
PteKind.cs De-tile GOB when DMA copying from block linear to pitch kind memory regions (#3207) 2022-03-20 13:55:07 -03:00
UnmapEventArgs.cs Initial conditional rendering support (#1012) 2020-04-22 16:00:11 +10:00
VertexBuffer.cs Add XML documentation to Ryujinx.Graphics.Gpu.Memory 2020-01-09 02:13:00 +01:00