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
Auto.cs
AutoFlushCounter.cs
BackgroundResources.cs
BitMap.cs
BufferHolder.cs
BufferManager.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
BufferState.cs
BufferUsageBitmap.cs
CacheByRange.cs
CommandBufferPool.cs
CommandBufferScoped.cs
Constants.cs
DescriptorSetCollection.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
DescriptorSetManager.cs
DescriptorSetUpdater.cs
DisposableBuffer.cs
DisposableBufferView.cs
DisposableFramebuffer.cs
DisposableImage.cs
DisposableImageView.cs
DisposableMemory.cs
DisposablePipeline.cs
DisposableRenderPass.cs
DisposableSampler.cs
EnumConversion.cs
FenceHelper.cs
FenceHolder.cs
FormatCapabilities.cs
FormatConverter.cs Vulkan backend (#2518) 2022-07-31 18:26:06 -03:00
FormatTable.cs
FramebufferParams.cs
HardwareCapabilities.cs
HashTableSlim.cs
HelperShader.cs
IdList.cs
IndexBufferPattern.cs Fix primitive count calculation for topology conversion (#3763) 2022-10-16 19:25:40 -03:00
IndexBufferState.cs
MemoryAllocation.cs
MemoryAllocator.cs
MemoryAllocatorBlockList.cs
MultiFenceHolder.cs
NativeArray.cs
PersistentFlushBuffer.cs
PipelineBase.cs
PipelineConverter.cs
PipelineDynamicState.cs
PipelineFull.cs
PipelineHelperShader.cs Restride vertex buffer when stride causes attributes to misalign in Vulkan. (#3679) 2022-09-08 20:30:19 -03:00
PipelineLayoutCache.cs
PipelineLayoutCacheEntry.cs
PipelineLayoutFactory.cs
PipelineState.cs
PipelineUid.cs
Ryujinx.Graphics.Vulkan.csproj infra: Migrate to .NET 7 (#3795) 2022-11-09 20:22:43 +01:00
SamplerHolder.cs
SemaphoreHolder.cs
Shader.cs
ShaderCollection.cs
SpecInfo.cs
StagingBuffer.cs
SyncManager.cs
TextureBuffer.cs
TextureCopy.cs
TextureStorage.cs
TextureView.cs
Vendor.cs
VertexBufferState.cs
VulkanConfiguration.cs
VulkanException.cs
VulkanInitialization.cs Implement HLE macro for DrawElementsIndirect (#3748) 2022-11-16 14:53:04 -03:00
VulkanRenderer.cs
Window.cs
WindowBase.cs