diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 6324a1d9999..1b74e91a459 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -184,7 +184,7 @@ tu6_emit_flushes(struct tu_cmd_buffer *cmd_buffer, } /* "Normal" cache flushes outside the renderpass, that don't require any special handling */ -static void +void tu_emit_cache_flush(struct tu_cmd_buffer *cmd_buffer) { tu6_emit_flushes(cmd_buffer, &cmd_buffer->cs, &cmd_buffer->state.cache); diff --git a/src/freedreno/vulkan/tu_cmd_buffer.h b/src/freedreno/vulkan/tu_cmd_buffer.h index c7311b47968..570cf61b48b 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.h +++ b/src/freedreno/vulkan/tu_cmd_buffer.h @@ -624,6 +624,9 @@ void tu_render_pass_state_merge(struct tu_render_pass_state *dst, VkResult tu_cmd_buffer_begin(struct tu_cmd_buffer *cmd_buffer, const VkCommandBufferBeginInfo *pBeginInfo); +void +tu_emit_cache_flush(struct tu_cmd_buffer *cmd_buffer); + void tu_emit_cache_flush_renderpass(struct tu_cmd_buffer *cmd_buffer); void tu_emit_cache_flush_ccu(struct tu_cmd_buffer *cmd_buffer, diff --git a/src/freedreno/vulkan/tu_query.cc b/src/freedreno/vulkan/tu_query.cc index 2084d9a0b20..03954abd98f 100644 --- a/src/freedreno/vulkan/tu_query.cc +++ b/src/freedreno/vulkan/tu_query.cc @@ -614,6 +614,9 @@ emit_copy_query_pool_results(struct tu_cmd_buffer *cmdbuf, VkDeviceSize stride, VkQueryResultFlags flags) { + /* Flush cache for the buffer to copy to. */ + tu_emit_cache_flush(cmdbuf); + /* From the Vulkan 1.1.130 spec: * * vkCmdCopyQueryPoolResults is guaranteed to see the effect of previous