From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id DFA174C194 for ; Wed, 7 May 2025 12:04:05 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8168E68BC5B; Wed, 7 May 2025 15:04:00 +0300 (EEST) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 673B768B559 for ; Wed, 7 May 2025 15:03:53 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39d73b97500so392092f8f.3 for ; Wed, 07 May 2025 05:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746619432; x=1747224232; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=fLZgwEL6EikPsBYTmsODige2rmlVhctVzwiRPJCxdb8=; b=DnhQt7p/ydPXzecgE6B5PWhfmb1bd2qBBpQAi6KVr73uG1+6WavGdHf0H/TSCJRmXW /KZuPoAakPwOBJbM9iP8NPV1riFpqRd2a80td3rAKHSxky+XzETajTWeaxc84XJ4nHyj /LLNS34SJdG8E8dXlPeuwsOysb17ra4Sdp+suf8VEkqzPGPlAsIAqOA6nXxEUFfkraZG 4wFpRH19zmEyF+JkPsambtjoFpW4HRClwUvhORILuvFdoU8yCBGW3iwIVB4f2nHG918c EyYY9iOT1whBk2CrIAW6HGbJ12aqTt4zqW1Bj5dY2g5FWNHgc5I1U+tq76yAtKcNIaH5 2rSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746619432; x=1747224232; 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=fLZgwEL6EikPsBYTmsODige2rmlVhctVzwiRPJCxdb8=; b=SnsNCZsujR9e1gDSA5It9SJCBw+CLkrEgMi4GpWV1BHWegHmWoYlz4BDddB1bLv9Zl T6zghy79fD28fHhIbOzUk2WJfhGJ9uXpgCEqi/9g3O7aQc4A8/ODx8NZwqfRf/oABJmy 4cqMIGkatCLMLI7KYQZivwS2PzzPbU1WqDA57cXnG059eqaGMeAZtcEBdlshwnh3z3Ku f9NzL9aVHzLGwU/JV1Lb09MsD1irbYi+sbwtDdYmTPwtkminCct3TJG0EMpSbILYZqIl HegtVzAmPR53P6KicihKAPirHUpZ7h9QTfp2GVzGtnux6vu/lo3X1YJ6cVn1P+oqLgJo r3MQ== X-Gm-Message-State: AOJu0YxWRGFAg8FfFDJvNGtjUGsQ/Huc6q/7Tnp0ECRiyWL9qYAKe18y K9LxePK2QhrSIk1B5TixVb6hG4B0ZRlGuU9uqIqsE86dIwzfFPyofqdqGaSknEo= X-Gm-Gg: ASbGncva+ieJ/JAYEQt00vA7eK1tixiFulMrhWBAqSQKHrkgSr791jivFjtAE8NnXSw 1y8F32KBjBMRJqpRNZAQHWyeQof5eRw1xbGKs6XJiauTU0bTFHS6wRidklkFYJehWdYRRyy0vIh Vb/JdCC/krhEmgyWEqY/1QUfjT2WgXPK3GzFT2M9MAKQzbu9UYoTeFgzRww++YlO9DqULKbaS9Y Y8Vxx+Ks50+Xx/3ONUh0F063F1WVu83SpJA+ZtT/sXqcM1fGLmGhY9aDXEgJs7SfPLlbYlCKCse 64VurgYUQmWwf5jGnj094BY8C12YTPaDXv4aw6UrtgYSlyH8dBq7/YOalMXlW8c= X-Google-Smtp-Source: AGHT+IGM1nTMePh5MqT7wdzjQMtpWACWep8c+3hASXD5PVL/lsJAuDhm8YG75GnkXXXWFKcbjAU4jg== X-Received: by 2002:a05:6000:22c2:b0:39f:67f:5daf with SMTP id ffacd0b85a97d-3a0b4a02ac4mr941000f8f.1.1746619432145; Wed, 07 May 2025 05:03:52 -0700 (PDT) Received: from mitsuki.. (p3ee2ca0a.dip0.t-ipconnect.de. [62.226.202.10]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-441d11b4698sm32826115e9.0.2025.05.07.05.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 05:03:51 -0700 (PDT) From: David Rosca To: ffmpeg-devel@ffmpeg.org Date: Wed, 7 May 2025 14:03:28 +0200 Message-ID: <20250507120326.156062-3-nowrep@gmail.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavu/hwcontext_vaapi: Add direct map quirk for Intel i965 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: David Rosca Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: vaGetImage is currently used for all maps when read access is required because vaDeriveImage is supposed to be very slow on old Intel HW with i965 driver. However, this is not the case with modern drivers and vaDeriveImage is faster also for reading. Add a new quirk for i965 driver that will keep the old behavior of using vaGetImage for read access, and prefer vaDeriveImage with other drivers. --- libavutil/hwcontext_vaapi.c | 8 ++++++-- libavutil/hwcontext_vaapi.h | 7 +++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c index 95aa38d9d2..99148ba5da 100644 --- a/libavutil/hwcontext_vaapi.c +++ b/libavutil/hwcontext_vaapi.c @@ -377,7 +377,7 @@ static const struct { { "Intel i965 (Quick Sync)", "i965", - AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS, + AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS | AV_VAAPI_DRIVER_QUIRK_AVOID_DIRECT_MAP_READ, }, #endif { @@ -812,6 +812,7 @@ static int vaapi_map_frame(AVHWFramesContext *hwfc, #if VA_CHECK_VERSION(1, 21, 0) uint32_t vaflags = 0; #endif + int use_direct_map; surface_id = (VASurfaceID)(uintptr_t)src->data[3]; av_log(hwfc, AV_LOG_DEBUG, "Map surface %#x.\n", surface_id); @@ -854,8 +855,11 @@ static int vaapi_map_frame(AVHWFramesContext *hwfc, // faster with a copy routine which is aware of the limitation, but we // assume for now that the user is not aware of that and would therefore // prefer not to be given direct-mapped memory if they request read access. + use_direct_map = !(flags & AV_HWFRAME_MAP_READ) || + !(hwctx->driver_quirks & AV_VAAPI_DRIVER_QUIRK_AVOID_DIRECT_MAP_READ); + if (ctx->derive_works && dst->format == hwfc->sw_format && - ((flags & AV_HWFRAME_MAP_DIRECT) || !(flags & AV_HWFRAME_MAP_READ))) { + ((flags & AV_HWFRAME_MAP_DIRECT) || use_direct_map)) { vas = vaDeriveImage(hwctx->display, surface_id, &map->image); if (vas != VA_STATUS_SUCCESS) { av_log(hwfc, AV_LOG_ERROR, "Failed to derive image from " diff --git a/libavutil/hwcontext_vaapi.h b/libavutil/hwcontext_vaapi.h index 0b2e071cb3..c08843bed1 100644 --- a/libavutil/hwcontext_vaapi.h +++ b/libavutil/hwcontext_vaapi.h @@ -58,6 +58,13 @@ enum { * and the results of the vaQuerySurfaceAttributes() call will be faked. */ AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES = (1 << 3), + + /** + * The driver does not map memory with fast read access. + * The surface map code will prefer vaGetImage instead of vaDeriveImage + * for read access, unless direct map was requested. + */ + AV_VAAPI_DRIVER_QUIRK_AVOID_DIRECT_MAP_READ = (1 << 4), }; /** -- 2.49.0 _______________________________________________ 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".