[Mesa-dev] [PATCH] radv: do not sync CP DMA when copying buffers

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Thu Sep 27 06:19:16 UTC 2018


Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
On Wed, Sep 26, 2018 at 11:19 AM Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
>
> We already track if the DMA engine is busy/idle with a flag,
> and we emit a packet that waits for all CP DMA operations
> to be complete. This is done at end of command buffer because
> the kernel doesn't wait for them, and also when emitting
> barriers, so it should be safe.
>
> This improves small copies for both aligned and unaligned sizes.
>
> Aligned sizes:
> BEFORE:
> 1 KB: 59.840000 ms
> 2 KB: 71.200000 ms
> AFTER:
> 1 KB: 31.200000 ms
> 2 KB: 31.040000 ms
>
> Unaligned sizes:
> BEFORE:
> 2 KB: 68.3200 ms
> 3 KB: 79.3600 ms
> 5 KB: 76.6400 ms
> 9 KB: 90.8800 ms
> 17 KB: 116.0000 ms
> AFTER:
> 2 KB: 31.0400 ms
> 3 KB: 32.0000 ms
> 5 KB: 30.8800 ms
> 9 KB: 30.5600 ms
> 17 KB: 29.6000 ms
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/vulkan/si_cmd_buffer.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c
> index 7ff1717022..a0562f9cb5 100644
> --- a/src/amd/vulkan/si_cmd_buffer.c
> +++ b/src/amd/vulkan/si_cmd_buffer.c
> @@ -1215,6 +1215,8 @@ void si_cp_dma_buffer_copy(struct radv_cmd_buffer *cmd_buffer,
>                                   size + skipped_size + realign_size,
>                                   &dma_flags);
>
> +               dma_flags &= ~CP_DMA_SYNC;
> +
>                 si_emit_cp_dma(cmd_buffer, main_dest_va, main_src_va,
>                                byte_count, dma_flags);
>
> --
> 2.19.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list