[PATCH xserver 3/6] modesetting: add DRI2 page flip support

Michel Dänzer michel at daenzer.net
Fri Aug 19 07:25:11 UTC 2016

On 19/08/16 04:06 PM, Yu, Qiang wrote:
>>> +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?

I mean update_front should only be called later, when we know for sure
there's no other reason preventing the flip. I haven't thought about
what if anything else would need to be done here instead.

Anyway, since this is just copying working code from other drivers, it
can be addressed (preferably in all affected drivers) later.

>>> +    /* 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?

The latter, due to the way SW cursor works. There's a fundamental (and
likely unfixable) conflict between the SW cursor and page flipping concepts.

Earthling Michel Dänzer               |               http://www.amd.com
Libre software enthusiast             |             Mesa and X developer

More information about the xorg-devel mailing list