[PATCH xf86-video-amdgpu] Use correct ScrnInfoPtr in redisplay_dirty

Michel Dänzer michel at daenzer.net
Wed Nov 8 17:47:25 UTC 2017

From: Michel Dänzer <michel.daenzer at amd.com>

We used the destination pixmap's screen for flushing glamor. But when
we are the master screen, the destination pixmap is from the slave

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
Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
 src/amdgpu_kms.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/amdgpu_kms.c b/src/amdgpu_kms.c
index cb0fb3b57..a5f2040a8 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);
+	ScrnInfoPtr src_scrn = xf86ScreenToScrn(dirty->src->pScreen);
+	ScrnInfoPtr src_scrn = xf86ScreenToScrn(dirty->src->drawable.pScreen);
 	if (RegionNil(region))
 		goto out;
@@ -493,7 +497,7 @@ redisplay_dirty(PixmapDirtyUpdatePtr dirty, RegionPtr region)
 	PixmapSyncDirtyHelper(dirty, region);
-	amdgpu_glamor_flush(scrn);
+	amdgpu_glamor_flush(src_scrn);
 	if (dirty->slave_dst->master_pixmap)

More information about the amd-gfx mailing list