[PATCH xf86-video-ati 06/10] Move flush from radeon_scanout_do_update to its callers

Michel Dänzer michel at daenzer.net
Thu Jul 5 12:13:03 UTC 2018


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

No functional change intended.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/drmmode_display.c | 2 ++
 src/radeon_kms.c      | 8 +++++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index c7bec59c8..54b09730d 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -785,6 +785,7 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
 		radeon_scanout_do_update(crtc, scanout_id,
 					 screen->GetWindowPixmap(screen->root),
 					 *box);
+		radeon_cs_flush_indirect(scrn);
 		radeon_bo_wait(drmmode_crtc->scanout[scanout_id].bo);
 	}
 }
@@ -3225,6 +3226,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client,
 
 			radeon_scanout_do_update(crtc, scanout_id, new_front,
 						 extents);
+			radeon_cs_flush_indirect(crtc->scrn);
 
 			drmmode_crtc_wait_pending_event(drmmode_crtc, pRADEONEnt->fd,
 							drmmode_crtc->scanout_update_pending);
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index 7ff66bf3c..8579aaf81 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -985,8 +985,6 @@ radeon_scanout_do_update(xf86CrtcPtr xf86_crtc, int scanout_id,
 	FreeScratchGC(gc);
     }
 
-    radeon_cs_flush_indirect(scrn);
-
     info->accel_state->force = force;
 
     return TRUE;
@@ -1013,8 +1011,10 @@ radeon_scanout_update_handler(xf86CrtcPtr crtc, uint32_t frame, uint64_t usec,
 	drmmode_crtc->dpms_mode == DPMSModeOn) {
 	if (radeon_scanout_do_update(crtc, drmmode_crtc->scanout_id,
 				     screen->GetWindowPixmap(screen->root),
-				     region->extents))
+				     region->extents)) {
+	    radeon_cs_flush_indirect(crtc->scrn);
 	    RegionEmpty(region);
+	}
     }
 
     radeon_scanout_update_abort(crtc, event_data);
@@ -1096,6 +1096,8 @@ radeon_scanout_flip(ScreenPtr pScreen, RADEONInfoPtr info,
 				  pScreen->GetWindowPixmap(pScreen->root),
 				  region->extents))
 	return;
+
+    radeon_cs_flush_indirect(scrn);
     RegionEmpty(region);
 
     drm_queue_seq = radeon_drm_queue_alloc(xf86_crtc,
-- 
2.18.0



More information about the amd-gfx mailing list