On Thu, May 28, 2015 at 05:56:15PM +0900, Michel Dänzer wrote: > On 28.05.2015 17:38, Chris Wilson wrote: > > On Thu, May 28, 2015 at 04:59:14PM +0900, Michel Dänzer wrote: > >> The patch below is an alternative fix for the problem I'm seeing, while > >> preserving the window CRTC for MSC waits when possible. Your > >> description sounds like it might work for you as well, Chris. Can you > >> try it? > >> > >> > >> diff --git a/present/present.c b/present/present.c > >> index a634601..dc58f25 100644 > >> --- a/present/present.c > >> +++ b/present/present.c > >> @@ -713,6 +713,7 @@ present_pixmap(WindowPtr window, > >> uint64_t ust; > >> uint64_t target_msc; > >> uint64_t crtc_msc; > >> + RRCrtcPtr new_crtc; > >> int ret; > >> present_vblank_ptr vblank, tmp; > >> ScreenPtr screen = window->drawable.pScreen; > >> @@ -734,7 +735,21 @@ present_pixmap(WindowPtr window, > >> target_crtc = present_get_crtc(window); > >> } > >> > >> - present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc); > >> + if (present_get_ust_msc(screen, target_crtc, &ust, &crtc_msc) != > >> Success) { > >> + /* Maybe we need to try a different CRTC? > >> + */ > >> + new_crtc = present_get_crtc(window); > >> + > >> + if (new_crtc != target_crtc && > >> + present_get_ust_msc(screen, new_crtc, &ust, &crtc_msc) == > >> Success) > >> + target_crtc = new_crtc; > >> + else { > >> + /* Fall back to fake MSC handling > >> + */ > >> + target_crtc = NULL; > >> + present_fake_get_ust_msc(screen, &ust, &crtc_msc); > >> + } > >> + } > > > > It survived for one more CRTC change, but still feeds passed msc into > > the wait_vblank. > > By how much is it off? Does it cause a hang?
Just a few -1000 msc, which is a pretty long wait (it would be if we honoured it at least). > What's your test-case? Mine is the GNOME lock screen, i.e. basically > DPMS off vs vblank waits and flips. xf86-video-intel/test/present-test -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel