When a driver uses TearFree to flip all frames synchronized to the vblank interval, Present has no idea and still assumes that each presentation occurs immediately upon copying its damages to the primary scanout. This faulty assumption breaks presentation timestamping, potentially leading to A/V de-synchronization and dropped frames. Present needs to have some awareness of a driver using TearFree so that it can know when each presentation actually becomes visible on the screen. Teach Present about drivers using TearFree by expanding PresentFlipReason to allow drivers to export some contextual info about TearFree when Present cannot page-flip directly anyway. PRESENT_FLIP_REASON_DRIVER_TEARFREE indicates that a driver has TearFree enabled but doesn't have a TearFree flip currently pending. PRESENT_FLIP_REASON_DRIVER_TEARFREE_FLIPPING indicates that a driver has a TearFree flip currently pending. Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com> |
||
---|---|---|
.. | ||
meson.build | ||
present.c | ||
present.h | ||
present_event.c | ||
present_execute.c | ||
present_fake.c | ||
present_fence.c | ||
present_notify.c | ||
present_priv.h | ||
present_request.c | ||
present_scmd.c | ||
present_screen.c | ||
present_vblank.c | ||
presentext.h |