summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-08-15 23:36:02 +0200
committerwm4 <wm4@nowhere>2014-08-15 23:36:02 +0200
commit4a297554bcbce5821bf002ce7955bc27767488e3 (patch)
tree2b7a5b3f09346690fc44b577f7cedaf35574ace8
parent543ba6c114303c8c3a71b37864f6d901c41808eb (diff)
downloadmpv-4a297554bcbce5821bf002ce7955bc27767488e3.tar.bz2
mpv-4a297554bcbce5821bf002ce7955bc27767488e3.tar.xz
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.
-rw-r--r--DOCS/man/vo.rst4
-rw-r--r--video/out/vo_opengl.c3
2 files changed, 6 insertions, 1 deletions
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);
}