summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2015-04-02 17:46:34 +0900
committerMichel Dänzer <michel@daenzer.net>2015-04-23 10:17:09 +0900
commita4a8cdbcc10c1c5f07485a2af9e9e81e490c3e1d (patch)
tree252abd1937ad976b6bd0ef9f815dac2bfd1ca0bf
parent673e1c7637687c74fc9bdeeeffb7ace0d04b734f (diff)
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 <alexander.deucher@amd.com>
-rw-r--r--src/drmmode_display.c2
-rw-r--r--src/radeon.h4
-rw-r--r--src/radeon_kms.c2
3 files changed, 7 insertions, 1 deletions
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)
{