From a4a8cdbcc10c1c5f07485a2af9e9e81e490c3e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Thu, 2 Apr 2015 17:46:34 +0900 Subject: Update scanout pixmap contents before setting a mode with it This ensures the scanout pixmaps used for Option "TearFree" and Option "ShadowPrimary" have been initialized when their initial mode is set. Reviewed-by: Alex Deucher --- src/drmmode_display.c | 2 ++ src/radeon.h | 4 ++++ src/radeon_kms.c | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 064a64c1..8caad70c 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -718,6 +718,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, drmmode_crtc->scanout_id = 0; fb_id = drmmode_crtc->scanout[0].fb_id; x = y = 0; + + radeon_scanout_update_handler(pScrn, 0, 0, crtc); } } ret = drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, diff --git a/src/radeon.h b/src/radeon.h index 962a68d2..8220da71 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -593,6 +593,10 @@ extern Bool RADEONGetPixmapOffsetPitch(PixmapPtr pPix, /* radeon_dri3.c */ Bool radeon_dri3_screen_init(ScreenPtr screen); +/* radeon_kms.c */ +void radeon_scanout_update_handler(ScrnInfoPtr scrn, uint32_t frame, + uint64_t usec, void *event_data); + /* radeon_present.c */ Bool radeon_present_screen_init(ScreenPtr screen); diff --git a/src/radeon_kms.c b/src/radeon_kms.c index 5a2d2dae..554a88a3 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -385,7 +385,7 @@ radeon_scanout_update_abort(ScrnInfoPtr scrn, void *event_data) drmmode_crtc->scanout_update_pending = FALSE; } -static void +void radeon_scanout_update_handler(ScrnInfoPtr scrn, uint32_t frame, uint64_t usec, void *event_data) { -- cgit v1.2.3