From 4071b8e7f32f1801f7e578ce580b22d8ec7b0332 Mon Sep 17 00:00:00 2001 From: SoroushIMG Date: Thu, 15 Jun 2023 13:53:56 +0100 Subject: [PATCH] pvr: Fix barrier insertion on merged subpasses The driver can merge subpasses within a render pass into a single hw render. While doing so it makes the assumption that the subpasses in an hw render will all be submitted in a single job. On vkCmdPipelineBarrier() the driver was previously incorrectly inserting an event sub-cmd on a merged subpass, breaking that assumption leading to incorrect values for input attachments. Signed-off-by: Soroush Kashani Reviewed-by: Frank Binns Fixes: 6d672e033683 ("pvr: Add initial vkCmdPipelineBarrier skeleton.") Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 1ddd47ab0ce..e74eab754c6 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -7620,9 +7620,9 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer commandBuffer, switch (src_stage_mask) { case PVR_PIPELINE_STAGE_FRAG_BIT: - is_barrier_needed = true; + is_barrier_needed = !render_pass; - if (!render_pass) + if (is_barrier_needed) break; assert(current_sub_cmd->type == PVR_SUB_CMD_TYPE_GRAPHICS);