> + swap_buffers_cookie = > + xcb_dri2_swap_buffers_unchecked(c, pdraw->xDrawable, > + target_msc_hi, target_msc_lo, > + divisor_hi, divisor_lo, > + remainder_hi, remainder_lo); > + /* Immediately wait on the swapbuffers reply. If we didn't, we'd have > + * to do so some time before reusing a (non-pageflipped) backbuffer. > + * Otherwise, the new rendering could get ahead of the X Server's > + * dispatch of the swapbuffer and you'd display garbage. > + * > + * We use XSync() first to reap the invalidate events through the > event > + * filter, to ensure that the next drawing doesn't use an invalidated > + * buffer. > + */ > + XSync(pdraw->psc->dpy, False); > + swap_buffers_reply = > + xcb_dri2_swap_buffers_reply(c, swap_buffers_cookie, NULL); > + ret = merge_counter(swap_buffers_reply->swap_hi, > + swap_buffers_reply->swap_lo); > + free(swap_buffers_reply);
Will this sync harm performance for artificial benchmarks? I'm asking because this hunk reminds me of Oliver's comments that Dante was slower on EGL than GLX perhaps due to extra X roundtrips. Anyway, roll-our-own-X-protocol needs to die. Reviewed-by: Chad Versace <[email protected]> _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
