Ryujinx/Ryujinx.Graphics.GAL
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
..
Multithreading Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
AddressMode.cs
AdvancedBlendDescriptor.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
AdvancedBlendOp.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
AdvancedBlendOverlap.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
AntiAliasing.cs Add Support for Post Processing Effects (#3616) 2023-02-27 18:11:55 -03:00
BlendDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BlendFactor.cs
BlendOp.cs
BufferAssignment.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BufferHandle.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BufferRange.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Capabilities.cs Move gl_Layer to vertex shader if geometry is not supported (#4368) 2023-02-25 10:39:51 +00:00
ColorF.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
CompareMode.cs
CompareOp.cs
CounterType.cs
DepthMode.cs
DepthStencilMode.cs
DepthTestDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DeviceInfo.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Extents2D.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Extents2DF.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Face.cs
Format.cs GPU: Add fallback when 16-bit formats are not supported (#4108) 2022-12-26 15:50:27 -03:00
FrontFace.cs
HardwareInfo.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
ICounterEvent.cs
ImageCrop.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
IndexType.cs
IPipeline.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
IProgram.cs
IRenderer.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
ISampler.cs
ITexture.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
IWindow.cs Add Support for Post Processing Effects (#3616) 2023-02-27 18:11:55 -03:00
LogicalOp.cs
MagFilter.cs
MinFilter.cs
MultisampleDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Origin.cs
PinnedSpan.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
PolygonMode.cs
PolygonModeMask.cs
PrimitiveTopology.cs
ProgramLinkStatus.cs
ProgramPipelineState.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Rectangle.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Ryujinx.Graphics.GAL.csproj infra: Migrate to .NET 7 (#3795) 2022-11-09 20:22:43 +01:00
SamplerCreateInfo.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
ScreenCaptureImageInfo.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
ShaderBindings.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
ShaderInfo.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
ShaderSource.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
StencilOp.cs
StencilTestDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
SupportBufferUpdater.cs Rename ToSpan to AsSpan (#3556) 2022-08-11 18:07:37 -03:00
SwizzleComponent.cs
Target.cs Update range for remapped sparse textures instead of recreating them (#4442) 2023-03-14 17:08:44 -03:00
TextureCreateInfo.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
TextureReleaseCallback.cs
UpscaleType.cs Add Support for Post Processing Effects (#3616) 2023-02-27 18:11:55 -03:00
VertexAttribDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
VertexBufferDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Viewport.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
ViewportSwizzle.cs