Ryujinx/Ryujinx.Graphics.Vulkan
riperiperi b3f0978869
Vulkan: Flush command buffers for queries less aggressively (#4387)
The AutoFlushCounter would flush command buffers on any attachment change (write mask or bindings change) if there was a pending query. This is to get query results as soon as possible for draw skips, but it's assuming that a full occlusion query _pass_ happened, that we want to flush it's data before getting onto draws, rather than the queries being randomly interspersed throughout a pass that also draws.

Xenoblade 2 repeatedly switches between performing a samples passed query and outputting to a render target on each draw, and flips the write mask to do so. Flushing the command buffer every 2 draws isn't ideal, so it's best that we only do this if the pattern matches the large block style of occlusion query.

This change makes this flush only happen after a few consecutive query reports. "Consecutive" is interrupted by attachment changes or command buffer flush.

This doesn't really solve the issue where it resets more queries than it uses, it just stops the game doing it as often. I'm not sure of the best way to do that. The cost of resetting could probably be reduced by using query pools with more than one element and resetting in bulk.
2023-02-09 02:03:41 +01:00
..
MoltenVK Vulkan: Add workarounds for MoltenVK (#4202) 2023-01-13 01:31:21 +01:00
Queries Fix some Vulkan validation errors (#4357) 2023-02-08 14:34:22 +01:00
Shaders Support safe blit on non-2D textures (#4374) 2023-02-07 13:55:59 -03:00
Auto.cs
AutoFlushCounter.cs Vulkan: Flush command buffers for queries less aggressively (#4387) 2023-02-09 02:03:41 +01:00
BackgroundResources.cs
BitMap.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BufferHolder.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
BufferManager.cs Relax Vulkan requirements (#4282) 2023-01-26 18:34:35 -03:00
BufferState.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
BufferUsageBitmap.cs Support use of buffer ranges with size 0 (#3736) 2022-10-03 20:08:38 -03:00
CacheByRange.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
CommandBufferPool.cs Vulkan: Don't flush commands when creating most sync (#4087) 2022-12-29 15:39:04 +01:00
CommandBufferScoped.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
Constants.cs
DescriptorSetCollection.cs
DescriptorSetManager.cs
DescriptorSetUpdater.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
DisposableBuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableBufferView.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
DisposableFramebuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableImage.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableImageView.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableMemory.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposablePipeline.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableRenderPass.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
DisposableSampler.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
EnumConversion.cs chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
FenceHelper.cs
FenceHolder.cs
FormatCapabilities.cs chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
FormatConverter.cs
FormatTable.cs Fix R4G4B4A4 format on Vulkan (#3696) 2022-09-13 07:59:38 +02:00
FramebufferParams.cs Implement safe depth-stencil blit using stencil export extension (#4356) 2023-02-06 00:19:31 -03:00
HardwareCapabilities.cs Implement safe depth-stencil blit using stencil export extension (#4356) 2023-02-06 00:19:31 -03:00
HashTableSlim.cs
HelperShader.cs Support safe blit on non-2D textures (#4374) 2023-02-07 13:55:59 -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 Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
MemoryAllocator.cs Relax Vulkan requirements (#4282) 2023-01-26 18:34:35 -03:00
MemoryAllocatorBlockList.cs Added Generic Math to BitUtils (#3929) 2022-12-26 14:11:05 +00:00
MultiFenceHolder.cs
NativeArray.cs Rename ToSpan to AsSpan (#3556) 2022-08-11 18:07:37 -03:00
PersistentFlushBuffer.cs
PipelineBase.cs Relax Vulkan requirements (#4282) 2023-01-26 18:34:35 -03:00
PipelineConverter.cs Fix some Vulkan validation errors (#4357) 2023-02-08 14:34:22 +01:00
PipelineDynamicState.cs chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
PipelineFull.cs Vulkan: Flush command buffers for queries less aggressively (#4387) 2023-02-09 02:03:41 +01:00
PipelineHelperShader.cs Implement non-MS to MS copies with draws (#3958) 2022-12-04 15:07:11 -03:00
PipelineLayoutCache.cs
PipelineLayoutCacheEntry.cs
PipelineLayoutFactory.cs Fix Redundant Qualifer Warnings (#4091) 2022-12-10 21:21:13 +01:00
PipelineState.cs Implement non-MS to MS copies with draws (#3958) 2022-12-04 15:07:11 -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 Use NuGet Central Package Management to manage package versions solution-wise (#4095) 2022-12-12 16:03:10 +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 chore: Update Silk.NET to 2.16.0 (#3953) 2022-12-01 19:11:56 +01:00
SpecInfo.cs Vulkan: Implement multisample <-> non-multisample copies and depth-stencil resolve (#3723) 2022-11-02 18:17:19 -03:00
StagingBuffer.cs Make structs readonly when applicable (#4002) 2022-12-05 14:47:39 +01:00
SyncManager.cs Vulkan: Don't flush commands when creating most sync (#4087) 2022-12-29 15:39:04 +01:00
TextureBuffer.cs GPU: Pass SpanOrArray for Texture SetData to avoid copy (#3745) 2022-10-08 12:04:47 -03:00
TextureCopy.cs Implement non-MS to MS copies with draws (#3958) 2022-12-04 15:07:11 -03:00
TextureStorage.cs Specify image view usage flags on Vulkan (#4283) 2023-01-15 23:12:52 +01:00
TextureView.cs Fix some Vulkan validation errors (#4357) 2023-02-08 14:34:22 +01:00
Vendor.cs Relax Vulkan requirements (#4282) 2023-01-26 18:34:35 -03:00
VertexBufferState.cs Vulkan: Add workarounds for MoltenVK (#4202) 2023-01-13 01:31:21 +01:00
VulkanConfiguration.cs Use RGBA16 vertex format if RGB16 is not supported on Vulkan (#3552) 2022-08-20 16:20:27 -03:00
VulkanException.cs
VulkanInitialization.cs Implement safe depth-stencil blit using stencil export extension (#4356) 2023-02-06 00:19:31 -03:00
VulkanRenderer.cs Implement safe depth-stencil blit using stencil export extension (#4356) 2023-02-06 00:19:31 -03:00
Window.cs Support safe blit on non-2D textures (#4374) 2023-02-07 13:55:59 -03:00
WindowBase.cs Avalonia - Use embedded window for avalonia (#3674) 2022-09-19 15:05:26 -03:00