summaryrefslogtreecommitdiffstats
path: root/video/out
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-11-07 22:32:58 +0100
committerwm4 <wm4@nowhere>2019-11-07 22:53:13 +0100
commit1c8d2246bf03626f098139f31e67d1452a41fa73 (patch)
treebfc4f4cbbc91d4ae7fbbc3dae6eaa4e6f9e1c869 /video/out
parent17a89e5778cc5be2035e0c2ddc6e7eddae8596bc (diff)
downloadmpv-1c8d2246bf03626f098139f31e67d1452a41fa73.tar.bz2
mpv-1c8d2246bf03626f098139f31e67d1452a41fa73.tar.xz
vo_gpu: vdpau actually works under EGL
The use of glXGetCurrentDisplay() restricted this to the GLX backend. But actually it works under EGL as well. Removing the GLX-specific call and using the general mpv-internal method to get the X "Display" makes it work in mpv. I didn't know this. Nvidia didn't list this as extension in the EGL context when I still used their GPUs. Note that this might in theory break use of vdpau in some libmpv clients using the render API. But only if MPV_RENDER_PARAM_X11_DISPLAY is not used, and they relied on mpv using glXGetCurrentDisplay(). EGL does not provide such an API, and hwdec_vaapi.c also uses what hwdec_vdpau.c uses now. Considering that vaapi is preferable these days, it's not bad at all if these clients get "broken". They can be easily fixed by passing the display to mpv correctly.
Diffstat (limited to 'video/out')
-rw-r--r--video/out/opengl/hwdec_vdpau.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/video/out/opengl/hwdec_vdpau.c b/video/out/opengl/hwdec_vdpau.c
index f865978f5b..ce0d32b3a9 100644
--- a/video/out/opengl/hwdec_vdpau.c
+++ b/video/out/opengl/hwdec_vdpau.c
@@ -18,8 +18,6 @@
#include <stddef.h>
#include <assert.h>
-#include <GL/glx.h>
-
#include "video/out/gpu/hwdec.h"
#include "ra_gl.h"
#include "video/vdpau.h"
@@ -49,7 +47,7 @@ struct priv {
static int init(struct ra_hwdec *hw)
{
- Display *x11disp = glXGetCurrentDisplay();
+ Display *x11disp = ra_get_native_resource(hw->ra, "x11");
if (!x11disp || !ra_is_gl(hw->ra))
return -1;
GL *gl = ra_gl_get(hw->ra);
@@ -313,7 +311,7 @@ static int mapper_map(struct ra_hwdec_mapper *mapper)
}
const struct ra_hwdec_driver ra_hwdec_vdpau = {
- .name = "vdpau-glx",
+ .name = "vdpau-gl",
.priv_size = sizeof(struct priv_owner),
.imgfmts = {IMGFMT_VDPAU, 0},
.init = init,