Ryujinx/src
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
..
ARMeilleure Replace "List.ForEach" for "foreach" (#6783) 2024-05-08 13:53:25 +02:00
Ryujinx Disable keyboard controller input while swkbd is open (foreground) (second attempt) (#6808) 2024-05-17 16:58:03 -03:00
Ryujinx.Audio Update audio renderer to REV12: Add support for splitter biquad filter (#6813) 2024-05-17 16:46:43 -03:00
Ryujinx.Audio.Backends.OpenAL Migrate Audio service to new IPC (#6285) 2024-02-22 16:58:33 -03:00
Ryujinx.Audio.Backends.SDL2 Use pooled memory and avoid memory copies (#6691) 2024-04-21 12:57:35 +02:00
Ryujinx.Audio.Backends.SoundIo Use pooled memory and avoid memory copies (#6691) 2024-04-21 12:57:35 +02:00
Ryujinx.Common chore: remove repetitive words (#6690) 2024-04-19 09:45:51 -03:00
Ryujinx.Cpu implement MemoryManagerHostTracked.GetReadOnlySequence() (#6695) 2024-04-21 16:34:04 -03:00
Ryujinx.Graphics.Device Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
Ryujinx.Graphics.GAL GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
Ryujinx.Graphics.Gpu GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
Ryujinx.Graphics.Host1x Add a separate device memory manager (#6153) 2024-01-22 17:14:46 -03:00
Ryujinx.Graphics.Nvdec Add a separate device memory manager (#6153) 2024-01-22 17:14:46 -03:00
Ryujinx.Graphics.Nvdec.FFmpeg editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Ryujinx.Graphics.Nvdec.Vp9 editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Ryujinx.Graphics.OpenGL GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
Ryujinx.Graphics.Shader Add support for bindless textures from storage buffer on Vulkan (#6721) 2024-05-14 16:47:16 +02:00
Ryujinx.Graphics.Texture Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
Ryujinx.Graphics.Vic Remove Vic Reference to Host1x (#6277) 2024-02-08 20:01:03 +01:00
Ryujinx.Graphics.Video editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Ryujinx.Graphics.Vulkan GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
Ryujinx.Gtk3 Disable keyboard controller input while swkbd is open (foreground) (second attempt) (#6808) 2024-05-17 16:58:03 -03:00
Ryujinx.Headless.SDL2 Add linux specific files to local builds (#6762) 2024-05-14 16:06:40 +02:00
Ryujinx.HLE HID: Stub IHidServer: 134 (SetNpadAnalogStickUseCenterClamp) (#6664) 2024-05-14 16:26:49 +02:00
Ryujinx.Horizon Pin audio renderer update output buffers (#6633) 2024-04-08 20:26:47 -03:00
Ryujinx.Horizon.Common Migrate Audio service to new IPC (#6285) 2024-02-22 16:58:33 -03:00
Ryujinx.Horizon.Generators Audio rendering: reduce memory allocations (#6604) 2024-04-07 18:07:32 -03:00
Ryujinx.Horizon.Kernel.Generators editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Ryujinx.Input Fix another NullReferenceException (#6826) 2024-05-17 20:11:30 -03:00
Ryujinx.Input.SDL2 Input: Improve controller identification (#6029) 2024-01-22 17:02:44 -03:00
Ryujinx.Memory implement MemoryManagerHostTracked.GetReadOnlySequence() (#6695) 2024-04-21 16:34:04 -03:00
Ryujinx.SDL2.Common Load custom SDL mappings from application data folder (#6295) 2024-02-10 19:41:02 +01:00
Ryujinx.ShaderTools Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
Ryujinx.Tests Update audio renderer to REV12: Add support for splitter biquad filter (#6813) 2024-05-17 16:46:43 -03:00
Ryujinx.Tests.Memory Delete old 16KB page workarounds (#6584) 2024-04-06 13:51:44 -03:00
Ryujinx.Tests.Unicorn editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Ryujinx.UI.Common Improves some log messages and fixes a typo (#6773) 2024-05-15 18:10:47 +02:00
Ryujinx.UI.LocaleGenerator Infra: Capitalisation Consistency (#6296) 2024-02-11 03:09:18 +01:00
Spv.Generator editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00