From b8e0c15531e0e2bc7a1af7b9ff308fda9d648f1c Mon Sep 17 00:00:00 2001 From: Luigi Santivetti Date: Thu, 18 Jul 2024 16:59:08 +0100 Subject: [PATCH] pvr: for fragment stages only do not insert a barrier If within a render pass, only insert a mid fragment barrier if needed for stencil load/store. Signed-off-by: Luigi Santivetti Acked-by: Alyssa Rosenzweig Part-of: --- src/imagination/vulkan/pvr_cmd_buffer.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index 38c01241b7e..25534aca034 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -7707,6 +7707,7 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer commandBuffer, uint32_t src_stage_mask; uint32_t dst_stage_mask; bool is_barrier_needed; + VkResult result; PVR_CHECK_COMMAND_BUFFER_BUILDING_STATE(cmd_buffer); @@ -7759,9 +7760,9 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer commandBuffer, switch (src_stage_mask) { case PVR_PIPELINE_STAGE_FRAG_BIT: - is_barrier_needed = !render_pass; + is_barrier_needed = false; - if (is_barrier_needed) + if (!render_pass) break; assert(current_sub_cmd->type == PVR_SUB_CMD_TYPE_GRAPHICS); @@ -7816,23 +7817,18 @@ void pvr_CmdPipelineBarrier2(VkCommandBuffer commandBuffer, pDependencyInfo->pImageMemoryBarriers); if (is_stencil_store_load_needed) { - VkResult result; - + assert(render_pass); result = pvr_cmd_buffer_insert_mid_frag_barrier_event(cmd_buffer, src_stage_mask, dst_stage_mask); if (result != VK_SUCCESS) mesa_loge("Failed to insert mid frag barrier event."); - } else { - if (is_barrier_needed) { - VkResult result; - - result = pvr_cmd_buffer_insert_barrier_event(cmd_buffer, - src_stage_mask, - dst_stage_mask); - if (result != VK_SUCCESS) - mesa_loge("Failed to insert pipeline barrier event."); - } + } else if (is_barrier_needed) { + result = pvr_cmd_buffer_insert_barrier_event(cmd_buffer, + src_stage_mask, + dst_stage_mask); + if (result != VK_SUCCESS) + mesa_loge("Failed to insert pipeline barrier event."); } }