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