On Thu, May 5, 2016 at 1:43 AM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > --- > src/gallium/drivers/radeon/r600_pipe_common.c | 16 ++++++++++++++++ > src/gallium/drivers/radeon/radeon_winsys.h | 2 ++ > src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 8 ++++++++ > src/gallium/winsys/radeon/drm/radeon_drm_cs.c | 8 ++++++++ > 4 files changed, 34 insertions(+) > > diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c > b/src/gallium/drivers/radeon/r600_pipe_common.c > index eac7812..c0579da 100644 > --- a/src/gallium/drivers/radeon/r600_pipe_common.c > +++ b/src/gallium/drivers/radeon/r600_pipe_common.c > @@ -176,6 +176,22 @@ void r600_dma_emit_wait_idle(struct r600_common_context > *rctx) > /* done at the end of DMA calls, so increment this. */ > rctx->num_dma_calls++; > > + /* IBs using too little memory are limited by the IB submission > overhead. > + * IBs using too much memory are limited by the kernel/TTM overhead. > + * Too long IBs create CPU-GPU pipeline bubbles and add latency. > + * > + * This heuristic makes sure that DMA requests are executed > + * very soon or immediately after the call is made and lowers memory > + * usage. It improves texture upload performance by keeping the DMA > + * engine busy while uploads are being submitted. > + * > + * 512 KB of copied data (1 MB / 2) is enough to submit an IB. > + */ > + if (rctx->ws->cs_query_memory_usage(rctx->dma.cs) > 1024 * 1024) { > + rctx->dma.flush(rctx, RADEON_FLUSH_ASYNC, NULL);
FYI, I'm changing this from 1MB to 64MB, which yields slightly better performance. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev