ryujinx-mirror/Ryujinx.Graphics.Gpu
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
..
Engine GPU: Eliminate CB0 accesses when storage buffer accesses are resolved (#3847) 2022-11-17 18:47:41 +01:00
Image Minor improvement to Vulkan pipeline state and bindings management (#3829) 2022-11-10 13:38:38 -03:00
Memory Prune ForceDirty and CheckModified caches on unmap (#3862) 2022-11-18 14:58:24 +00:00
Shader SPIR-V: Fix unscaling helper not being able to find Array textures (#3863) 2022-11-18 02:37:37 +00:00
Synchronization When waiting on CPU, do not return a time out error from EventWait (#2780) 2021-11-01 19:10:02 -03:00
ClassId.cs Separate GPU engines (part 2/2) (#2440) 2021-07-11 17:20:40 -03:00
Constants.cs GPU: Eliminate CB0 accesses when storage buffer accesses are resolved (#3847) 2022-11-17 18:47:41 +01:00
GpuChannel.cs Prune ForceDirty and CheckModified caches on unmap (#3862) 2022-11-18 14:58:24 +00:00
GpuContext.cs Use RGBA16 vertex format if RGB16 is not supported on Vulkan (#3552) 2022-08-20 16:20:27 -03:00
GraphicsConfig.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
Ryujinx.Graphics.Gpu.csproj infra: Migrate to .NET 7 (#3795) 2022-11-09 20:22:43 +01:00
Window.cs Allow Surface Flinger frame enqueue after process has exited (#3733) 2022-10-02 21:50:03 +00:00