diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-17 10:55:29 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-17 12:57:55 +0000 |
commit | dfbf02b8778719b86e0f5d78ee833a19436d43a0 (patch) | |
tree | 3f56cbb1dc376f6941751a822e99e60282f2e6fd | |
parent | da90afc32f19e9168cbaa4e0cdcd941d12f2c142 (diff) |
sna: Add some DBG breadcrumbs to put_image upload paths
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/kgem.c | 6 | ||||
-rw-r--r-- | src/sna/sna_accel.c | 23 | ||||
-rw-r--r-- | src/sna/sna_damage.c | 6 |
3 files changed, 22 insertions, 13 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 970e462f..9c43d96c 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -289,14 +289,16 @@ kgem_busy(struct kgem *kgem, int handle) static void kgem_bo_retire(struct kgem *kgem, struct kgem_bo *bo) { + DBG(("%s: handle=%d, domain=%d\n", + __FUNCTION__, bo->handle, bo->domain)); assert(!kgem_busy(kgem, bo->handle)); if (bo->domain == DOMAIN_GPU) kgem_retire(kgem); if (bo->exec == NULL) { - DBG(("%s: retiring bo handle=%d (needed flush? %d)\n", - __FUNCTION__, bo->handle, bo->needs_flush)); + DBG(("%s: retiring bo handle=%d (needed flush? %d), rq? %d\n", + __FUNCTION__, bo->handle, bo->needs_flush, bo->rq != NULL)); bo->rq = NULL; list_del(&bo->request); bo->needs_flush = bo->flush; diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 7774cba8..f9c152d7 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -2206,6 +2206,7 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region, sna_put_image_upload_blt(drawable, gc, region, x, y, w, h, bits, stride)) { if (!DAMAGE_IS_ALL(priv->gpu_damage)) { + DBG(("%s: marking damage\n", __FUNCTION__)); if (region_subsumes_drawable(region, &pixmap->drawable)) { sna_damage_destroy(&priv->cpu_damage); list_del(&priv->list); @@ -2264,16 +2265,19 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region, return true; } } else { - if (!region_subsumes_drawable(region, &pixmap->drawable)) { - sna_damage_subtract(&priv->cpu_damage, region); - if (!sna_pixmap_move_to_gpu(pixmap, - MOVE_WRITE)) - return false; - } else { - sna_damage_destroy(&priv->cpu_damage); - list_del(&priv->list); + DBG(("%s: cpu bo will stall, upload damage and discard\n", + __FUNCTION__)); + if (priv->cpu_damage) { + if (!region_subsumes_drawable(region, &pixmap->drawable)) { + sna_damage_subtract(&priv->cpu_damage, region); + if (!sna_pixmap_move_to_gpu(pixmap, + MOVE_WRITE)) + return false; + } else { + sna_damage_destroy(&priv->cpu_damage); + list_del(&priv->list); + } } - sna_pixmap_free_cpu(sna, priv); } } @@ -2292,6 +2296,7 @@ sna_put_zpixmap_blt(DrawablePtr drawable, GCPtr gc, RegionPtr region, return true; if (!DAMAGE_IS_ALL(priv->cpu_damage)) { + DBG(("%s: marking damage\n", __FUNCTION__)); if (region_subsumes_drawable(region, &pixmap->drawable)) { DBG(("%s: replacing entire pixmap\n", __FUNCTION__)); sna_damage_all(&priv->cpu_damage, diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c index 6e456cf5..196f4792 100644 --- a/src/sna/sna_damage.c +++ b/src/sna/sna_damage.c @@ -933,7 +933,7 @@ struct sna_damage *__sna_damage_all(struct sna_damage *damage, struct sna_damage *_sna_damage_is_all(struct sna_damage *damage, int width, int height) { - DBG(("%s(%d, %d)%s\n", __FUNCTION__, width, height, + DBG(("%s(%d, %d)%s?\n", __FUNCTION__, width, height, damage->dirty ? "*" : "")); assert(damage->mode == DAMAGE_ADD); @@ -947,8 +947,10 @@ struct sna_damage *_sna_damage_is_all(struct sna_damage *damage, assert(RegionNotEmpty(&damage->region)); } - if (damage->region.data) + if (damage->region.data) { + DBG(("%s: no, not singular\n", __FUNCTION__)); return damage; + } DBG(("%s: (%d, %d), (%d, %d)\n", __FUNCTION__, damage->extents.x1, damage->extents.y1, |