summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>2017-03-14 21:46:54 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2017-03-15 18:02:32 +0000
commit01c264c35caf2f4fa76c1f689b0826a9553106fa (patch)
tree8b48002d92a3bfb30042d14f64c459384db8f3d7 /src
parent1d143f0018d29c7f3867a8a7f3249aeeb931c1d4 (diff)
radv: Emit cache flushes before CP DMA.
The flushes could be due to TRANSFER barriers. Signed-off-by: Bas Nieuwenhuizen <basni@google.com> Cc: 17.0 <mesa-stable@lists.freedesktop.org> Reviewed-by: Dave Airlie <airlied@redhat.com> (cherry picked from commit cce43f6d8c40222099badaf52344d6a0eed993f3)
Diffstat (limited to 'src')
-rw-r--r--src/amd/vulkan/si_cmd_buffer.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c
index 0a78e047246..332f9ffdf67 100644
--- a/src/amd/vulkan/si_cmd_buffer.c
+++ b/src/amd/vulkan/si_cmd_buffer.c
@@ -853,6 +853,7 @@ void si_cp_dma_buffer_copy(struct radv_cmd_buffer *cmd_buffer,
uint64_t main_src_va, main_dest_va;
uint64_t skipped_size = 0, realign_size = 0;
+ si_emit_cache_flush(cmd_buffer);
if (cmd_buffer->device->instance->physicalDevice.rad_info.family <= CHIP_CARRIZO ||
cmd_buffer->device->instance->physicalDevice.rad_info.family == CHIP_STONEY) {
@@ -916,6 +917,8 @@ void si_cp_dma_clear_buffer(struct radv_cmd_buffer *cmd_buffer, uint64_t va,
assert(va % 4 == 0 && size % 4 == 0);
+ si_emit_cache_flush(cmd_buffer);
+
while (size) {
unsigned byte_count = MIN2(size, CP_DMA_MAX_BYTE_COUNT);
unsigned dma_flags = 0;