From e1c3e6ce79c73d12c814cfda76dbc0df184902ee Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 30 Jun 2014 19:56:39 +0100 Subject: [PATCH] sna: Add DBG breadcrumbs before flushes in BLT Signed-off-by: Chris Wilson --- src/sna/sna_blt.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c index d6f986a1..9b4d0bc8 100644 --- a/src/sna/sna_blt.c +++ b/src/sna/sna_blt.c @@ -89,8 +89,10 @@ static const uint8_t fill_ROP[] = { static void nop_done(struct sna *sna, const struct sna_composite_op *op) { assert(sna->kgem.nbatch <= KGEM_BATCH_SIZE(&sna->kgem)); - if (sna->kgem.nexec > 1 && __kgem_ring_empty(&sna->kgem)) + if (sna->kgem.nexec > 1 && __kgem_ring_empty(&sna->kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(&sna->kgem); + } (void)op; } @@ -100,6 +102,7 @@ static void gen6_blt_copy_done(struct sna *sna, const struct sna_composite_op *o assert(kgem->nbatch <= KGEM_BATCH_SIZE(kgem)); if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(kgem); return; } @@ -2865,8 +2868,10 @@ static void convert_done(struct sna *sna, const struct sna_composite_op *op) struct kgem *kgem = &sna->kgem; assert(kgem->nbatch <= KGEM_BATCH_SIZE(kgem)); - if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) + if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(kgem); + } kgem_bo_destroy(kgem, op->src.bo); sna_render_composite_redirect_done(sna, op); @@ -3620,8 +3625,10 @@ bool sna_blt_fill_boxes(struct sna *sna, uint8_t alu, } } while (nbox); - if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) + if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(kgem); + } return true; } @@ -3944,6 +3951,7 @@ bool sna_blt_copy_boxes(struct sna *sna, uint8_t alu, } if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(kgem); } else if (kgem->gen >= 060 && src_bo == dst_bo && kgem_check_batch(kgem, 3)) { uint32_t *b = kgem->batch + kgem->nbatch; @@ -4093,8 +4101,10 @@ bool sna_blt_copy_boxes__with_alpha(struct sna *sna, uint8_t alu, box++; } - if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) + if (kgem->nexec > 1 && __kgem_ring_empty(kgem)) { + DBG(("%s: flushing BLT operation on empty ring\n", __FUNCTION__)); _kgem_submit(kgem); + } sna->blt_state.fill_bo = 0; return true;