Ryujinx/Ryujinx.Graphics.Vulkan
riperiperi 131baebe2a
Vulkan: Don't create preload command buffer outside a render pass (#3864)
* Vulkan: Don't create preload buffer outside a render pass

The preload command buffer is used to avoid render pass splits and barriers when updating buffer data. However, when a render pass is not active (for example, at the start of a pass, or during compute invocations) buffer uploads can be performed at any time, so the optimization isn't as useful.

This PR makes it so that the preload command buffer is only used for buffer updates outside of a render pass. It's still used for textures as I don't want to shake things up right now regarding how the preload buffer is obtained before some other changes, and texture updates are a lot rarer anyways.

Improves performance slightly in Pokemon Scarlet/Violet (43 -> 48), as it was switching to compute, writing a bunch of buffers inline, then dispatching, then flushing commands... It uses 1 command buffer instead of 2 every time it does this now. Maybe it would be nice to find a faster way to sync without creating so many command buffers in a short period of time.

* Address feedback
2022-11-18 14:58:56 +00:00
..
Queries
Shaders Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
Auto.cs
AutoFlushCounter.cs Periodically Flush Commands for Vulkan (#3689) 2022-09-14 13:48:31 -03:00
BackgroundResources.cs
BitMap.cs
BufferHolder.cs Vulkan: Don't create preload command buffer outside a render pass (#3864) 2022-11-18 14:58:56 +00:00
BufferManager.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
BufferState.cs Convert Quads to Triangles in Vulkan (#3715) 2022-09-20 18:38:48 -03:00
BufferUsageBitmap.cs Support use of buffer ranges with size 0 (#3736) 2022-10-03 20:08:38 -03:00
CacheByRange.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
CommandBufferPool.cs
CommandBufferScoped.cs
Constants.cs
DescriptorSetCollection.cs
DescriptorSetManager.cs
DescriptorSetUpdater.cs Minor improvement to Vulkan pipeline state and bindings management (#3829) 2022-11-10 13:38:38 -03:00
DisposableBuffer.cs
DisposableBufferView.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DisposableFramebuffer.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DisposableImage.cs
DisposableImageView.cs
DisposableMemory.cs
DisposablePipeline.cs
DisposableRenderPass.cs
DisposableSampler.cs
EnumConversion.cs Convert Quads to Triangles in Vulkan (#3715) 2022-09-20 18:38:48 -03:00
FenceHelper.cs
FenceHolder.cs
FormatCapabilities.cs Fix R4G4B4A4 format on Vulkan (#3696) 2022-09-13 07:59:38 +02:00
FormatConverter.cs
FormatTable.cs Fix R4G4B4A4 format on Vulkan (#3696) 2022-09-13 07:59:38 +02:00
FramebufferParams.cs
HardwareCapabilities.cs
HashTableSlim.cs
HelperShader.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
IdList.cs
IndexBufferPattern.cs Fix primitive count calculation for topology conversion (#3763) 2022-10-16 19:25:40 -03:00
IndexBufferState.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
MemoryAllocation.cs
MemoryAllocator.cs
MemoryAllocatorBlockList.cs
MultiFenceHolder.cs
NativeArray.cs
PersistentFlushBuffer.cs
PipelineBase.cs Vulkan: Don't create preload command buffer outside a render pass (#3864) 2022-11-18 14:58:56 +00:00
PipelineConverter.cs Vulkan: Implement multisample <-> non-multisample copies and depth-stencil resolve (#3723) 2022-11-02 18:17:19 -03:00
PipelineDynamicState.cs Vulkan: Use dynamic state for blend constants (#3793) 2022-10-25 23:49:23 +00:00
PipelineFull.cs Update units of memory from decimal to binary prefixes (#3716) 2022-11-16 23:27:42 +01:00
PipelineHelperShader.cs
PipelineLayoutCache.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
PipelineLayoutCacheEntry.cs
PipelineLayoutFactory.cs
PipelineState.cs Minor improvement to Vulkan pipeline state and bindings management (#3829) 2022-11-10 13:38:38 -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 infra: Migrate to .NET 7 (#3795) 2022-11-09 20:22:43 +01:00
SamplerHolder.cs Vulkan: Fix sampler custom border color (#3751) 2022-10-10 08:35:44 +02:00
SemaphoreHolder.cs
Shader.cs Avoid allocating unmanaged string per shader (#3730) 2022-10-02 10:59:34 +02:00
ShaderCollection.cs Vulkan: Don't create preload command buffer outside a render pass (#3864) 2022-11-18 14:58:56 +00:00
SpecInfo.cs Vulkan: Implement multisample <-> non-multisample copies and depth-stencil resolve (#3723) 2022-11-02 18:17:19 -03:00
StagingBuffer.cs Vulkan: Fix some issues with CacheByRange (#3743) 2022-10-08 11:28:27 -03:00
SyncManager.cs
TextureBuffer.cs GPU: Pass SpanOrArray for Texture SetData to avoid copy (#3745) 2022-10-08 12:04:47 -03:00
TextureCopy.cs Vulkan: Implement multisample <-> non-multisample copies and depth-stencil resolve (#3723) 2022-11-02 18:17:19 -03:00
TextureStorage.cs Dispose Vulkan TextureStorage when views hit 0 instead of immediately (#3738) 2022-10-18 23:52:08 +00:00
TextureView.cs Vulkan: Implement multisample <-> non-multisample copies and depth-stencil resolve (#3723) 2022-11-02 18:17:19 -03:00
Vendor.cs
VertexBufferState.cs Fix various issues caused by Vertex/Index buffer conversions (#3762) 2022-10-16 19:38:58 -03:00
VulkanConfiguration.cs
VulkanException.cs
VulkanInitialization.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
VulkanRenderer.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
Window.cs Avalonia - Use embedded window for avalonia (#3674) 2022-09-19 15:05:26 -03:00
WindowBase.cs Avalonia - Use embedded window for avalonia (#3674) 2022-09-19 15:05:26 -03:00