diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-06-17 09:37:15 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-06-17 09:37:15 +0100 |
commit | f3869d60cc3bc349d1efba642baa011378f1c09b (patch) | |
tree | 8e690a50ff7df016c88f26eb4a0ee3f0ec6ecf4c | |
parent | 39f0b0ae17d00402971bb62555d3807bdf39ee93 (diff) |
sna/display: Apply damage for the fbcon copy
... so that any immediate shadow usage will read back the fbcon
contents.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/sna_display.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index bab64ea7..c1913dec 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -498,7 +498,8 @@ void sna_copy_fbcon(struct sna *sna) { xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(sna->scrn); drmModeFBPtr fbcon; - struct kgem_bo *fbcon_bo; + struct sna_pixmap *priv; + struct kgem_bo *bo; BoxRec box; int i; @@ -525,18 +526,22 @@ void sna_copy_fbcon(struct sna *sna) box.x2 = fbcon->width; box.y2 = fbcon->height; - fbcon_bo = sna_create_bo_for_fbcon(sna, fbcon); - if (fbcon_bo == NULL) + bo = sna_create_bo_for_fbcon(sna, fbcon); + if (bo == NULL) goto cleanup_fbcon; + priv = sna_pixmap(sna->front); + assert(priv && priv->gpu_bo); + sna->render.copy_boxes(sna, GXcopy, - sna->front, fbcon_bo, 0, 0, - sna->front, sna_pixmap_get_bo(sna->front), + sna->front, bo, 0, 0, + sna->front, priv->gpu_bo, (sna->front->drawable.width - fbcon->width)/2, (sna->front->drawable.height - fbcon->height)/2, &box, 1); + sna_damage_add_box(&priv->gpu_damage, &box); - kgem_bo_destroy(&sna->kgem, fbcon_bo); + kgem_bo_destroy(&sna->kgem, bo); cleanup_fbcon: drmModeFreeFB(fbcon); |