Ryujinx-uplift/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 Some code cleanup 2020-01-09 02:13:00 +01:00
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 Some code cleanup 2020-01-09 02:13:00 +01:00
BlendOp.cs Fix incorrect GPU GL blend func values (#1612) 2020-10-13 14:45:41 +11:00
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 Some code cleanup 2020-01-09 02:13:00 +01:00
CompareOp.cs Initial support for the guest OpenGL driver (NVIDIA and Nouveau) 2020-01-09 02:13:00 +01:00
CounterType.cs Initial work 2020-01-09 02:13:00 +01:00
DepthMode.cs Support depth clip mode and disable shader fast math optimization on NVIDIA as a workaround for compiler bugs (?) 2020-01-09 02:13:00 +01:00
DepthStencilMode.cs Some code cleanup 2020-01-09 02:13:00 +01:00
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 Initial work 2020-01-09 02:13:00 +01:00
Format.cs GPU: Add fallback when 16-bit formats are not supported (#4108) 2022-12-26 15:50:27 -03:00
FrontFace.cs Initial work 2020-01-09 02:13:00 +01:00
HardwareInfo.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
ICounterEvent.cs Add a Multithreading layer for the GAL, multi-thread shader compilation at runtime (#2501) 2021-08-27 00:31:29 +02:00
ImageCrop.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
IndexType.cs Initial work 2020-01-09 02:13:00 +01:00
IPipeline.cs Add support for advanced blend (part 1/2) (#2801) 2023-02-19 22:37:37 -03:00
IProgram.cs Implement parallel host shader cache compilation. 2021-04-18 17:33:58 +01:00
IRenderer.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
ISampler.cs Initial work 2020-01-09 02:13:00 +01:00
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 Implement Logical Operation registers and functionality (#1380) 2020-07-10 14:23:15 -03:00
MagFilter.cs Some code cleanup 2020-01-09 02:13:00 +01:00
MinFilter.cs Some code cleanup 2020-01-09 02:13:00 +01:00
MultisampleDescriptor.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Origin.cs Fix wrong face culling once and for all (#1277) 2020-05-28 09:03:07 +10:00
PinnedSpan.cs Vulkan: Migrate buffers between memory types to improve GPU performance (#4540) 2023-03-19 17:56:48 -03:00
PolygonMode.cs Initial tessellation shader support (#2534) 2021-10-18 18:38:04 -03:00
PolygonModeMask.cs Initial work 2020-01-09 02:13:00 +01:00
PrimitiveTopology.cs Initial work 2020-01-09 02:13:00 +01:00
ProgramLinkStatus.cs Implement parallel host shader cache compilation. 2021-04-18 17:33:58 +01:00
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 Add alternative "GL" enum values for StencilOp (#3321) 2022-05-05 21:16:58 +02:00
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 Some code cleanup 2020-01-09 02:13:00 +01:00
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 Initial work 2020-01-09 02:13:00 +01:00
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 Fix wrong face culling once and for all (#1277) 2020-05-28 09:03:07 +10:00