From patchwork Wed Nov 24 05:28:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenbin Chen X-Patchwork-Id: 31621 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp9859374iob; Tue, 23 Nov 2021 21:33:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJwH2rjLdKLDFWsqzNaygYzRAYNdK5MA/2Ikz07dH7hXT+1WBykoZ9zZAQ/GsQSeORoW9x7Z X-Received: by 2002:a05:6402:5c9:: with SMTP id n9mr20375288edx.306.1637732010521; Tue, 23 Nov 2021 21:33:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1637732010; cv=none; d=google.com; s=arc-20160816; b=QVbs1In5wJlJlRywoaCtl0Mrh8JUGTx7UwjN9qhjP1danuBuJi7kIfO3QbZXV8z3RJ /5Tz8jj173H1Ka77lE3kopoKF0UC9ohUD2WAp1KnyzDZOLw4Eb1flIUJEweTHxjZl6t2 R9RJrWOeHKVL5+yDP2Z8fwzhNscRpSK3rUV/I9VM8DVAb4lqHt5tfiME7eHz85u906B6 cMBWPE9agH4NA3A/dfrmr7y+vzjNmi4AjTIjaiI+RASOYFFuEJqdvpE3TpxeSqJRvhJt OH3RDR/EadtmQUl7f+akTiO1jE4+/oYvgtgj2H+D3NGlF4tkurZP6e53cnTMx9JctkSM 270g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to; bh=VGE3Cc8w3lqdC+lj+kLYQGSGp5Z6f362aNZB2QF28KU=; b=PzkIlD9w8E3jgYKRUeXqQvpSGweEkXCBBSq6uLGq3dS7b3JC6ugvQ9sRNVp/pUYaO/ wipH3//w9O9xB4ga2EhjhveauM3+GNcv3pZ6a0/QXaUJSCHX503h+2XfDtoybo0V5T/1 hX8VAHp+ktYvcuRxU+u5TTYjsnAc4CxWKbJ2DwPkRkPoDKly+oHDpvPTVDSF9ylZ0TBf +i3djQRM2P6mdn/KK2j6fhVjA2puO9AYyS+zpaWaCYN0HPgBOdmXV3ZBAH2b19nMBw5l m1MqLjJARujU9QyvwS3prLpu/CNdD83AcO0yHcLYkrKqtoDVZW/s0d7DYjr82ez7BWq4 xYHg== ARC-Authentication-Results: i=1; mx.google.com; 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=intel.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id zh8si33573767ejb.248.2021.11.23.21.33.30; Tue, 23 Nov 2021 21:33:30 -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; 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=intel.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CBD2368AF34; Wed, 24 Nov 2021 07:33:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 575A868AF1A for ; Wed, 24 Nov 2021 07:33:03 +0200 (EET) X-IronPort-AV: E=McAfee;i="6200,9189,10177"; a="296011583" X-IronPort-AV: E=Sophos;i="5.87,258,1631602800"; d="scan'208";a="296011583" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2021 21:32:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,258,1631602800"; d="scan'208";a="457334329" Received: from chenwenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.110]) by orsmga006.jf.intel.com with ESMTP; 23 Nov 2021 21:32:47 -0800 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Nov 2021 13:28:47 +0800 Message-Id: <20211124052848.1122682-4-wenbin.chen@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211124052848.1122682-1-wenbin.chen@intel.com> References: <20211124052848.1122682-1-wenbin.chen@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH V2 4/5] libavutil/hwcontext_vulkan: Add hwupload and hwdownload support when using contiguous_planes flag. 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qOfolvjsgq3x Add hwupload and hwdownload support to vulkan when frames are allocated in one memory Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 4100e8b0a2..6421115385 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -2212,9 +2212,10 @@ static int vulkan_map_frame_to_mem(AVHWFramesContext *hwfc, AVFrame *dst, const AVFrame *src, int flags) { VkResult ret; - int err, mapped_mem_count = 0; + int err, mapped_mem_count = 0, loop = 0; AVVkFrame *f = (AVVkFrame *)src->data[0]; AVVulkanDeviceContext *hwctx = hwfc->device_ctx->hwctx; + AVVulkanFramesContext *hwfctx = hwfc->hwctx; const int planes = av_pix_fmt_count_planes(hwfc->sw_format); VulkanDevicePriv *p = hwfc->device_ctx->internal->priv; FFVulkanFunctions *vk = &p->vkfn; @@ -2241,7 +2242,9 @@ static int vulkan_map_frame_to_mem(AVHWFramesContext *hwfc, AVFrame *dst, dst->width = src->width; dst->height = src->height; - for (int i = 0; i < planes; i++) { + loop = hwfctx->contiguous_planes == AV_VK_FRAME_FLAG_CONTIGUOUS_MEMORY ? + 1 : planes; + for (int i = 0; i < loop; i++) { ret = vk->MapMemory(hwctx->act_dev, f->mem[i], 0, VK_WHOLE_SIZE, 0, (void **)&dst->data[i]); if (ret != VK_SUCCESS) { @@ -2252,6 +2255,11 @@ static int vulkan_map_frame_to_mem(AVHWFramesContext *hwfc, AVFrame *dst, } mapped_mem_count++; } + if (hwfctx->contiguous_planes == AV_VK_FRAME_FLAG_CONTIGUOUS_MEMORY) { + for (int i = 0; i < planes; i++) { + dst->data[i] = dst->data[0] + f->offset[i]; + } + } /* Check if the memory contents matter */ if (((flags & AV_HWFRAME_MAP_READ) || !(flags & AV_HWFRAME_MAP_OVERWRITE)) &&