From: Jonathan Marek Date: Wed, 8 Jul 2020 11:46:09 +0000 (-0400) Subject: turnip: fix sysmem CmdClearAttachments 3D fallback breaking GMEM path flush X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9b6486bd3d927e34befb2c5d15261bd5f7ae52c1;p=mesa.git turnip: fix sysmem CmdClearAttachments 3D fallback breaking GMEM path flush It was clearing the flush bits, which are used by both GMEM/SYSMEM paths, but emitting the flushes inside the cond_exec, where they would only run for the sysmem path. Signed-off-by: Jonathan Marek Part-of: --- diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c index 1d25147a6cf..7a66f106ca3 100644 --- a/src/freedreno/vulkan/tu_clear_blit.c +++ b/src/freedreno/vulkan/tu_clear_blit.c @@ -1859,9 +1859,6 @@ tu_clear_sysmem_attachments(struct tu_cmd_buffer *cmd, return; } - /* This clear path behaves like a draw, needs the same flush as tu_draw */ - tu_emit_cache_flush_renderpass(cmd, cs); - /* disable all draw states so they don't interfere * TODO: use and re-use draw states for this path * we have to disable draw states individually to preserve @@ -2077,6 +2074,11 @@ tu_CmdClearAttachments(VkCommandBuffer commandBuffer, TU_FROM_HANDLE(tu_cmd_buffer, cmd, commandBuffer); struct tu_cs *cs = &cmd->draw_cs; + /* sysmem path behaves like a draw, note we don't have a way of using different + * flushes for sysmem/gmem, so this needs to be outside of the cond_exec + */ + tu_emit_cache_flush_renderpass(cmd, cs); + tu_cond_exec_start(cs, CP_COND_EXEC_0_RENDER_MODE_GMEM); tu_clear_gmem_attachments(cmd, attachmentCount, pAttachments, rectCount, pRects); tu_cond_exec_end(cs);