[vlc-commits] vaapi-drm: try the render node before the card node
Mathieu Velten
git at videolan.org
Fri Nov 25 22:07:12 CET 2016
vlc | branch: master | Mathieu Velten <matmaul at gmail.com> | Fri Nov 25 16:13:20 2016 +0100| [24bc6ae846ac589cc0a52fac2acf64f7d89ddd75] | committer: Rémi Denis-Courmont
vaapi-drm: try the render node before the card node
This patch make it work with Wayland on Fedora 25.
Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=24bc6ae846ac589cc0a52fac2acf64f7d89ddd75
---
modules/codec/avcodec/vaapi.c | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
index 8671139..03faf20 100644
--- a/modules/codec/avcodec/vaapi.c
+++ b/modules/codec/avcodec/vaapi.c
@@ -356,14 +356,24 @@ static int Create( vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt,
sys->hw_ctx.display = vaGetDisplay(sys->p_display_x11);
#endif
#ifdef VLC_VA_BACKEND_DRM
- sys->drm_fd = vlc_open("/dev/dri/card0", O_RDWR);
- if( sys->drm_fd == -1 )
- {
- msg_Err( va, "Could not access rendering device: %m" );
- goto error;
- }
+ static const char *drm_device_paths[] = {
+ "/dev/dri/renderD128",
+ "/dev/dri/card0",
+ NULL
+ };
+
+ for (int i = 0; drm_device_paths[i]; i++) {
+ sys->drm_fd = vlc_open(drm_device_paths[i], O_RDWR);
+ if (sys->drm_fd < 0)
+ continue;
- sys->hw_ctx.display = vaGetDisplayDRM(sys->drm_fd);
+ sys->hw_ctx.display = vaGetDisplayDRM(sys->drm_fd);
+ if (sys->hw_ctx.display)
+ break;
+
+ vlc_close(sys->drm_fd);
+ sys->drm_fd = -1;
+ }
#endif
if (sys->hw_ctx.display == NULL)
{
More information about the vlc-commits
mailing list