xf86-video-amdgpu: Branch 'master'

Michel Dänzer daenzer at kemper.freedesktop.org
Wed Nov 15 16:56:59 UTC 2017


 src/amdgpu_kms.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 3a4f7422913093ed9e26b73ecd7f9e773478cb1e
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Nov 8 18:44:25 2017 +0100

    Use correct ScrnInfoPtr in redisplay_dirty
    
    We used the destination pixmap's screen for flushing glamor. But when
    we are the master screen, the destination pixmap is from the slave
    screen.
    
    Fixes crash when the slave screen isn't using glamor as well.
    
    Bugzilla: https://bugs.freedesktop.org/103613
    Fixes: e15b23663cd1 ("Adapt to PixmapDirtyUpdateRec::src being a
                         DrawablePtr")
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index cb0fb3b..a5f2040 100644
--- a/src/amdgpu_kms.c
+++ b/src/amdgpu_kms.c
@@ -479,7 +479,11 @@ dirty_region(PixmapDirtyUpdatePtr dirty)
 static void
 redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
 {
-	ScrnInfoPtr scrn = xf86ScreenToScrn(dirty->slave_dst->drawable.pScreen);
+#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
+	ScrnInfoPtr src_scrn = xf86ScreenToScrn(dirty->src->pScreen);
+#else
+	ScrnInfoPtr src_scrn = xf86ScreenToScrn(dirty->src->drawable.pScreen);
+#endif
 
 	if (RegionNil(region))
 		goto out;
@@ -493,7 +497,7 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
 	PixmapSyncDirtyHelper(dirty, region);
 #endif
 
-	amdgpu_glamor_flush(scrn);
+	amdgpu_glamor_flush(src_scrn);
 	if (dirty->slave_dst->master_pixmap)
 		DamageRegionProcessPending(&dirty->slave_dst->drawable);
 


More information about the xorg-commit mailing list