diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2023-09-14 14:58:11 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-14 19:58:11 +0200 |
| commit | 7ccff037e87f82f3461f3e1422235e29800eaa2f (patch) | |
| tree | 280ca9072284926fc24e7c5316b1c92b108888e5 /src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs | |
| parent | a745913329c4f4a135b276212f172578f08bc718 (diff) | |
Fix some Vulkan validation errors (mostly related to barriers) (#5603)
* Replace image barriers inside render pass with more generic memory barrier
* Remove forceStorage since it was creating images with storage bit for formats that are not StorageImage compatible
* Add missing flags on subpass dependency
* Don't call vkCmdSetScissor with a scissor count of 0
* One semaphore per swapchain image
* Remove compute stage from read to write barriers
* Try to improve Pipeline.Barrier nonsense
* Set PipelineStateFlags based on supported stages
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs')
| -rw-r--r-- | src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs b/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs index 7c1ddef8..b2da6103 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineConverter.cs @@ -9,8 +9,12 @@ namespace Ryujinx.Graphics.Vulkan { static class PipelineConverter { - private const AccessFlags SubpassSrcAccessMask = AccessFlags.MemoryReadBit | AccessFlags.MemoryWriteBit | AccessFlags.ColorAttachmentWriteBit; - private const AccessFlags SubpassDstAccessMask = AccessFlags.MemoryReadBit | AccessFlags.MemoryWriteBit | AccessFlags.ShaderReadBit; + private const AccessFlags SubpassAccessMask = + AccessFlags.MemoryReadBit | + AccessFlags.MemoryWriteBit | + AccessFlags.ShaderReadBit | + AccessFlags.ColorAttachmentWriteBit | + AccessFlags.DepthStencilAttachmentWriteBit; public static unsafe DisposableRenderPass ToRenderPass(this ProgramPipelineState state, VulkanRenderer gd, Device device) { @@ -132,8 +136,8 @@ namespace Ryujinx.Graphics.Vulkan 0, PipelineStageFlags.AllGraphicsBit, PipelineStageFlags.AllGraphicsBit, - SubpassSrcAccessMask, - SubpassDstAccessMask, + SubpassAccessMask, + SubpassAccessMask, 0); } @@ -146,8 +150,8 @@ namespace Ryujinx.Graphics.Vulkan 0, PipelineStageFlags.AllGraphicsBit, PipelineStageFlags.AllGraphicsBit, - SubpassSrcAccessMask, - SubpassDstAccessMask, + SubpassAccessMask, + SubpassAccessMask, 0); } |
