vblank: add GLX_SGI_video_sync based scheduler

Present extension based scheduler doesn't work well on NVIDIA drivers.
GLX_SGI_video_sync is less accurate, but is rumoured to work. See
[kwin's usage](https://invent.kde.org/plasma/kwin/-/blob/master/src/
backends/x11/standalone/x11_standalone_sgivideosyncvsyncmonitor.cpp)

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui
2023-12-19 23:21:53 +00:00
parent db6ed75b60
commit db9b808bfb
4 changed files with 283 additions and 9 deletions

View File

@@ -1501,7 +1501,8 @@ static bool redirect_start(session_t *ps) {
ps->last_schedule_delay = 0;
render_statistics_reset(&ps->render_stats);
ps->vblank_scheduler =
vblank_scheduler_new(ps->loop, &ps->c, session_get_target_window(ps));
vblank_scheduler_new(ps->loop, &ps->c, session_get_target_window(ps),
VBLANK_SCHEDULER_PRESENT);
if (!ps->vblank_scheduler) {
return false;
}