From 7a70f28de2b547f393b6a10079a0123ad335f0ba Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 30 Nov 2020 08:35:44 -0800 Subject: [PATCH] freedreno: Don't emit log/trace points in gmem for nondraw For blit/compute non-draw batches, we are already emitting traces in the draw cmdstream, which means we cannot also have traces in the GMEM ring (as that breaks the FIFO ordering of traces) Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_emit.c | 8 ++++++-- src/gallium/drivers/freedreno/a6xx/fd6_gmem.c | 8 ++++++-- src/gallium/drivers/freedreno/freedreno_gmem.c | 10 ++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c index f04c84f2038..59ab1f45274 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c @@ -1174,7 +1174,9 @@ fd6_emit_restore(struct fd_batch *batch, struct fd_ringbuffer *ring) { //struct fd_context *ctx = batch->ctx; - fd_log(batch, "START RESTORE"); + if (!batch->nondraw) { + fd_log(batch, "START RESTORE"); + } fd6_cache_inv(batch, ring); @@ -1290,7 +1292,9 @@ fd6_emit_restore(struct fd_batch *batch, struct fd_ringbuffer *ring) OUT_PKT4(ring, REG_A6XX_RB_LRZ_CNTL, 1); OUT_RING(ring, 0x00000000); - fd_log(batch, "END RESTORE"); + if (!batch->nondraw) { + fd_log(batch, "END RESTORE"); + } } static void diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c index 0c1348ca4b5..9f1a1ecfef3 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.c @@ -1354,9 +1354,13 @@ fd6_emit_sysmem_prep(struct fd_batch *batch) fd6_emit_lrz_flush(ring); if (batch->prologue) { - fd_log(batch, "START PROLOGUE"); + if (!batch->nondraw) { + fd_log(batch, "START PROLOGUE"); + } fd6_emit_ib(ring, batch->prologue); - fd_log(batch, "END PROLOGUE"); + if (!batch->nondraw) { + fd_log(batch, "END PROLOGUE"); + } } /* remaining setup below here does not apply to blit/compute: */ diff --git a/src/gallium/drivers/freedreno/freedreno_gmem.c b/src/gallium/drivers/freedreno/freedreno_gmem.c index 663d61a7da8..b2031cba0ea 100644 --- a/src/gallium/drivers/freedreno/freedreno_gmem.c +++ b/src/gallium/drivers/freedreno/freedreno_gmem.c @@ -632,10 +632,16 @@ render_sysmem(struct fd_batch *batch) if (ctx->query_prepare_tile) ctx->query_prepare_tile(batch, 0, batch->gmem); + if (!batch->nondraw) { + fd_log(batch, "SYSMEM: START DRAW IB"); + } /* emit IB to drawcmds: */ - fd_log(batch, "SYSMEM: START DRAW IB"); ctx->screen->emit_ib(batch->gmem, batch->draw); - fd_log(batch, "SYSMEM: END DRAW IB"); + + if (!batch->nondraw) { + fd_log(batch, "SYSMEM: END DRAW IB"); + } + fd_reset_wfi(batch); if (ctx->emit_sysmem_fini)