Asynchronous Page Flip¶
Asynchronous page flip is the implementation for the DRM_MODE_PAGE_FLIP_ASYNC flag. Currently async flip is only supported via the drmModePageFlip IOCTL. Correspondingly, support is currently added for primary plane only.
Async flip can only change the plane surface address, so anything else
changing is rejected from the intel_async_flip_check_hw() function.
Once this check is cleared, flip done interrupt is enabled using
the intel_crtc_enable_flip_done() function.
As soon as the surface address register is written, flip done interrupt is generated and the requested events are sent to the userspace in the interrupt handler itself. The timestamp and sequence sent during the flip done event correspond to the last vblank and have no relation to the actual time when the flip done event was sent.