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

Chris Wilson ickle at kemper.freedesktop.org
Mon Dec 9 02:51:59 PST 2013


 src/sna/kgem.h        |    5 +----
 src/sna/sna_accel.c   |    2 +-
 src/sna/sna_display.c |   16 ++++++++--------
 3 files changed, 10 insertions(+), 13 deletions(-)

New commits:
commit ade25f4f95994b565a8ed8eb3811ff7453a8b0e5
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Dec 9 10:49:56 2013 +0000

    sna: Only discard READ hint for TearFree copy iff it subsumes the pixmap
    
    Remembering that the target window may be smaller than its backing
    pixmap.
    
    Reported-by: Andreas Klauer <Andreas.Klauer at metamorpher.de>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72430
    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 c11e2cc..f7da098 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -3518,7 +3518,7 @@ use_gpu_bo:
 		if (flags & IGNORE_CPU) {
 			region.extents = *box;
 			region.data = NULL;
-			if (region_subsumes_drawable(&region, drawable))
+			if (region_subsumes_drawable(&region, &pixmap->drawable))
 				hint = MOVE_WRITE;
 		}
 
commit a66db75bf370549f438796433f3e3fb5f7f0b2a3
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Dec 9 10:32:05 2013 +0000

    sna: Fallback gracefully when redisplaying after a GPU hang
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 77d34ae..e4dca71 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4098,7 +4098,7 @@ static void transformed_box(BoxRec *box, xf86CrtcPtr crtc)
 }
 
 static void
-sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region)
+sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo *bo)
 {
 	struct sna *sna = to_sna(crtc->scrn);
 	struct sna_crtc *sna_crtc = to_sna_crtc(crtc);
@@ -4111,7 +4111,7 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region)
 
 	DBG(("%s: compositing transformed damage boxes\n", __FUNCTION__));
 
-	ptr = kgem_bo_map__gtt(&sna->kgem, sna_crtc->bo);
+	ptr = kgem_bo_map__gtt(&sna->kgem, bo);
 	if (ptr == NULL)
 		return;
 
@@ -4125,7 +4125,7 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region)
 					crtc->mode.VDisplay,
 					sna->front->drawable.depth,
 					sna->front->drawable.bitsPerPixel,
-					sna_crtc->bo->pitch, ptr))
+					bo->pitch, ptr))
 		goto free_pixmap;
 
 	error = sna_render_format_for_depth(sna->front->drawable.depth);
@@ -4156,7 +4156,7 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr region)
 	if (!dst)
 		goto free_src;
 
-	kgem_bo_sync__gtt(&sna->kgem, sna_crtc->bo);
+	kgem_bo_sync__gtt(&sna->kgem, bo);
 
 	if (sigtrap_get() == 0) { /* paranoia */
 		const BoxRec *b = REGION_RECTS(region);
@@ -4251,7 +4251,7 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, RegionPtr region, struct kgem_bo
 				   crtc->mode.HDisplay, crtc->mode.VDisplay,
 				   memset(&tmp, 0, sizeof(tmp)))) {
 		DBG(("%s: unsupported operation!\n", __FUNCTION__));
-		sna_crtc_redisplay__fallback(crtc, region);
+		sna_crtc_redisplay__fallback(crtc, region, bo);
 		goto free_dst;
 	}
 
@@ -4329,7 +4329,7 @@ sna_crtc_redisplay(xf86CrtcPtr crtc, RegionPtr region)
 	if (can_render(sna))
 		sna_crtc_redisplay__composite(crtc, region, sna_crtc->bo);
 	else
-		sna_crtc_redisplay__fallback(crtc, region);
+		sna_crtc_redisplay__fallback(crtc, region, sna_crtc->bo);
 }
 
 struct wait_for_shadow {
@@ -4504,13 +4504,13 @@ void sna_mode_redisplay(struct sna *sna)
 				continue;
 
 			assert(crtc->enabled);
-			assert(crtc->transform_in_use);
+			assert(crtc->transform_in_use || sna->flags & SNA_TEAR_FREE);
 
 			damage.extents = crtc->bounds;
 			damage.data = NULL;
 			RegionIntersect(&damage, &damage, region);
 			if (RegionNotEmpty(&damage))
-				sna_crtc_redisplay__fallback(crtc, &damage);
+				sna_crtc_redisplay__fallback(crtc, &damage, sna_crtc->bo);
 			RegionUninit(&damage);
 		}
 
commit cf89fb8b731dd541bde16277c52264ba1e150424
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sun Dec 8 16:35:27 2013 +0000

    sna: Simplify kgem_bo_can_map()
    
    Remove the attempt to trick us into mapping large bo.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index 14d7d68..d67f73f 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -668,10 +668,7 @@ static inline bool kgem_bo_can_map(struct kgem *kgem, struct kgem_bo *bo)
 	if (kgem->gen == 021 && bo->tiling == I915_TILING_Y)
 		return false;
 
-	if (!bo->presumed_offset)
-		return __kgem_bo_num_pages(bo) <= kgem->aperture_mappable / 4;
-
-	return bo->presumed_offset / PAGE_SIZE + __kgem_bo_num_pages(bo) <= kgem->aperture_mappable;
+	return __kgem_bo_num_pages(bo) <= kgem->aperture_mappable / 4;
 }
 
 static inline bool kgem_bo_can_map__cpu(struct kgem *kgem,


More information about the xorg-commit mailing list