From: Connor Abbott Date: Tue, 7 Jul 2020 15:10:44 +0000 (+0200) Subject: tu: Fix DST_INCOHERENT_FLUSH copy/paste error X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9e48e31fa544582682bf8fae26eabb9bba023dde;p=mesa.git tu: Fix DST_INCOHERENT_FLUSH copy/paste error This was meant to handle incoherent accesses by always flushing them, but it accidentally checked for the coherent variant instead. As a result e.g. a vkCmdClearImage() followed by a renderpass using the image didn't get any flushes, resulting in the same sort of corruption seen with sysmem renderpass clears. This happened to be exposed via some tests that used multiview. Part-of: --- diff --git a/src/freedreno/vulkan/tu_cmd_buffer.c b/src/freedreno/vulkan/tu_cmd_buffer.c index eb3f69a6e80..03130750d32 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.c +++ b/src/freedreno/vulkan/tu_cmd_buffer.c @@ -2317,8 +2317,8 @@ tu_flush_for_access(struct tu_cache_state *cache, #undef DST_FLUSH #define DST_INCOHERENT_FLUSH(domain, flush, invalidate) \ - if (dst_mask & (TU_ACCESS_##domain##_READ | \ - TU_ACCESS_##domain##_WRITE)) { \ + if (dst_mask & (TU_ACCESS_##domain##_INCOHERENT_READ | \ + TU_ACCESS_##domain##_INCOHERENT_WRITE)) { \ flush_bits |= TU_CMD_FLAG_##invalidate | \ (cache->pending_flush_bits & \ (TU_CMD_FLAG_ALL_FLUSH & ~TU_CMD_FLAG_##flush)); \