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
AddressMode.cs
AdvancedBlendDescriptor.cs
AdvancedBlendOp.cs
AdvancedBlendOverlap.cs
AntiAliasing.cs
BlendDescriptor.cs
BlendFactor.cs
BlendOp.cs
BufferAssignment.cs
BufferHandle.cs
BufferRange.cs
Capabilities.cs
ColorF.cs
CompareMode.cs
CompareOp.cs
CounterType.cs
DepthMode.cs
DepthStencilMode.cs
DepthTestDescriptor.cs
DeviceInfo.cs
Extents2D.cs
Extents2DF.cs
Face.cs
Format.cs
FrontFace.cs
HardwareInfo.cs
ICounterEvent.cs
ImageCrop.cs
IndexType.cs
IPipeline.cs
IProgram.cs
IRenderer.cs
ISampler.cs
ITexture.cs
IWindow.cs
LogicalOp.cs
MagFilter.cs
MinFilter.cs
MultisampleDescriptor.cs
Origin.cs
PinnedSpan.cs
PolygonMode.cs
PolygonModeMask.cs
PrimitiveTopology.cs
ProgramLinkStatus.cs
ProgramPipelineState.cs
Rectangle.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Ryujinx.Graphics.GAL.csproj
SamplerCreateInfo.cs
ScreenCaptureImageInfo.cs
ShaderBindings.cs
ShaderInfo.cs
ShaderSource.cs
StencilOp.cs
StencilTestDescriptor.cs
SupportBufferUpdater.cs
SwizzleComponent.cs
Target.cs
TextureCreateInfo.cs
TextureReleaseCallback.cs
UpscaleType.cs
VertexAttribDescriptor.cs
VertexBufferDescriptor.cs
Viewport.cs
ViewportSwizzle.cs