summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-01-17 10:55:29 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2012-01-17 12:57:55 +0000
commitdfbf02b8778719b86e0f5d78ee833a19436d43a0 (patch)
tree3f56cbb1dc376f6941751a822e99e60282f2e6fd
parentda90afc32f19e9168cbaa4e0cdcd941d12f2c142 (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.c6
-rw-r--r--src/sna/sna_accel.c23
-rw-r--r--src/sna/sna_damage.c6
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,