diff options
author | Niklas Haas <git@haasn.xyz> | 2017-09-14 08:04:55 +0200 |
---|---|---|
committer | Niklas Haas <git@haasn.xyz> | 2017-09-21 15:00:55 +0200 |
commit | 65979986a923a8f08019b257c3fe72cd5e8ecf68 (patch) | |
tree | b8f4b8c17d583594aef0ca509064f8b2ff7128d4 /DOCS/man/vo.rst | |
parent | 20f958c9775652c3213588c2a0824f5353276adc (diff) | |
download | mpv-65979986a923a8f08019b257c3fe72cd5e8ecf68.tar.bz2 mpv-65979986a923a8f08019b257c3fe72cd5e8ecf68.tar.xz |
vo_opengl: refactor into vo_gpu
This is done in several steps:
1. refactor MPGLContext -> struct ra_ctx
2. move GL-specific stuff in vo_opengl into opengl/context.c
3. generalize context creation to support other APIs, and add --gpu-api
4. rename all of the --opengl- options that are no longer opengl-specific
5. move all of the stuff from opengl/* that isn't GL-specific into gpu/
(note: opengl/gl_utils.h became opengl/utils.h)
6. rename vo_opengl to vo_gpu
7. to handle window screenshots, the short-term approach was to just add
it to ra_swchain_fns. Long term (and for vulkan) this has to be moved to
ra itself (and vo_gpu altered to compensate), but this was a stop-gap
measure to prevent this commit from getting too big
8. move ra->fns->flush to ra_gl_ctx instead
9. some other minor changes that I've probably already forgotten
Note: This is one half of a major refactor, the other half of which is
provided by rossy's following commit. This commit enables support for
all linux platforms, while his version enables support for all non-linux
platforms.
Note 2: vo_opengl_cb.c also re-uses ra_gl_ctx so it benefits from the
--opengl- options like --opengl-early-flush, --opengl-finish etc. Should
be a strict superset of the old functionality.
Disclaimer: Since I have no way of compiling mpv on all platforms, some
of these ports were done blindly. Specifically, the blind ports included
context_mali_fbdev.c and context_rpi.c. Since they're both based on
egl_helpers, the port should have gone smoothly without any major
changes required. But if somebody complains about a compile error on
those platforms (assuming anybody actually uses them), you know where to
complain.
Diffstat (limited to 'DOCS/man/vo.rst')
-rw-r--r-- | DOCS/man/vo.rst | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst index 1552b217cb..84b3a6a9d9 100644 --- a/DOCS/man/vo.rst +++ b/DOCS/man/vo.rst @@ -14,7 +14,7 @@ in the list. See ``--vo=help`` for a list of compiled-in video output drivers. - The recommended output driver is ``--vo=opengl``, which is the default. All + The recommended output driver is ``--vo=gpu``, which is the default. All other drivers are for compatibility or special purposes. If the default does not work, it will fallback to other drivers (in the same order as listed by ``--vo=help``). @@ -273,37 +273,34 @@ Available video output drivers are: ``--vo-direct3d-exact-backbuffer`` Always resize the backbuffer to window size. -``opengl`` - OpenGL video output driver. It supports extended scaling methods, dithering - and color management. +``gpu`` + General purpose, customizable, GPU-accelerated video output driver. It + supports extended scaling methods, dithering, color management, custom + shaders, HDR, and more. - See `OpenGL renderer options`_ for options specific to this VO. + See `GPU renderer options`_ for options specific to this VO. By default, it tries to use fast and fail-safe settings. Use the - ``opengl-hq`` profile to use this driver with defaults set to high - quality rendering. (This profile is also the replacement for - ``--vo=opengl-hq``.) The profile can be applied with ``--profile=opengl-hq`` - and its contents can be viewed with ``--show-profile=opengl-hq``. + ``gpu-hq`` profile to use this driver with defaults set to high quality + rendering. The profile can be applied with ``--profile=gpu-hq`` and its + contents can be viewed with ``--show-profile=gpu-hq``. - Requires at least OpenGL 2.1. - - Some features are available with OpenGL 3 capable graphics drivers only - (or if the necessary extensions are available). - - OpenGL ES 2.0 and 3.0 are supported as well. + This VO abstracts over several possible graphics APIs and windowing + contexts, which can be influenced using the ``--gpu-api`` and + ``--gpu-context`` options. Hardware decoding over OpenGL-interop is supported to some degree. Note that in this mode, some corner case might not be gracefully handled, and color space conversion and chroma upsampling is generally in the hand of the hardware decoder APIs. - ``opengl`` makes use of FBOs by default. Sometimes you can achieve better - quality or performance by changing the ``--opengl-fbo-format`` option to + ``gpu`` makes use of FBOs by default. Sometimes you can achieve better + quality or performance by changing the ``--gpu-fbo-format`` option to ``rgb16f``, ``rgb32f`` or ``rgb``. Known problems include Mesa/Intel not accepting ``rgb16``, Mesa sometimes not being compiled with float texture support, and some OS X setups being very slow with ``rgb16`` but fast with ``rgb32f``. If you have problems, you can also try enabling the - ``--opengl-dumb-mode=yes`` option. + ``--gpu-dumb-mode=yes`` option. ``sdl`` SDL 2.0+ Render video output driver, depending on system with or without |