Ryujinx/Ryujinx.Graphics.Vulkan
riperiperi 9f1cf6458c
Vulkan: Migrate buffers between memory types to improve GPU performance (#4540)
* Initial implementation of migration between memory heaps

- Missing OOM handling
- Missing `_map` data safety when remapping
  - Copy may not have completed yet (needs some kind of fence)
  - Map may be unmapped before it is done being used. (needs scoped access)
- SSBO accesses are all "writes" - maybe pass info in another way.
- Missing keeping map type when resizing buffers (should this be done?)

* Ensure migrated data is in place before flushing.

* Fix issue where old waitable would be signalled.

- There is a real issue where existing Auto<> references need to be replaced.

* Swap bound Auto<> instances when swapping buffer backing

* Fix conversion buffers

* Don't try move buffers if the host has shared memory.

* Make GPU methods return PinnedSpan with scope

* Storage Hint

* Fix stupidity

* Fix rebase

* Tweak rules

Attempt to sidestep BOTW slowdown

* Remove line

* Migrate only when command buffers flush

* Change backing swap log to debug

* Address some feedback

* Disallow backing swap when the flush lock is held by the current thread

* Make PinnedSpan from ReadOnlySpan explicitly unsafe

* Fix some small issues

- Index buffer swap fixed
- Allocate DeviceLocal buffers using a separate block list to images.

* Remove alternative flags

* Address feedback
2023-03-19 17:56:48 -03:00
..
Effects Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
MoltenVK Minor code formatting (#4498) 2023-03-04 14:43:08 +01:00
Queries GPU: Scale counter results before addition (#4471) 2023-03-12 18:01:15 +01:00
Shaders Add copy dependency for some incompatible texture formats (#4380) 2023-02-21 19:21:57 -03:00
Auto.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
AutoFlushCounter.cs Vulkan: Flush command buffers for queries less aggressively (#4387) 2023-02-09 02:03:41 +01:00
BackgroundResources.cs Minor code formatting (#4498) 2023-03-04 14:43:08 +01:00
BitMap.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BufferAllocationType.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
BufferHolder.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
BufferManager.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
BufferState.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
BufferUsageBitmap.cs Support use of buffer ranges with size 0 (#3736) 2022-10-03 20:08:38 -03:00
CacheByRange.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
CommandBufferPool.cs Vulkan: Don't flush commands when creating most sync (#4087) 2022-12-29 15:39:04 +01:00
CommandBufferScoped.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Constants.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DescriptorSetCollection.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DescriptorSetManager.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DescriptorSetUpdater.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
DisposableBuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableBufferView.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
DisposableFramebuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableImage.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableImageView.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableMemory.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposablePipeline.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableRenderPass.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableSampler.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
EnumConversion.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
FenceHelper.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
FenceHolder.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
FormatCapabilities.cs chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
FormatConverter.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
FormatTable.cs Fix R4G4B4A4 format on Vulkan (#3696) 2022-09-13 07:59:38 +02:00
FramebufferParams.cs Implement safe depth-stencil blit using stencil export extension (#4356) 2023-02-06 00:19:31 -03:00
HardwareCapabilities.cs Vulkan: Support list topology primitive restart (#4483) 2023-02-26 19:19:00 -03:00
HashTableSlim.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
HelperShader.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
IdList.cs Minor code formatting (#4498) 2023-03-04 14:43:08 +01:00
IndexBufferPattern.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
IndexBufferState.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
MemoryAllocation.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
MemoryAllocator.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
MemoryAllocatorBlockList.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
MultiFenceHolder.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
NativeArray.cs Add Support for Post Processing Effects (#3616) 2023-02-27 18:11:55 -03:00
PersistentFlushBuffer.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
PipelineBase.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
PipelineConverter.cs vulkan: Respect VK_KHR_portability_subset vertex stride alignment (#4419) 2023-02-15 08:41:48 +00:00
PipelineDynamicState.cs vulkan: Do not call vkCmdSetViewport when viewportCount is 0 (#4406) 2023-02-13 20:32:20 +00:00
PipelineFull.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
PipelineHelperShader.cs Implement non-MS to MS copies with draws (#3958) 2022-12-04 15:07:11 -03:00
PipelineLayoutCache.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
PipelineLayoutCacheEntry.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
PipelineLayoutFactory.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
PipelineState.cs Vulkan: Support list topology primitive restart (#4483) 2023-02-26 19:19:00 -03:00
PipelineUid.cs Minor improvement to Vulkan pipeline state and bindings management (#3829) 2022-11-10 13:38:38 -03:00
Ryujinx.Graphics.Vulkan.csproj misc: Some dependencies cleanup (#4507) 2023-03-12 03:24:11 +01:00
SamplerHolder.cs Vulkan: Fix sampler custom border color (#3751) 2022-10-10 08:35:44 +02:00
SemaphoreHolder.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
Shader.cs Avoid allocating unmanaged string per shader (#3730) 2022-10-02 10:59:34 +02:00
ShaderCollection.cs chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
SpecInfo.cs Misc performance tweaks (#4509) 2023-03-11 17:05:48 -03:00
StagingBuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
SyncManager.cs Vulkan: Don't flush commands when creating most sync (#4087) 2022-12-29 15:39:04 +01:00
TextureBuffer.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
TextureCopy.cs Implement non-MS to MS copies with draws (#3958) 2022-12-04 15:07:11 -03:00
TextureStorage.cs vulkan: Clean up MemoryAllocator (#4418) 2023-02-15 07:50:26 +01:00
TextureView.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
Vendor.cs Relax Vulkan requirements (#4282) 2023-01-26 18:34:35 -03:00
VertexBufferState.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
VulkanConfiguration.cs Use RGBA16 vertex format if RGB16 is not supported on Vulkan (#3552) 2022-08-20 16:20:27 -03:00
VulkanException.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
VulkanInitialization.cs Vulkan: Support list topology primitive restart (#4483) 2023-02-26 19:19:00 -03:00
VulkanRenderer.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
Window.cs Misc performance tweaks (#4509) 2023-03-11 17:05:48 -03:00
WindowBase.cs Add Support for Post Processing Effects (#3616) 2023-02-27 18:11:55 -03:00