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

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jun 17 08:55:55 UTC 2019


 src/radeon_dri2.c |   19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

New commits:
commit fee737e82837dc8282a832fc9391ed959c4c3737
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Jun 14 11:23:34 2019 +0200

    Remove dri2_drawable_crtc parameter consider_disabled
    
    All callers were passing TRUE.
    
    (Ported from amdgpu commit ea19a5207054bb159fc7fb6d88e0ceb10c3da010)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index c59d799f..66a223d8 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -509,11 +509,11 @@ static Bool radeon_dri2_get_crtc_msc(xf86CrtcPtr crtc, CARD64 *ust, CARD64 *msc)
 }
 
 static
-xf86CrtcPtr radeon_dri2_drawable_crtc(DrawablePtr pDraw, Bool consider_disabled)
+xf86CrtcPtr radeon_dri2_drawable_crtc(DrawablePtr pDraw)
 {
     ScreenPtr pScreen = pDraw->pScreen;
     ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
-    xf86CrtcPtr crtc = radeon_pick_best_crtc(pScrn, consider_disabled,
+    xf86CrtcPtr crtc = radeon_pick_best_crtc(pScrn, TRUE,
 					      pDraw->x, pDraw->x + pDraw->width,
 					      pDraw->y, pDraw->y + pDraw->height);
 
@@ -928,7 +928,7 @@ CARD32 radeon_dri2_extrapolate_msc_delay(xf86CrtcPtr crtc, CARD64 *target_msc,
  */
 static int radeon_dri2_get_msc(DrawablePtr draw, CARD64 *ust, CARD64 *msc)
 {
-    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw, TRUE);
+    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw);
 
     /* Drawable not displayed, make up a value */
     if (!crtc) {
@@ -1043,7 +1043,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr client, DrawablePtr draw,
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
     DRI2FrameEventPtr wait_info = NULL;
     uintptr_t drm_queue_seq = 0;
-    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw, TRUE);
+    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw);
     uint32_t msc_delta;
     uint32_t seq;
     CARD64 current_msc;
@@ -1192,7 +1192,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw,
 {
     ScreenPtr screen = draw->pScreen;
     ScrnInfoPtr scrn = xf86ScreenToScrn(screen);
-    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw, TRUE);
+    xf86CrtcPtr crtc = radeon_dri2_drawable_crtc(draw);
     uint32_t msc_delta;
     drmVBlankSeqType type;
     uint32_t seq;
commit 2a3f2d2089f603c99be54c98d7033155e771ce7b
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Jun 14 11:21:40 2019 +0200

    dri2: Re-use previous CRTC when possible if pick_best_crtc returns NULL
    
    This way, the MSC will continue ticking at the rate of (the last mode
    which was enabled for) that CRTC, instead of the client running
    unthrottled.
    
    (Ported from amdgpu commit 3109f088fdbd89c2ee8078625d4f073852492656)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 3c04e6fe..c59d799f 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -517,10 +517,12 @@ xf86CrtcPtr radeon_dri2_drawable_crtc(DrawablePtr pDraw, Bool consider_disabled)
 					      pDraw->x, pDraw->x + pDraw->width,
 					      pDraw->y, pDraw->y + pDraw->height);
 
-    if (crtc && pDraw->type == DRAWABLE_WINDOW) {
+    if (pDraw->type == DRAWABLE_WINDOW) {
 	struct dri2_window_priv *priv = get_dri2_window_priv((WindowPtr)pDraw);
 
-	if (priv->crtc && priv->crtc != crtc) {
+	if (!crtc) {
+	    crtc = priv->crtc;
+	} else if (priv->crtc && priv->crtc != crtc) {
 	    CARD64 ust, mscold, mscnew;
 
 	    if (radeon_dri2_get_crtc_msc(priv->crtc, &ust, &mscold) &&
commit d5f5bc5846ef06c3ecf9e5acf1ca357574f06f5a
Author: Flora Cui <flora.cui at amd.com>
Date:   Fri Jun 14 11:20:12 2019 +0200

    dri2: reply to client for WaitMSC request in any case
    
    otherwise client would wait for reply forever and desktop appears hang.
    
    Signed-off-by: Flora Cui <flora.cui at amd.com>
    (Ported from amdgpu commit fb06fb814700a47464abd756e1111dcc76d0d776)
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index a9f14e8d..3c04e6fe 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -1156,6 +1156,9 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr client, DrawablePtr draw,
 out_complete:
     if (wait_info)
 	radeon_dri2_deferred_event(NULL, 0, wait_info);
+    else
+	DRI2WaitMSCComplete(client, draw, 0, 0, 0);
+
     return TRUE;
 }
 


More information about the xorg-commit mailing list