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/TextureView.cs | |
parent | a745913329c4f4a135b276212f172578f08bc718 (diff) |
Fix some Vulkan validation errors (mostly related to barriers) (#5603)1.1.1014
* 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/TextureView.cs')
-rw-r--r-- | src/Ryujinx.Graphics.Vulkan/TextureView.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/TextureView.cs b/src/Ryujinx.Graphics.Vulkan/TextureView.cs index 9fc50f67..09128f00 100644 --- a/src/Ryujinx.Graphics.Vulkan/TextureView.cs +++ b/src/Ryujinx.Graphics.Vulkan/TextureView.cs @@ -435,6 +435,34 @@ namespace Ryujinx.Graphics.Vulkan ImageAspectFlags.ColorBit); } + public static unsafe void InsertMemoryBarrier( + Vk api, + CommandBuffer commandBuffer, + AccessFlags srcAccessMask, + AccessFlags dstAccessMask, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask) + { + MemoryBarrier memoryBarrier = new() + { + SType = StructureType.MemoryBarrier, + SrcAccessMask = srcAccessMask, + DstAccessMask = dstAccessMask, + }; + + api.CmdPipelineBarrier( + commandBuffer, + srcStageMask, + dstStageMask, + DependencyFlags.None, + 1, + memoryBarrier, + 0, + null, + 0, + null); + } + public static unsafe void InsertImageBarrier( Vk api, CommandBuffer commandBuffer, |