xf86-video-intel: src/sna/sna_accel.c src/sna/sna_display.c
Chris Wilson
ickle at kemper.freedesktop.org
Fri Sep 7 08:59:10 PDT 2012
src/sna/sna_accel.c | 9 ++++++++-
src/sna/sna_display.c | 36 ++++++++++++++++++------------------
2 files changed, 26 insertions(+), 19 deletions(-)
New commits:
commit 2de7d2d8150d648815feb74a3ae2239b908b971e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Sep 7 16:56:33 2012 +0100
sna/prime: Fixup attaching the randr14 scanout pixmap
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 6baa37c..792d007 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1020,7 +1020,11 @@ sna_set_shared_pixmap_backing(PixmapPtr pixmap, void *fd_handle)
struct sna_pixmap *priv;
struct kgem_bo *bo;
- DBG(("%s: pixmap=%ld\n", __FUNCTION__, pixmap->drawable.serialNumber));
+ DBG(("%s: pixmap=%ld, size=%dx%d, depth=%d/%d, stride=%d\n",
+ __FUNCTION__, pixmap->drawable.serialNumber,
+ pixmap->drawable.width, pixmap->drawable.height,
+ pixmap->drawable.depth, pixmap->drawable.bitsPerPixel,
+ pixmap->devKind));
priv = sna_pixmap(pixmap);
if (priv == NULL)
@@ -13691,6 +13695,9 @@ static struct sna_pixmap *sna_accel_scanout(struct sna *sna)
if (sna->vblank_interval == 0)
return NULL;
+ if (sna->front == NULL)
+ return NULL;
+
priv = sna_pixmap(sna->front);
return priv && priv->gpu_bo ? priv : NULL;
}
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index ff24ed3..beafb3b 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -569,7 +569,6 @@ sna_crtc_apply(xf86CrtcPtr crtc)
arg.crtc_id = sna_crtc->id;
arg.fb_id = fb_id(sna_crtc->bo);
if (sna_crtc->transform) {
- assert(sna_crtc->shadow);
arg.x = 0;
arg.y = 0;
} else {
@@ -714,6 +713,9 @@ static void update_flush_interval(struct sna *sna)
continue;
}
+ DBG(("%s: CRTC:%d (pipe %d) vrefresh=%d\n",
+ __FUNCTION__,i, to_sna_crtc(crtc)->pipe,
+ xf86ModeVRefresh(&crtc->mode)));
max_vrefresh = max(max_vrefresh, xf86ModeVRefresh(&crtc->mode));
}
@@ -942,7 +944,21 @@ static struct kgem_bo *sna_crtc_attach(xf86CrtcPtr crtc)
struct kgem_bo *bo;
sna_crtc->transform = false;
- if (use_shadow(sna, crtc)) {
+ if (sna_crtc->scanout_pixmap) {
+ DBG(("%s: attaching to scanout pixmap\n", __FUNCTION__));
+
+ bo = sna_pixmap_pin(sna_crtc->scanout_pixmap, PIN_SCANOUT);
+ if (bo == NULL)
+ return NULL;
+
+ if (!get_fb(sna, bo,
+ sna_crtc->scanout_pixmap->drawable.width,
+ sna_crtc->scanout_pixmap->drawable.height))
+ return NULL;
+
+ sna_crtc->transform = true;
+ return kgem_bo_reference(bo);
+ } else if (use_shadow(sna, crtc)) {
if (!sna_crtc_enable_shadow(sna, sna_crtc))
return NULL;
@@ -963,22 +979,6 @@ static struct kgem_bo *sna_crtc_attach(xf86CrtcPtr crtc)
sna_crtc->transform = true;
return bo;
- } else if (sna_crtc->scanout_pixmap) {
- DBG(("%s: attaching to scanout pixmap\n", __FUNCTION__));
- if (!sna_crtc_enable_shadow(sna, sna_crtc))
- return NULL;
-
- bo = sna_pixmap_pin(sna_crtc->scanout_pixmap, PIN_SCANOUT);
- if (bo == NULL)
- return NULL;
-
- if (!get_fb(sna, bo,
- sna_crtc->scanout_pixmap->drawable.width,
- sna_crtc->scanout_pixmap->drawable.height))
- return NULL;
-
- sna_crtc->transform = true;
- return kgem_bo_reference(bo);
} else if (sna->flags & SNA_TEAR_FREE) {
DBG(("%s: tear-free updates requested\n", __FUNCTION__));
More information about the xorg-commit
mailing list