From patchwork Thu Dec 2 01:43:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenbin Chen X-Patchwork-Id: 31869 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp10108524iob; Wed, 1 Dec 2021 17:48:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxLOHefgga43diKNGXdpuMkiZzY33kLjSJb4Ha0HK5D/rXyqzROgXB0TgPg7pWTAKz72yCM X-Received: by 2002:a50:9e0f:: with SMTP id z15mr13371534ede.278.1638409687799; Wed, 01 Dec 2021 17:48:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638409687; cv=none; d=google.com; s=arc-20160816; b=KiAFL+L6oaQwyqRKolity5anRaEVW8md4NtmcQGGeY9yBjcrNskMEKjrPDW9skvne8 CoUcaAgSrBApZmVI8J1WTTsc6YmQLYwlanqnLEFS85EzwVdLBlRdi61143pIg1G4EsAj ubeVHhr1mGNvrQ6oQZxPVIhPmMIumDT5Da39ckn9O+WVPzg4c16n1ZIBDjbaz89fHj7w CGmrsYCoNojLAJTXdPOJSTYXaKb7gS8A3pydQuY3D5tXJifVCCbMeVwAI+LboFO+9ngM /a0q0Ho1e6XrlfKSZ6a1oaaPC0pUP+FUpobv0G3kucvXm2hjI3iXDORwP/7puiGZIJD6 ebVg== 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=stBrkhpINOmB/+B92/eZM2ix2cpztV/CtQ+mvHSHkKs=; b=dYdvfj+cHU8P/jgaNkHLpOStpc6ZcfxDZwq8eI0QDeM4cvkCfqTBvtCrkeOVZ/wDAF KPKK4f1IXWsPM+UlfZlJr8FEFWYBn7n6+oNMvcLBtugBoIXHXC2Mf5Nu+bg4qcClHNYk 3WnvPeokebmgG1qaxZrunteXGvysUNB6QWV8l/ovwCwiSc3CMX9QwTi9m1FktVAeKezK 34P9q98+AxAOHFafe3c9XbmOzPBJD24VgngTbfQ/CP6sVM4C5qgE47MsdwyQxgnLECfz AlJDW1VQHEiqOhzNMAp0TPf/+mo343RpMT28dKihuQ31Af3k1wv63IVunpNzTaL+zrf3 pVBg== 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 hd20si2354608ejc.86.2021.12.01.17.48.07; Wed, 01 Dec 2021 17:48:07 -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 898A968ADF7; Thu, 2 Dec 2021 03:47:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8EF7568AED3 for ; Thu, 2 Dec 2021 03:47:33 +0200 (EET) X-IronPort-AV: E=McAfee;i="6200,9189,10185"; a="236414962" X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="236414962" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2021 17:47:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,280,1631602800"; d="scan'208";a="512964516" Received: from chenwenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.110]) by orsmga008.jf.intel.com with ESMTP; 01 Dec 2021 17:47:24 -0800 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Thu, 2 Dec 2021 09:43:19 +0800 Message-Id: <20211202014320.1066212-4-wenbin.chen@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211202014320.1066212-1-wenbin.chen@intel.com> References: <20211202014320.1066212-1-wenbin.chen@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH V5 4/5] libavutil/hwcontext_vulkan: Add support to hwmap to software frame 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: 263BpmgEHz11 Add support to map vulkan frames to software frames when using contiguous_planes flag. Signed-off-by: Wenbin Chen --- libavutil/hwcontext_vulkan.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index eef9009ae1..f980b72720 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -2327,9 +2327,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; @@ -2356,7 +2357,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 = VKF_FLAG(hwfctx->flags, 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) { @@ -2367,6 +2370,10 @@ static int vulkan_map_frame_to_mem(AVHWFramesContext *hwfc, AVFrame *dst, } mapped_mem_count++; } + if (VKF_FLAG(hwfctx->flags, 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)) &&