From 7ba63f516a840fdc72e125d44ff1a98febdaeeda Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 18 Apr 2022 11:16:07 -0700 Subject: [PATCH] turnip: Ignore TOP/BOTTOM_OF_PIPE bits in subpass src/dst dep flags. gfxbench sets these between the gbuffer subpass and the following ones. They should be no-ops as subpass dependencies. gfxbench vk-5-debug perf 12.8 -> 14.6 fps thanks to getting gmem on the gbuffer rendering. Part-of: --- src/freedreno/vulkan/tu_cmd_buffer.c | 4 ++-- src/freedreno/vulkan/tu_pass.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index 5b960110db8..3c0b3257fd3 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -4723,8 +4723,8 @@ tu_barrier(struct tu_cmd_buffer *cmd, * vtx stages which are NOT ok for gmem rendering. * See dep_invalid_for_gmem(). */ - if ((info->srcStageMask & ~framebuffer_space_stages) || - (info->dstStageMask & ~framebuffer_space_stages)) { + if ((info->srcStageMask & ~(framebuffer_space_stages | VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT)) || + (info->dstStageMask & ~(framebuffer_space_stages | VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT))) { cmd->state.disable_gmem = true; } } diff --git a/src/freedreno/vulkan/tu_pass.c b/src/freedreno/vulkan/tu_pass.c index 3b892bee21f..e7bc2c7da0f 100644 --- a/src/freedreno/vulkan/tu_pass.c +++ b/src/freedreno/vulkan/tu_pass.c @@ -74,8 +74,8 @@ dep_invalid_for_gmem(const VkSubpassDependency2 *dep) VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; return - (dep->srcStageMask & ~framebuffer_space_stages) || - (dep->dstStageMask & ~framebuffer_space_stages) || + (dep->srcStageMask & ~(framebuffer_space_stages | VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT)) || + (dep->dstStageMask & ~(framebuffer_space_stages | VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT)) || !(dep->dependencyFlags & VK_DEPENDENCY_BY_REGION_BIT); }