From 753abf8b45925392f23aa14fbcf2aab89d86a2de 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: (cherry picked from commit 4071b8e7f32f1801f7e578ce580b22d8ec7b0332) --- .pick_status.json | 2 +- src/imagination/vulkan/pvr_cmd_buffer.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 22c4cf03740..ac2e69f371a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1930,7 +1930,7 @@ "description": "pvr: Fix barrier insertion on merged subpasses", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "6d672e0336836bdbf3d444f7febc74f5c91e7de1" }, diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 72c5da861ae..dd04990f5b8 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -7298,9 +7298,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);