diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2013-02-26 10:49:42 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2013-02-26 10:50:52 +0000 |
commit | 76d46201d7b7abc7c0b6bced9c6fadaf47ad9134 (patch) | |
tree | 98c276d9fe60bfdadd4b436c0c22d440e1ec2875 | |
parent | 1068bf7024d8a6650de020e95efdedcbfd7d3c5e (diff) |
sna: Only use the GPU bo after migrating
If we choose not to migrate the damage to the GPU bo, then it will be
incoherent. This just flattens the logic out as priv->gpu_bo should be
NULL here anyway.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/sna_render.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c index 512be950..1073abb0 100644 --- a/src/sna/sna_render.c +++ b/src/sna/sna_render.c @@ -463,7 +463,7 @@ move_to_gpu(PixmapPtr pixmap, const BoxRec *box, bool blt) w = box->x2 - box->x1; h = box->y2 - box->y1; - if (priv->cpu_bo && !priv->cpu_bo->flush) { + if (priv->cpu_bo) { migrate = true; } else if (w == pixmap->drawable.width && h == pixmap->drawable.height) { migrate = priv->source_count++ > SOURCE_BIAS; @@ -490,14 +490,15 @@ move_to_gpu(PixmapPtr pixmap, const BoxRec *box, bool blt) migrate = count*w*h > pixmap->drawable.width * pixmap->drawable.height; } - if (migrate) { - if (blt) { - if (!sna_pixmap_move_area_to_gpu(pixmap, box, MOVE_READ)) - return NULL; - } else { - if (!sna_pixmap_force_to_gpu(pixmap, MOVE_SOURCE_HINT | MOVE_READ)) - return NULL; - } + if (!migrate) + return NULL; + + if (blt) { + if (!sna_pixmap_move_area_to_gpu(pixmap, box, MOVE_READ)) + return NULL; + } else { + if (!sna_pixmap_force_to_gpu(pixmap, MOVE_SOURCE_HINT | MOVE_READ)) + return NULL; } return priv->gpu_bo; |