xf86-video-intel: 2 commits - src/sna/sna_accel.c src/sna/sna_display.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Jun 28 03:01:19 PDT 2012


 src/sna/sna_accel.c   |    6 ++++--
 src/sna/sna_display.c |    4 +++-
 2 files changed, 7 insertions(+), 3 deletions(-)

New commits:
commit 87dd6408a5c29e4808283df78a981de0a3c0a79c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Jun 28 10:53:59 2012 +0100

    sna: Correct the reversal of the periodic flushing semantics
    
    Regression from 1e9319d (sna: extend RandR to support super sized
    monitor configurations) which tried to take into account the need to
    flush the shadow CRTC bo in addition to the normal scanout bo. In the
    refactoring of the need_flush(), the double negative was missed.
    
    Reported-by: Zdenek Kabelac <zkabelac at redhat.com>
    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 0f52a27..a83e5cb 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -12347,8 +12347,10 @@ static bool need_flush(struct sna *sna, struct sna_pixmap *scanout)
 	if (!scanout)
 		return false;
 
-	return (scanout->cpu_damage || scanout->gpu_bo->exec) &&
-		!__kgem_flush(&sna->kgem, scanout->gpu_bo);
+	if (scanout->cpu_damage || scanout->gpu_bo->exec)
+		return true;
+
+	return __kgem_flush(&sna->kgem, scanout->gpu_bo);
 }
 
 static bool sna_accel_do_flush(struct sna *sna)
commit 05f486f64bc7ea4a8a71f5d792fa586ac0843414
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Jun 28 10:42:21 2012 +0100

    sna: Flush the per-crtc render caches for rotated scanouts
    
    We need to manually flush the render cache in order for results to be
    visible on the scanout.
    
    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 9e47017..b7c5a40 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -2758,8 +2758,10 @@ void sna_mode_redisplay(struct sna *sna)
 		damage.extents = crtc->bounds;
 		damage.data = NULL;
 		RegionIntersect(&damage, &damage, region);
-		if (RegionNotEmpty(&damage))
+		if (RegionNotEmpty(&damage)) {
 			sna_crtc_redisplay(crtc, &damage);
+			__kgem_flush(&sna->kgem, sna_crtc->bo);
+		}
 		RegionUninit(&damage);
 	}
 


More information about the xorg-commit mailing list