radv: Flush before copying with PKT3_WRITE_DATA in CmdUpdateBuffer
authorAlex Smith <asmith@feralinteractive.com>
Tue, 14 Mar 2017 15:26:32 +0000 (15:26 +0000)
committerBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tue, 14 Mar 2017 21:17:03 +0000 (22:17 +0100)
Need to flush before updating the buffer to ensure that the copy is
ordered after previous accesses (assuming the app has performed the
appropriate barriers).

This fixes potential issues due to draws prior to an update reading
the new buffer content, despite having the necessary barriers between
them.

Signed-off-by: Alex Smith <asmith@feralinteractive.com>
Cc: 17.0 <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_meta_buffer.c

index cd2973fa4a9fc015aed6dd4cb83d2c02175310b9..1e94f3b58669fef12b6d70e5145575fc24ea4307 100644 (file)
@@ -524,6 +524,8 @@ void radv_CmdUpdateBuffer(
        assert(!(va & 3));
 
        if (dataSize < 4096) {
+               si_emit_cache_flush(cmd_buffer);
+
                cmd_buffer->device->ws->cs_add_buffer(cmd_buffer->cs, dst_buffer->bo, 8);
 
                radeon_check_space(cmd_buffer->device->ws, cmd_buffer->cs, words + 4);