On Wed, 2018-05-16 at 11:10 +0200, Michel Dänzer wrote: > From: Michel Dänzer <michel.daen...@amd.com> > > Prevents spuriously bumping the upper 32 bits of the SBC, which results > in hangs with the modesetting driver from xserver 1.20. >
I've picked this patch for 18.0, as it was nominated when pushed to master. Nevertheless, the patch didn't apply cleanly in branch, so I've resolved conflicts. You can find the commited solved patch at https://github.com/Igalia/release-mesa/commit/b582b8fc93697d193365bf11cd9f336d78 6d7f8d If you think the patch was solved wrongly, please, send me a fixed version. Thanks in advance! J.A. > Bugzilla: https://bugs.freedesktop.org/106351 > Tested-by: Mike Lothian <m...@fireburn.co.uk> > Signed-off-by: Michel Dänzer <michel.daen...@amd.com> > --- > src/loader/loader_dri3_helper.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c > index 6db8303d26d..f0ff2f07bde 100644 > --- a/src/loader/loader_dri3_helper.c > +++ b/src/loader/loader_dri3_helper.c > @@ -370,9 +370,17 @@ dri3_handle_present_event(struct loader_dri3_drawable > *draw, > * checking for wrap. > */ > if (ce->kind == XCB_PRESENT_COMPLETE_KIND_PIXMAP) { > - draw->recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | > ce->serial; > - if (draw->recv_sbc > draw->send_sbc) > - draw->recv_sbc -= 0x100000000; > + uint64_t recv_sbc = (draw->send_sbc & 0xffffffff00000000LL) | > ce->serial; > + > + /* Only assume wraparound if that results in exactly the previous > + * SBC + 1, otherwise ignore received SBC > sent SBC (those are > + * probably from a previous loader_dri3_drawable instance) to avoid > + * calculating bogus target MSC values in > loader_dri3_swap_buffers_msc > + */ > + if (recv_sbc <= draw->send_sbc) > + draw->recv_sbc = recv_sbc; > + else if (recv_sbc == (draw->recv_sbc + 0x100000001ULL)) > + draw->recv_sbc = recv_sbc - 0x100000000ULL; > > /* When moving from flip to copy, we assume that we can allocate in > * a more optimal way if we don't need to cater for the display _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev