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

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Mar 10 09:46:22 UTC 2016


 src/radeon_present.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

New commits:
commit a03271de5ecdaa7790d1316e993c4450b91fe936
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Mar 9 18:23:10 2016 +0900

    present: Return rotated CRTCs from radeon_present_get_crtc
    
    Sync-to-vblank works fine with rotation. We're still checking for
    rotation in radeon_present_check_flip.
    
    Returning NULL from here resulted in the xserver present code falling
    back to the fake CRTC running at 1 fps.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_present.c b/src/radeon_present.c
index 286b3f4..e0a549d 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -77,8 +77,7 @@ radeon_present_get_crtc(WindowPtr window)
 				 window->drawable.y,
 				 window->drawable.y + window->drawable.height);
 
-    /* Make sure the CRTC is valid and this is the real front buffer */
-    if (crtc != NULL && !crtc->rotatedData)
+    if (crtc)
 	randr_crtc = crtc->randr_crtc;
 
     return randr_crtc;
commit 40191d82370eb7e58bd34c44966cbf44c3703229
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Mar 9 18:15:57 2016 +0900

    present: Clear drmmode->fb_id before calling set_mode_major for unflip
    
    Without this, drmmode_set_mode_major may just re-set the FB for the
    last flipped BO, in which case the display will probably freeze.
    
    Reproduction recipe: Enable rotation while a fullscreen client is
    flipping.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_present.c b/src/radeon_present.c
index 68be1c7..286b3f4 100644
--- a/src/radeon_present.c
+++ b/src/radeon_present.c
@@ -382,6 +382,12 @@ radeon_present_unflip(ScreenPtr screen, uint64_t event_id)
 	return;
 
 modeset:
+    /* info->drmmode.fb_id still points to the FB for the last flipped BO.
+     * Clear it, drmmode_set_mode_major will re-create it
+     */
+    drmModeRmFB(info->drmmode.fd, info->drmmode.fb_id);
+    info->drmmode.fb_id = 0;
+
     for (i = 0; i < config->num_crtc; i++) {
 	xf86CrtcPtr crtc = config->crtc[i];
 	drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;


More information about the xorg-commit mailing list