> +static Bool > +can_exchange(ScrnInfoPtr scrn, DrawablePtr draw, > + DRI2BufferPtr front, DRI2BufferPtr back) > +{ [...] > + if (!update_front(draw, front)) > + return FALSE; I know you just copied this from -ati/amdgpu, but: I don't think can_exchange should call update_front, or the front buffer may be updated even though the flip later fails. [yuq] so you mean I can just drop update_front here and use "front" directly? > + /* Post damage on the front buffer so that listeners, such > + * as DisplayLink know take a copy and shove it over the USB. > + * also for sw cursors. > + */ SW cursors cannot work correctly with page flipping. For that reason, xf86-video-ati/amdgpu disable page flipping while there's an SW cursor. [yuq] why? Is the problem in kernel or xserver? Regards, Qiang