Mesa (main): turnip: Ignore TOP/BOTTOM_OF_PIPE bits in subpass src/dst dep flags.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 19 19:07:29 UTC 2022


Module: Mesa
Branch: main
Commit: 7ba63f516a840fdc72e125d44ff1a98febdaeeda
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7ba63f516a840fdc72e125d44ff1a98febdaeeda

Author: Emma Anholt <emma at anholt.net>
Date:   Mon Apr 18 11:16:07 2022 -0700

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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15982>

---

 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);
 }
 



More information about the mesa-commit mailing list