Ryujinx/src/Ryujinx.Graphics.Gpu/Image
riperiperi eb1ce41b00
GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794)
* GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings

Essentially retreading #4540, but it's on the GPU project now instead of the backend. This allows us to have a lot more control + knowledge of where the buffer backing has been changed and allows us to pre-emptively flush pages to host memory for quicker readback. It will allow us to do other stuff in the future, but we'll get there when we get there.

Performance greatly improved in Hyrule Warriors: Age of Calamity. Performance notably improved in TOTK (average). Performance for BOTW restored to how it was before #4911, perhaps a bit better.

- Rewrites a bunch of buffer migration stuff. Might want to tighten up how dispose stuff works.
- Fixed an issue where the copy for texture pre-flush would happen _after_ the syncpoint.

TODO: remove a page from pre-flush if it isn't flushed after a certain number of copies.

* Add copy deactivation

* Fix dependent virtual buffers

* Remove logging

* Fix format issues (maybe)

* Vulkan: Remove backing swap

* Add explicit memory access types for most buffers

* Fix typo

* Add device local force expiry, change buffer inheritance behaviour

* General cleanup, OGL fix

* BufferPreFlush comments

* BufferBackingState comments

* Add an extra precaution to BufferMigration

This is very unlikely, but it's important to cover loose ends like this.

* Address some feedback

* Docs
2024-05-19 16:53:37 -03:00
..
AutoDeleteCache.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
FormatInfo.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
FormatTable.cs Change packed aliasing formats to UInt (#6358) 2024-02-24 19:02:20 -03:00
ITextureDescriptor.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Pool.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
PoolCache.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
ReductionFilter.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
Sampler.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
SamplerDescriptor.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
SamplerMinFilter.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
SamplerMipFilter.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
SamplerPool.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
SamplerPoolCache.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
Texture.cs Make TextureGroup.ClearModified thread safe (#6686) 2024-05-14 17:06:36 +02:00
TextureBindingInfo.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
TextureBindingsArrayCache.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
TextureBindingsManager.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
TextureCache.cs Add missing lock on texture cache UpdateMapping method (#6657) 2024-05-14 17:23:13 +02:00
TextureCompatibility.cs Fast D32S8 2D depth texture copy (#6636) 2024-04-09 14:03:55 -03:00
TextureComponent.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureDependency.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
TextureDescriptor.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureDescriptorType.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureGroup.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
TextureGroupHandle.cs Make TextureGroup.ClearModified thread safe (#6686) 2024-05-14 17:06:36 +02:00
TextureInfo.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureManager.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
TextureMatchQuality.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
TextureMsaaMode.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TexturePool.cs Enable copy dependency between RGBA8 and RGBA32 formats (#5943) 2023-11-19 15:27:34 -03:00
TexturePoolCache.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureScaleMode.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
TextureSearchFlags.cs GPU: Discard data when getting texture before full clear (#5719) 2023-09-25 23:07:03 +02:00
TextureTarget.cs [Ryujinx.Graphics.Gpu] Address dotnet-format issues (#5367) 2023-07-02 02:47:54 +02:00
TextureViewCompatibility.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00