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

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Aug 6 20:45:40 PDT 2015


 src/drmmode_display.c |    3 +++
 src/radeon_kms.c      |   11 +++--------
 2 files changed, 6 insertions(+), 8 deletions(-)

New commits:
commit 3791fceabf2cb037467dc41c15364e9f9ec1e47e
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Thu Aug 6 16:27:01 2015 +0900

    Wait for scanout BO initialization to finish before setting mode
    
    This should avoid intermittent artifacts which could sometimes be visible
    when setting a new scanout pixmap, e.g. on server startup or when
    changing resolutions.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index a769013..efc35f0 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -467,6 +467,7 @@ void drmmode_copy_fb(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
 	FreeScratchGC(gc);
 
 	radeon_cs_flush_indirect(pScrn);
+	radeon_bo_wait(info->front_bo);
 
 	pScreen->canDoBGNoneRoot = TRUE;
 	destroy_pixmap_for_fbcon(pScrn);
@@ -757,6 +758,7 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
 				x = y = 0;
 
 				radeon_scanout_update_handler(pScrn, 0, 0, crtc);
+				radeon_bo_wait(drmmode_crtc->scanout[0].bo);
 			}
 		}
 		ret = drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id,
@@ -1959,6 +1961,7 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
 	FreeScratchGC(gc);
 	info->accel_state->force = force;
 	radeon_cs_flush_indirect(scrn);
+	radeon_bo_wait(info->front_bo);
 
 	for (i = 0; i < xf86_config->num_crtc; i++) {
 		xf86CrtcPtr crtc = xf86_config->crtc[i];
commit 4e3dfa69e4630df2e0ec0f5b81d61159757c4664
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Thu Aug 6 16:16:38 2015 +0900

    Only call drmmode_copy_fb (at most) once on server startup
    
    It doesn't make sense to copy the screen contents from console when VT
    switching back to Xorg or when Xorg resets.
    
    Fixes intermittent artifacts when VT switching back from console to the
    gdm login screen.
    
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 14de0eb..c75aa97 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1037,7 +1037,7 @@ static void RADEONSetupCapabilities(ScrnInfoPtr pScrn)
 /* When the root window is created, initialize the screen contents from
  * console if -background none was specified on the command line
  */
-static Bool RADEONCreateWindow(WindowPtr pWin)
+static Bool RADEONCreateWindow_oneshot(WindowPtr pWin)
 {
     ScreenPtr pScreen = pWin->drawable.pScreen;
     ScrnInfoPtr pScrn;
@@ -1714,9 +1714,9 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL)
     pScrn->pScreen = pScreen;
 
 #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 10
-    if (bgNoneRoot && info->accelOn) {
+    if (serverGeneration == 1 && bgNoneRoot && info->accelOn) {
 	info->CreateWindow = pScreen->CreateWindow;
-	pScreen->CreateWindow = RADEONCreateWindow;
+	pScreen->CreateWindow = RADEONCreateWindow_oneshot;
     }
 #endif
 
@@ -1779,11 +1779,6 @@ Bool RADEONEnterVT_KMS(VT_FUNC_ARGS_DECL)
 
     pScrn->vtSema = TRUE;
 
-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) >= 10
-    if (bgNoneRoot && info->accelOn)
-	drmmode_copy_fb(pScrn, &info->drmmode);
-#endif
-
     if (!drmmode_set_desired_modes(pScrn, &info->drmmode, TRUE))
 	return FALSE;
 


More information about the xorg-commit mailing list