136c5ded48
- Add some more switchable-graphics / prime fixes from upstream
47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
From 4565de368c4aecdd4f09fafd69ca59206744aabb Mon Sep 17 00:00:00 2001
|
|
From: Lyude Paul <cpaul@redhat.com>
|
|
Date: Mon, 13 Jun 2016 15:31:02 -0400
|
|
Subject: [PATCH xserver 6/8] modesetting: Clear drmmode->fb_id before
|
|
unflipping
|
|
|
|
[fix copied from 40191d82370e in xf86-video-ati]
|
|
|
|
Without this, we end up setting rotated CRTCs back to their previous
|
|
framebuffer right after we perform a rotation. Reproducer:
|
|
|
|
- Have two monitors connected at the same resolution
|
|
- Rotate one monitor from normal straight to inverted
|
|
- Watch as the monitor you didn't rotate either freezes or shows intense
|
|
flickering
|
|
|
|
Signed-off-by: Lyude <cpaul@redhat.com>
|
|
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
---
|
|
hw/xfree86/drivers/modesetting/present.c | 9 +++++++++
|
|
1 file changed, 9 insertions(+)
|
|
|
|
diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
|
|
index d65c8c8..9a596de 100644
|
|
--- a/hw/xfree86/drivers/modesetting/present.c
|
|
+++ b/hw/xfree86/drivers/modesetting/present.c
|
|
@@ -626,6 +626,15 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id)
|
|
if (!crtc->enabled)
|
|
continue;
|
|
|
|
+ /* info->drmmode.fb_id still points to the FB for the last flipped BO.
|
|
+ * Clear it, drmmode_set_mode_major will re-create it
|
|
+ */
|
|
+ if (drmmode_crtc->drmmode->fb_id) {
|
|
+ drmModeRmFB(drmmode_crtc->drmmode->fd,
|
|
+ drmmode_crtc->drmmode->fb_id);
|
|
+ drmmode_crtc->drmmode->fb_id = 0;
|
|
+ }
|
|
+
|
|
if (drmmode_crtc->dpms_mode == DPMSModeOn)
|
|
crtc->funcs->set_mode_major(crtc, &crtc->mode, crtc->rotation,
|
|
crtc->x, crtc->y);
|
|
--
|
|
2.7.4
|
|
|