From patchwork Wed Nov 23 21:54:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brian Norris X-Patchwork-Id: 39399 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp4096711pzb; Wed, 23 Nov 2022 13:55:02 -0800 (PST) X-Google-Smtp-Source: AA0mqf6KC1XV2D3PzdSXgtG3yHHmPa6Dm+LFJzJti6bctodozPfxslz4aoBlBYlRG49cw+gRyo2R X-Received: by 2002:a17:906:4dc7:b0:76c:42b4:dea4 with SMTP id f7-20020a1709064dc700b0076c42b4dea4mr24846173ejw.515.1669240502236; Wed, 23 Nov 2022 13:55:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669240502; cv=none; d=google.com; s=arc-20160816; b=v5UVL9V6q35a2zbs7//PMddtEzjgWz1MparMGTSXX4UIalaWOJvpMP0o4nkAkm1DBb qEGhVVqYzfknRqzWkBDgY3D0bD1gTNfyi2U+3nrQnfNCeyi5D0Lj2ZACUczVpv60FapU mzUqR3uLDde3nSCESdUSmVCK2dbP1ILPoM0yHnYPJl+Uo9RkV5EEnsw5uE0OI0BwYhs3 2w+FDpN3yjH6joV1qRSTfYVhHomrIr2ic0ShKaNsdTWTOsVrY3ahkS8mrOfOhbu2hhQy AFW+1cHIJ7Ay/G2kCrAycpUGW7EHmLtLFVPr8Uvwu4mdP+TcUi9MfMWLjQedU6rNFp7u WYWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=VzFTlh3X0PUOS43x7rXSfXNWsumhp8QlYkBGObkE0wI=; b=Sdhcal2h+ye89aI0OvPXRY/EfstVmHjv9oFBGdb7pHtH6lz1K0pjsv0Bm+mCpuwc7x omROd/ZUzyVer6b/BedqZt3cTdVYMF0RHBLeAymAKcerVrht+RHd1D/42Ka7mK/X6DNc Vba+puRUhjqpO+5alpswaU51sdgWZBGFK+aCwesZ5ocfQ9G8npytbXvx9gJZHBfOgdwq xgHc7OKAW2WSoKvJfKqcbcThqT0wUzm4i05qO4lzABREqHe9EG/+ZapTfFycrgn7oA67 WmneOCCuS1VZAH0Erei+B+Ajm44HpBQpwAC9m4TQaWfvTn1E6vOaFTQgd0smSR+Kv4OY Se7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=RRL5Y7Eu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id xg2-20020a170907320200b00780e89ce0b0si16492001ejb.600.2022.11.23.13.55.00; Wed, 23 Nov 2022 13:55:02 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@chromium.org header.s=google header.b=RRL5Y7Eu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6F4CA68B726; Wed, 23 Nov 2022 23:54:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D68E868AF85 for ; Wed, 23 Nov 2022 23:54:50 +0200 (EET) Received: by mail-pj1-f43.google.com with SMTP id w15-20020a17090a380f00b0021873113cb4so3036766pjb.0 for ; Wed, 23 Nov 2022 13:54:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=OxIbeSzbQy0flJ5IFIdI8ouC+tzM3pnKpD2kDp+dGBU=; b=RRL5Y7EuSynE+/Q4IA84wcYBGlXe6mRGry6nG9hF+mE8LUE7idKVF8AAu4Bp0RutvS FLbUPWkA4bL0gGESMIY1wj9hVqVNXVtnN+nks/5iEEjaIerBMOiDeITHH7jAAhB6X4Oa 0ADc5cWCW9mESt3vfuummBWWaXhi/qcR+tUwQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=OxIbeSzbQy0flJ5IFIdI8ouC+tzM3pnKpD2kDp+dGBU=; b=dxMUaTL44dvGzmofCCsY+4dhOItHPbESQIjj7Qn7jpHO3kxdY+yVvnFYxNt29Q5eb5 qmx0tWB2JDAfllsbSx7jizf4myfBXxgUmBQ/qj98NB+Zx3tXq0Gq6AMyygKOvfEzeqj/ 25jYDZCzqcbGuY65mML7lGooVvQlFggSRfhXR14NvH4RhgFGXNwRDTTZUEJIvX9FcuBC b9o3UMUYo2O7ZPTGUXFDuUZKNBahxWz7HlgYTOJLvhX72vt1qZRGuC2ewbZpUKfiXBNu 6bDLBs9ol9JAbwUNX9lmSqP6UQ5AFIcxdnaGQHhylRooXC/bfFjhEq9u7zUcdKenJA2/ Exuw== X-Gm-Message-State: ANoB5pkkgrkuhfqF9b8ByJEfY2edlj2yf33Fj5ick/RUF58fiCawgHHb /cOqfgfTS+AOx18WQnT5WR5Ua2um43O2lQ== X-Received: by 2002:a17:903:300c:b0:17c:b7ac:86f with SMTP id o12-20020a170903300c00b0017cb7ac086fmr10827830pla.140.1669240488562; Wed, 23 Nov 2022 13:54:48 -0800 (PST) Received: from localhost ([2620:15c:9d:2:398f:3ae8:aee3:41c4]) by smtp.gmail.com with UTF8SMTPSA id x9-20020aa79409000000b005623f96c24bsm13177959pfo.89.2022.11.23.13.54.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 23 Nov 2022 13:54:48 -0800 (PST) From: Brian Norris To: ffmpeg-devel@ffmpeg.org Date: Wed, 23 Nov 2022 13:54:44 -0800 Message-Id: <20221123215444.1754721-1-briannorris@chromium.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavu/hwcontext_vaapi: Skip 'vgem' driver X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Brian Norris Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kVsYk8vxC5mX 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 --- 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)) { + 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)