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 <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5775>
diff --git a/src/freedreno/vulkan/tu_clear_blit.c b/src/freedreno/vulkan/tu_clear_blit.c
index 1d25147..7a66f10 100644
--- a/src/freedreno/vulkan/tu_clear_blit.c
+++ b/src/freedreno/vulkan/tu_clear_blit.c
@@ -1859,9 +1859,6 @@
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_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);