1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-24 15:52:25 +00:00
mpv/video/out/gpu
wm4 0abe34ed21 vo_gpu: x11: remove special vdpau probing, use EGL by default
Originally, vo_gpu/vo_opengl considered the case of Nvidia proprietary
drivers, which required vdpau/GLX, and Intel open source drivers, which
require vaapi/EGL. Since window creation and GPU context creation are
inseparable in mpv's internal API, it had to pick the correct API very
early, or hardware decoding wouldn't work. "x11probe" was introduced for
this reason. It created a GLX context (without showing the window yet),
and checked whether vdpau was available. If yes, it used GLX, if not, it
continued probing x11/EGL. (Obviously it couldn't always fail on GLX
without vdpau, which is why it was a separate "probe" backend.)

Years passed, and now the situation is different. Vdpau is dead. Nvidia
drivers and libavcodec now provide CUDA interop, which requires EGL, and
fixes some of the vdpau problems. AMD drivers now provide vaapi, which
generally works better than vdpau. Intel didn't change.

In particular, vaapi provides working HEVC Main10 support. In theory, it
should work on vdpau too, with quality reduction (no 10 bit surfaces),
but I couldn't get it to work.

So always prefer EGL. And suddenly hardware decoding works. This is
actually rather important, because HEVC is unfortunately on the rise,
despite shitty encoders and unoptimized decoders. The latter may mean
that hardware decoding works better than libavcodec.

This should have been done a long, long time ago.
2019-09-15 20:00:52 +03:00
..
context.c vo_gpu: x11: remove special vdpau probing, use EGL by default 2019-09-15 20:00:52 +03:00
context.h vo: use a struct for vsync feedback stuff 2018-12-06 10:30:25 +01:00
d3d11_helpers.c vo_gpu: d3d11: implement tex_download() 2018-02-13 21:25:15 +11:00
d3d11_helpers.h vo_gpu: d3d11: implement tex_download() 2018-02-13 21:25:15 +11:00
error_diffusion.c vo_gpu: process three component together in error diffusion 2019-06-16 11:19:44 +02:00
error_diffusion.h vo_gpu: implement error diffusion for dithering 2019-06-16 11:19:44 +02:00
hwdec.c hwdec: detach d3d and d3d9 hwaccel from angle 2018-01-25 20:57:45 -08:00
hwdec.h
lcms.c lcms: allow infinite contrast 2019-03-09 12:55:44 +01:00
lcms.h
libmpv_gpu.c drm: rename plane options to better, invariant, names 2018-12-01 15:42:20 +02:00
libmpv_gpu.h client API: add a new way to pass X11 Display etc. to render API 2018-03-26 19:47:08 +02:00
osd.c vo_gpu: fix segfault when OSD tex creation fails 2019-04-21 23:55:22 +03:00
osd.h
ra.c client API: add a new way to pass X11 Display etc. to render API 2018-03-26 19:47:08 +02:00
ra.h video/out/gpu: Add a storable flag to ra_format 2019-07-08 00:59:28 +02:00
shader_cache.c vo_gpu: index desc namespaces by ra 2019-04-21 23:55:22 +03:00
shader_cache.h vo_gpu: invalidate fbotex before drawing 2017-12-25 00:47:53 +01:00
spirv_shaderc.c vo_gpu: switch to optimization level performance 2018-09-01 16:14:22 +02:00
spirv.c spirv: remove --spirv-compiler=nvidia 2018-12-01 15:50:23 +02:00
spirv.h
user_shaders.c vo_gpu: allow user shader to fix texture offset 2019-06-06 20:01:56 +02:00
user_shaders.h vo_gpu: allow user shader to fix texture offset 2019-06-06 20:01:56 +02:00
utils.c video/out/gpu: Add a storable flag to ra_format 2019-07-08 00:59:28 +02:00
utils.h
video_shaders.c vo/gpu: fix check on src/dst peak mismatch 2019-09-05 19:13:44 +03:00
video_shaders.h vo_gpu: improve tone mapping desaturation 2019-02-18 01:54:06 +02:00
video.c vo_gpu: correctly normalize src.sig_peak 2019-09-15 01:33:27 +02:00
video.h vo_gpu: implement error diffusion for dithering 2019-06-16 11:19:44 +02:00