From 7a2b23b0bd888826dfcfadef256c0a14323c6317 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Fri, 24 Jan 2025 15:50:00 +0100 Subject: [PATCH] panvk: Skip BY_REGION barriers if we're in a render pass If we are in a render pass, the intra-draw synchronization happens through the FPK parameters, shader waits and draw dependencies, so we can safely skip the barrier in that case. Signed-off-by: Boris Brezillon Reviewed-by: Lars-Ivar Hesselberg Simonsen Part-of: --- src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c index 12ef47a8d58..b3a42491093 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_buffer.c @@ -539,6 +539,12 @@ panvk_per_arch(CmdPipelineBarrier2)(VkCommandBuffer commandBuffer, VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); struct panvk_cs_deps deps; + /* Intra render pass barriers can be skipped iff we're inside a render + * pass. */ + if ((cmdbuf->state.gfx.render.tiler || inherits_render_ctx(cmdbuf)) && + (pDependencyInfo->dependencyFlags & VK_DEPENDENCY_BY_REGION_BIT)) + return; + panvk_per_arch(get_cs_deps)(cmdbuf, pDependencyInfo, &deps); if (deps.needs_draw_flush)