[Mesa-dev] [PATCH 0/2] radeon: Use the DMA engine for buffer downloads

Marek Olšák maraeo at gmail.com
Mon Mar 3 17:08:58 PST 2014


Could you please do this without changing u_upload_mgr? You can still
use u_upload_alloc to allocate buffer memory in the driver and the map
buffer read/write flags are not important with persistent coherent
buffer mappings anyway.

Marek

On Mon, Mar 3, 2014 at 9:29 PM, Niels Ole Salscheider
<niels_ole at salscheider-online.de> wrote:
> Using the DMA engine for buffer downloads vastly improves performance. This is
> because reads from VRAM by the CPU are slow because of the high latency of the
> PCIe bus.
>
> The first patch allows u_upload_mgr to be used for downloads, too. The second
> patch then uses u_upload_mgr in the radeon driver for downloads.
> I considered to rename u_upload_mgr to u_transfer_mgr since it might be
> confusing that an "upload manager" can be used for downloads. But then again we
> also have "transfers" so that u_transfer_mgr might also be confusing. Thus, I
> decided not to rename it for now.
>
> Without these patches, the buffer_bandwidth benchmark from uCLbench gives me:
>
> ./buffer_bandwidth --size=20000000 --iterations=100
> # device 0: AMD BARTS // type gpu (192 MB global memory, 64 KB constant memory,
>     32 KB local memory)
> 1/1 direct     20000000 Bytes   759.29 MB/s(HD)         17.13 MB/s(DD)
>         14.61 MB/s(DH)
>
> With these paches, the read performance is much better:
>
> ./buffer_bandwidth --size=20000000 --iterations=100
> # device 0: AMD BARTS // type gpu (192 MB global memory, 64 KB constant memory,
>     32 KB local memory)
> 1/1 direct     20000000 Bytes   759.90 MB/s(HD)         613.49 MB/s(DD)
>         1841.07 MB/s(DH)
>
> Judging by these numbers, it might even make sense to use the DMA engine for
> larger buffer downloads...
>
> Niels Ole Salscheider (2):
>   util/u_upload_mgr: Allow to also use it for downloads
>   radeon: Use transfer manager for buffer downloads
>
>  src/gallium/auxiliary/hud/hud_context.c         |  3 +-
>  src/gallium/auxiliary/util/u_blitter.c          |  3 +-
>  src/gallium/auxiliary/util/u_upload_mgr.c       | 49 +++++++++++-----
>  src/gallium/auxiliary/util/u_upload_mgr.h       | 13 ++++-
>  src/gallium/auxiliary/util/u_vbuf.c             |  3 +-
>  src/gallium/auxiliary/vl/vl_compositor.c        |  3 +-
>  src/gallium/drivers/ilo/ilo_context.c           |  3 +-
>  src/gallium/drivers/r300/r300_context.c         |  3 +-
>  src/gallium/drivers/radeon/r600_buffer_common.c | 78 +++++++++++++++++++------
>  src/gallium/drivers/radeon/r600_pipe_common.c   | 14 ++++-
>  src/gallium/drivers/radeon/r600_pipe_common.h   |  1 +
>  src/mesa/state_tracker/st_context.c             |  9 ++-
>  12 files changed, 136 insertions(+), 46 deletions(-)
>
> --
> 1.9.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list