xf86-video-intel: 3 commits - src/sna/kgem.c src/sna/kgem.h src/sna/sna_damage.c src/sna/sna_display.c src/sna/sna_dri.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Sep 3 10:08:20 PDT 2013


 src/sna/kgem.c        |   11 ++++++++---
 src/sna/kgem.h        |    2 +-
 src/sna/sna_damage.c  |    2 +-
 src/sna/sna_display.c |    6 +++---
 src/sna/sna_dri.c     |    8 ++++----
 5 files changed, 17 insertions(+), 12 deletions(-)

New commits:
commit 47e718bf321f6fe80dc5f797f433b00bc8de91c7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Sep 3 17:37:33 2013 +0100

    sna/dri: Handle failure to move the pixmap into the GPU for CopyRegion
    
    It should not fail, except in extreme cicumstances, and even then we shall
    not crash.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 44c2749..0405186 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -760,7 +760,7 @@ __sna_dri_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
 		struct sna_pixmap *priv;
 		unsigned int flags;
 
-		flags = MOVE_WRITE;
+		flags = MOVE_WRITE | __MOVE_FORCE;
 		if (clip.data ||
 		    clip.extents.x1 > 0 ||
 		    clip.extents.x2 < pixmap->drawable.width ||
@@ -769,10 +769,10 @@ __sna_dri_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
 			flags |= MOVE_READ;
 
 		priv = sna_pixmap_move_to_gpu(pixmap, flags);
-		if (priv)
+		if (priv) {
+			damage(pixmap, priv, region);
 			dst_bo = priv->gpu_bo;
-
-		damage(pixmap, priv, region);
+		}
 	} else
 		sync = false;
 
commit 5c51cd4e9122b7b8ec54c24cdef6d47edc63d1d9
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Sep 3 17:36:33 2013 +0100

    sna: Mark imported PRIME fd as starting in DOMAIN_NONE
    
    Or rather, do not assume anything about the initial domains.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index dcf78b2..e001b01 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -3560,6 +3560,7 @@ struct kgem_bo *kgem_create_for_prime(struct kgem *kgem, int name, uint32_t size
 
 	bo->tiling = tiling.tiling_mode;
 	bo->reusable = false;
+	bo->domain = DOMAIN_NONE;
 
 	debug_alloc__bo(kgem, bo);
 	return bo;
commit 92b750066834195803c9ad65b94184efa5db6e76
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Sep 3 16:25:41 2013 +0100

    sna: Add some more DBG
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 56d32cb..dcf78b2 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -2793,8 +2793,9 @@ void _kgem_submit(struct kgem *kgem)
 	batch_end = kgem_end_batch(kgem);
 	kgem_sna_flush(kgem);
 
-	DBG(("batch[%d/%d]: %d %d %d %d, nreloc=%d, nexec=%d, nfence=%d, aperture=%d\n",
-	     kgem->mode, kgem->ring, batch_end, kgem->nbatch, kgem->surface, kgem->batch_size,
+	DBG(("batch[%d/%d, flags=%x]: %d %d %d %d, nreloc=%d, nexec=%d, nfence=%d, aperture=%d\n",
+	     kgem->mode, kgem->ring, kgem->batch_flags,
+	     batch_end, kgem->nbatch, kgem->surface, kgem->batch_size,
 	     kgem->nreloc, kgem->nexec, kgem->nfence, kgem->aperture));
 
 	assert(kgem->nbatch <= kgem->batch_size);
@@ -3536,12 +3537,15 @@ struct kgem_bo *kgem_create_for_prime(struct kgem *kgem, int name, uint32_t size
 	VG_CLEAR(args);
 	args.fd = name;
 	args.flags = 0;
-	if (drmIoctl(kgem->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args))
+	if (drmIoctl(kgem->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args)) {
+		DBG(("%s(name=%d) fd-to-handle failed, ret=%d\n", __FUNCTION__, name, errno));
 		return NULL;
+	}
 
 	VG_CLEAR(tiling);
 	tiling.handle = args.handle;
 	if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &tiling)) {
+		DBG(("%s(name=%d) get-tiling failed, ret=%d\n", __FUNCTION__, name, errno));
 		gem_close(kgem->fd, args.handle);
 		return NULL;
 	}
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index 49f0eec..f29f81a 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -648,7 +648,7 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
 static inline bool kgem_bo_is_render(struct kgem_bo *bo)
 {
 	DBG(("%s: handle=%d, rq? %d [%d]\n", __FUNCTION__,
-	     bo->handle, bo->rq != NULL, RQ_RING(bo->rq)));
+	     bo->handle, bo->rq != NULL, (int)RQ_RING(bo->rq)));
 	assert(bo->refcnt);
 	return bo->rq && RQ_RING(bo->rq) == I915_EXEC_RENDER;
 }
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index 8d5b4d6..b921d94 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -62,7 +62,7 @@ static inline bool region_is_singular(RegionRec *r)
 
 #if HAS_DEBUG_FULL
 static const char *_debug_describe_region(char *buf, int max,
-					  RegionPtr region)
+					  const RegionRec *region)
 {
 	BoxPtr extents;
 	BoxPtr box;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 263bae9..7bbf40f 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -2580,12 +2580,12 @@ sna_output_init(ScrnInfoPtr scrn, struct sna_mode *mode, int num)
 	if (conn.connection == DRM_MODE_CONNECTED)
 		output->crtc = (void *)(uintptr_t)enc.crtc_id;
 
-	DBG(("%s: created output '%s' %d [%d]  (possible crtc:%x, possible clones:%x), edid=%d, dpms=%d, crtc=%d\n",
-	     __FUNCTION__, name, num, sna_output->id,
+	DBG(("%s: created output '%s' %d [%ld]  (possible crtc:%x, possible clones:%x), edid=%d, dpms=%d, crtc=%lu\n",
+	     __FUNCTION__, name, num, (long)sna_output->id,
 	     (uint32_t)output->possible_crtcs,
 	     (uint32_t)output->possible_clones,
 	     sna_output->edid_idx, sna_output->dpms_id,
-	     (uintptr_t)output->crtc));
+	     (unsigned long)(uintptr_t)output->crtc));
 
 	return true;
 


More information about the xorg-commit mailing list