From: "Xiang, Haihao" <haihao.xiang-at-intel.com@ffmpeg.org> To: "ffmpeg-devel@ffmpeg.org" <ffmpeg-devel@ffmpeg.org> Cc: "briannorris@chromium.org" <briannorris@chromium.org> Subject: Re: [FFmpeg-devel] [PATCH] lavu/hwcontext_vaapi: Skip 'vgem' driver Date: Mon, 5 Dec 2022 04:37:29 +0000 Message-ID: <7ef2d283c35de47f6d2c38236d3d649e49a5eac2.camel@intel.com> (raw) In-Reply-To: <20221123215444.1754721-1-briannorris@chromium.org> On Wed, 2022-11-23 at 13:54 -0800, Brian Norris wrote: > There can be more than one available render node, and it's not > guaranteed the first node we come across is the correct one. In > particular, 'vgem' devices are common, and are > never VAAPI-enabled and thus not valid here. > > We have a 'kernel_driver' arg already for specifying a single driver we > *do* want, but it doesn't support a negation, nor a list. It's easier > just to automatically skip 'vgem' anyway, to avoid foisting this burden > on users. > > This has precedent in libva-utils already: > > bfb6b98ed62a exclude vgem node and invalid drm node in vainfo > > https://github.com/intel/libva-utils/commit/bfb6b98ed62ac14a840ba62639ab902a23912258 > > Signed-off-by: Brian Norris <briannorris@chromium.org> > --- > > libavutil/hwcontext_vaapi.c | 28 +++++++++++++++++++++------- > 1 file changed, 21 insertions(+), 7 deletions(-) > > diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c > index 4bcde74f6212..84b03b633251 100644 > --- a/libavutil/hwcontext_vaapi.c > +++ b/libavutil/hwcontext_vaapi.c > @@ -1700,6 +1700,7 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, > const char *device, > char path[64]; > int n, max_devices = 8; > #if CONFIG_LIBDRM > + drmVersion *info; > const AVDictionaryEntry *kernel_driver; > kernel_driver = av_dict_get(opts, "kernel_driver", NULL, 0); > #endif > @@ -1713,9 +1714,15 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, > const char *device, > break; > } > #if CONFIG_LIBDRM > + info = drmGetVersion(priv->drm_fd); > + if (!info) { > + av_log(ctx, AV_LOG_VERBOSE, > + "Failed to get DRM version for device %d.\n", n); > + close(priv->drm_fd); > + priv->drm_fd = -1; > + continue; > + } > if (kernel_driver) { > - drmVersion *info; > - info = drmGetVersion(priv->drm_fd); > if (strcmp(kernel_driver->value, info->name)) { > av_log(ctx, AV_LOG_VERBOSE, "Ignoring device %d " > "with non-matching kernel driver (%s).\n", > @@ -1730,12 +1737,19 @@ static int vaapi_device_create(AVHWDeviceContext *ctx, > const char *device, > "with matching kernel driver (%s).\n", > n, info->name); > drmFreeVersion(info); > - } else > -#endif > - { > - av_log(ctx, AV_LOG_VERBOSE, "Trying to use " > - "DRM render node for device %d.\n", n); > + break; > + } else if (!strncmp(info->name, "vgem", 4)) { The virtual GEM device is vgem, so better to use strcmp here. Thanks Haihao > + av_log(ctx, AV_LOG_VERBOSE, > + "Skipping vgem node for device %d.\n", n); > + drmFreeVersion(info); > + close(priv->drm_fd); > + priv->drm_fd = -1; > + continue; > } > + drmFreeVersion(info); > +#endif > + av_log(ctx, AV_LOG_VERBOSE, "Trying to use " > + "DRM render node for device %d.\n", n); > break; > } > if (n >= max_devices) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-12-05 4:37 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-23 21:54 Brian Norris 2022-11-29 11:25 ` Anton Khirnov 2022-11-29 19:03 ` Brian Norris 2022-12-05 4:37 ` Xiang, Haihao [this message] 2022-12-05 22:27 ` Brian Norris
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=7ef2d283c35de47f6d2c38236d3d649e49a5eac2.camel@intel.com \ --to=haihao.xiang-at-intel.com@ffmpeg.org \ --cc=briannorris@chromium.org \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git