From 4a297554bcbce5821bf002ce7955bc27767488e3 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 15 Aug 2014 23:36:02 +0200 Subject: [PATCH] vo_opengl: if glfinish is used, also call it after swappping It seems that at least on nvidia systems with composting disabled, we can get it to block deterministically on the actual vsync event, which should improve framedropping. --- DOCS/man/vo.rst | 4 +++- video/out/vo_opengl.c | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst index f9a22e3c0e..31540fc1fa 100644 --- a/DOCS/man/vo.rst +++ b/DOCS/man/vo.rst @@ -439,7 +439,9 @@ Available video output drivers are: Borders will be distorted due to filtering. ``glfinish`` - Call ``glFinish()`` before swapping buffers + Call ``glFinish()`` before and after swapping buffers (default: disabled). + Slower, but might help getting better results when doing framedropping. + The details depend entirely on the OpenGL driver. ``sw`` Continue even if a software renderer is detected. diff --git a/video/out/vo_opengl.c b/video/out/vo_opengl.c index ae5f1f9bd0..c80506039c 100644 --- a/video/out/vo_opengl.c +++ b/video/out/vo_opengl.c @@ -105,6 +105,9 @@ static void flip_page(struct vo *vo) if (p->frames_rendered > 5) gl_video_set_debug(p->renderer, false); + if (p->use_glFinish) + p->gl->Finish(); + mpgl_unlock(p->glctx); }