xf86-video-ati: Branch 'master' - 4 commits

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Sep 15 06:17:32 UTC 2016


 src/drmmode_display.c |   13 ++++++++++++-
 src/radeon_dri2.c     |   10 +++++++---
 2 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit 12d30eeb9711bd2b1609d6bbb74c4a1760596f72
Author: Qiang Yu <Qiang.Yu at amd.com>
Date:   Wed Sep 14 17:03:03 2016 +0900

    DRI2: Fix radeon_dri2_exchange_buffers width/height copy'n'paste error
    
    Signed-off-by: Qiang Yu <Qiang.Yu at amd.com>
    (Ported from amdgpu commit 73c8dc000ad6b2b53ba3aa7155f5e8f6b55623b7)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 79501f0..69fd0ea 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -775,7 +775,7 @@ radeon_dri2_exchange_buffers(DrawablePtr draw, DRI2BufferPtr front, DRI2BufferPt
 
     region.extents.x1 = region.extents.y1 = 0;
     region.extents.x2 = front_priv->pixmap->drawable.width;
-    region.extents.y2 = front_priv->pixmap->drawable.width;
+    region.extents.y2 = front_priv->pixmap->drawable.height;
     region.data = NULL;
     DamageRegionAppend(&front_priv->pixmap->drawable, &region);
 
commit 11cc6843aa3b745aa1361f1a65e465e16696b914
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Sep 14 17:01:13 2016 +0900

    DRI2: Add interpolated_vblanks in radeon_dri2_get_crtc_msc
    
    We need that in radeon_dri2_drawable_crtc as well for priv->vblank_delta
    to work as intended.
    
    radeon_dri2_get_msc was already doing this.
    
    Fixes hangs in some cases when using VDPAU via DRI2 and moving the
    window between CRTCs.
    
    (Ported from amdgpu commit abd1a7901c95e4bc78415cf1b7923623b9177152)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 74d580a..79501f0 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -516,10 +516,11 @@ static uint32_t radeon_get_msc_delta(DrawablePtr pDraw, xf86CrtcPtr crtc)
  */
 static Bool radeon_dri2_get_crtc_msc(xf86CrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 {
+    drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
     if (!radeon_crtc_is_enabled(crtc) ||
 	 drmmode_crtc_get_ust_msc(crtc, ust, msc) != Success) {
 	/* CRTC is not running, extrapolate MSC and timestamp */
-	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
 	ScrnInfoPtr scrn = crtc->scrn;
 	RADEONInfoPtr info = RADEONPTR(scrn);
 	CARD64 now, delta_t, delta_seq;
@@ -544,6 +545,8 @@ static Bool radeon_dri2_get_crtc_msc(xf86CrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 	*msc += delta_seq;
     }
 
+    *msc += drmmode_crtc->interpolated_vblanks;
+
     return TRUE;
 }
 
@@ -991,7 +994,8 @@ static int radeon_dri2_get_msc(DrawablePtr draw, CARD64 *ust, CARD64 *msc)
     if (!radeon_dri2_get_crtc_msc(crtc, ust, msc))
 	return FALSE;
 
-    *msc += radeon_get_msc_delta(draw, crtc);
+    if (draw && draw->type == DRAWABLE_WINDOW)
+	*msc += get_dri2_window_priv((WindowPtr)draw)->vblank_delta;
     *msc &= 0xffffffff;
     return TRUE;
 }
commit 380daff43cfefe2a8e4d496eaf65673f2815c878
Author: Qiang Yu <Qiang.Yu at amd.com>
Date:   Wed Sep 14 16:59:38 2016 +0900

    Fix radeon_mode_hotplug crash on multi GPU platform.
    
    On multi GPU platform, some screen is created by other GPU DDX.
    
    Signed-off-by: Qiang Yu <Qiang.Yu at amd.com>
    (Ported from amdgpu commit 978242977e5dc905e1d5a46b1b0d34b356c7af26)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 3aae69a..a8d4386 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2647,7 +2647,8 @@ restart_destroy:
 			xf86CrtcConfigPtr loop_config =
 				XF86_CRTC_CONFIG_PTR(loop_scrn);
 
-			if (RADEONEntPriv(loop_scrn) != pRADEONEnt)
+			if (strcmp(loop_scrn->driverName, scrn->driverName) ||
+			    RADEONEntPriv(loop_scrn) != pRADEONEnt)
 				continue;
 
 			for (j = 0; !found && j < loop_config->num_output; j++) {
commit 4a5fa37f74c233c6b9c6a08306688628a8e216e8
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Sep 14 16:56:22 2016 +0900

    Destroy all dedicated scanout buffers during CloseScreen
    
    Fixes leaking active scanout buffers across a server reset, which also
    fixes server reset with glamor and active scanout buffers.
    
    (Ported from amdgpu commit d96dabc71b1b32dc4b422a9633cdd4e0e95da052)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 34f7735..3aae69a 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2386,8 +2386,10 @@ void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
 
 void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
 {
+	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
 	RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
 	RADEONInfoPtr info = RADEONPTR(pScrn);
+	int c;
 
 	if (info->dri2.pKernelDRMVersion->version_minor < 4 || !info->drmmode_inited)
 		return;
@@ -2402,6 +2404,14 @@ void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
 				drm_wakeup_handler, drmmode);
 #endif
 	}
+
+	for (c = 0; c < config->num_crtc; c++) {
+		xf86CrtcPtr crtc = config->crtc[c];
+		drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
+		drmmode_crtc_scanout_destroy(&info->drmmode, &drmmode_crtc->scanout[0]);
+		drmmode_crtc_scanout_destroy(&info->drmmode, &drmmode_crtc->scanout[1]);
+	}
 }
 
 


More information about the xorg-commit mailing list