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
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel