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