diff options
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/PipelineBase.cs')
-rw-r--r-- | Ryujinx.Graphics.Vulkan/PipelineBase.cs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/Ryujinx.Graphics.Vulkan/PipelineBase.cs index 55c3fea2..4efe61bf 100644 --- a/Ryujinx.Graphics.Vulkan/PipelineBase.cs +++ b/Ryujinx.Graphics.Vulkan/PipelineBase.cs @@ -49,7 +49,6 @@ namespace Ryujinx.Graphics.Vulkan private Auto<DisposableFramebuffer> _framebuffer; private Auto<DisposableRenderPass> _renderPass; private int _writtenAttachmentCount; - private bool _renderPassActive; private readonly DescriptorSetUpdater _descriptorSetUpdater; @@ -73,6 +72,7 @@ namespace Ryujinx.Graphics.Vulkan private PipelineColorBlendAttachmentState[] _storedBlend; public ulong DrawCount { get; private set; } + public bool RenderPassActive { get; private set; } public unsafe PipelineBase(VulkanRenderer gd, Device device) { @@ -838,6 +838,11 @@ namespace Ryujinx.Graphics.Vulkan stages.CopyTo(_newState.Stages.AsSpan().Slice(0, stages.Length)); SignalStateChange(); + + if (_program.IsCompute) + { + EndRenderPass(); + } } public void Specialize<T>(in T data) where T : unmanaged @@ -1451,7 +1456,7 @@ namespace Ryujinx.Graphics.Vulkan private unsafe void BeginRenderPass() { - if (!_renderPassActive) + if (!RenderPassActive) { var renderArea = new Rect2D(null, new Extent2D(FramebufferParams.Width, FramebufferParams.Height)); var clearValue = new ClearValue(); @@ -1467,18 +1472,18 @@ namespace Ryujinx.Graphics.Vulkan }; Gd.Api.CmdBeginRenderPass(CommandBuffer, renderPassBeginInfo, SubpassContents.Inline); - _renderPassActive = true; + RenderPassActive = true; } } public void EndRenderPass() { - if (_renderPassActive) + if (RenderPassActive) { PauseTransformFeedbackInternal(); Gd.Api.CmdEndRenderPass(CommandBuffer); SignalRenderPassEnd(); - _renderPassActive = false; + RenderPassActive = false; } } |