Ryujinx/src/Ryujinx.Graphics.Vulkan
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
..
Effects Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
MoltenVK [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
Queries Updates the default value for BufferedQuery (#6351) 2024-03-21 21:44:11 -03:00
Shaders Vulkan: Device Local and higher invocation count for buffer conversions (#5623) 2023-09-02 17:58:15 -03:00
Auto.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
AutoFlushCounter.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BackgroundResources.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BarrierBatch.cs Vulkan: Properly reset barrier batch when splitting due to mismatching flags (#6345) 2024-02-22 10:43:22 +01:00
BitMap.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BitMapStruct.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BufferAllocationType.cs Implement support for multi-range buffers using Vulkan sparse mappings (#5427) 2023-12-04 20:30:19 +01:00
BufferHolder.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
BufferManager.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
BufferMirrorRangeList.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BufferState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BufferUsageBitmap.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
CacheByRange.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
CommandBufferPool.cs Do not compare Span<T> to 'null' or 'default' (#6683) 2024-04-19 09:21:21 -03:00
CommandBufferScoped.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Constants.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
DescriptorSetCollection.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
DescriptorSetManager.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
DescriptorSetTemplate.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
DescriptorSetTemplateUpdater.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
DescriptorSetUpdater.cs Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
DisposableBuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableBufferView.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableFramebuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableImage.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableImageView.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableMemory.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposablePipeline.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableRenderPass.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableSampler.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
EnumConversion.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
FenceHelper.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
FenceHolder.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
FormatCapabilities.cs Implement X8Z24 texture format (#6315) 2024-02-15 19:06:26 -03:00
FormatConverter.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
FormatTable.cs Implement X8Z24 texture format (#6315) 2024-02-15 19:06:26 -03:00
FramebufferParams.cs Vulkan: Improve texture barrier usage, timing and batching (#6240) 2024-02-17 00:21:37 -03:00
HardwareCapabilities.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
HashTableSlim.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
HelperShader.cs Vulkan: Improve texture barrier usage, timing and batching (#6240) 2024-02-17 00:21:37 -03:00
HostMemoryAllocator.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
IdList.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
ImageArray.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
IndexBufferPattern.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
IndexBufferState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocation.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocator.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocatorBlockList.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MultiFenceHolder.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
NativeArray.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PersistentFlushBuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PipelineBase.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
PipelineConverter.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PipelineDynamicState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PipelineFull.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
PipelineHelperShader.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
PipelineLayoutCache.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
PipelineLayoutCacheEntry.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
PipelineLayoutFactory.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PipelineState.cs Vulkan: Skip draws when patches topology is used without a tessellation shader (#6508) 2024-04-06 13:25:51 -03:00
PipelineUid.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
RenderPassCacheKey.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
RenderPassHolder.cs Vulkan: Fix swapchain image view leak (#6509) 2024-04-06 13:38:52 -03:00
ResourceBindingSegment.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
ResourceLayoutBuilder.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
Ryujinx.Graphics.Vulkan.csproj Migrate to .NET 8 (#5887) 2023-11-15 17:41:31 +01:00
SamplerHolder.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
SemaphoreHolder.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
Shader.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
ShaderCollection.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
SpecInfo.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
StagingBuffer.cs Vulkan: Use staging buffer for temporary constants (#6168) 2024-01-25 19:29:53 +01:00
SyncManager.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
TextureArray.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
TextureBuffer.cs Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
TextureCopy.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
TextureStorage.cs Vulkan: Improve texture barrier usage, timing and batching (#6240) 2024-02-17 00:21:37 -03:00
TextureView.cs Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
Vendor.cs UI: Friendly driver name reporting. (#6530) 2024-03-27 14:55:34 -03:00
VertexBufferState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
VertexBufferUpdater.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
VulkanConfiguration.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
VulkanDebugMessenger.cs Fix some Vulkan validation errors (#5452) 2023-07-14 09:08:52 +02:00
VulkanException.cs Allow skipping draws with broken pipeline variants on Vulkan (#5807) 2024-01-26 13:58:57 -03:00
VulkanInitialization.cs chore: remove repetitive words (#6500) 2024-03-16 19:49:54 +01:00
VulkanInstance.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
VulkanPhysicalDevice.cs Use driver name instead of vendor name in the status bar for Vulkan. (#6146) 2024-01-26 01:07:20 +01:00
VulkanRenderer.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
Window.cs Account for swapchain image count change after re-creation (#6652) 2024-04-11 17:24:19 -03:00
WindowBase.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00