diff options
author | wm4 <wm4@nowhere> | 2016-10-05 12:18:44 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-10-05 12:21:34 +0200 |
commit | 6789f9b09411f83034883357303b4acfda9569ed (patch) | |
tree | 21f0eb78054198a13c640818f6a862a55031f85b | |
parent | 387f50127875f49236da918c4457bd837bb2f10e (diff) | |
download | mpv-6789f9b09411f83034883357303b4acfda9569ed.tar.bz2 mpv-6789f9b09411f83034883357303b4acfda9569ed.tar.xz |
vo_opengl: disable glFlush() by default, and add an option to enable it
It seems this can cause issues with certain platforms, so better to
disable it by default. The original reason for this isn't overly
justified, and display-sync mode should get rid of the need for it
anyway.
The new option is meant for testing, and will probably be removed if
nobody comes up and reports that enabling the option actually improves
anything.
-rw-r--r-- | DOCS/man/options.rst | 5 | ||||
-rw-r--r-- | video/out/opengl/video.c | 4 | ||||
-rw-r--r-- | video/out/opengl/video.h | 2 |
3 files changed, 10 insertions, 1 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index afd4b198fa..a32cb98cca 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -4591,6 +4591,11 @@ The following video options are currently all specific to ``--vo=opengl`` and we may have to deal with additional padding, which can be tested with these options). Could be removed any time. +``--opengl-early-flush=<yes|no>`` + Call ``glFlush()`` after rendering a frame and before attempting to display + it (default: no). Can fix stuttering in some causes, in other cases probably + causes it. For testing - could be removed any time. + Miscellaneous ------------- diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index fa170f61c9..9be12dee21 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -412,6 +412,7 @@ const struct m_sub_options gl_video_conf = { OPT_INTRANGE("opengl-tex-pad-x", tex_pad_x, 0, 0, 4096), OPT_INTRANGE("opengl-tex-pad-y", tex_pad_y, 0, 0, 4096), OPT_SUBSTRUCT("", icc_opts, mp_icc_conf, 0), + OPT_FLAG("opengl-early-flush", early_flush, 0), {0} }, @@ -2848,7 +2849,8 @@ done: // The playloop calls this last before waiting some time until it decides // to call flip_page(). Tell OpenGL to start execution of the GPU commands // while we sleep (this happens asynchronously). - gl->Flush(); + if (p->opts.early_flush) + gl->Flush(); p->frames_rendered++; diff --git a/video/out/opengl/video.h b/video/out/opengl/video.h index f2fe5e4423..e7ece85138 100644 --- a/video/out/opengl/video.h +++ b/video/out/opengl/video.h @@ -132,6 +132,8 @@ struct gl_video_opts { float unsharp; int tex_pad_x, tex_pad_y; struct mp_icc_opts *icc_opts; + int early_flush; + int use_overlay; }; extern const struct m_sub_options gl_video_conf; |