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>
This commit is contained in:
parent
4313122dea
commit
848089e0dd
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue