From patchwork Tue Nov 30 06:28:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenbin Chen X-Patchwork-Id: 31828 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp7254670iob; Mon, 29 Nov 2021 22:32:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJwjTvajVZtKEbpAZ0Um8DImeGKhX6L3n+PmuAiGFrGsNSYFwUEHaNp0F2GxzxBqXh/y+qgu X-Received: by 2002:a05:6402:2079:: with SMTP id bd25mr81571807edb.116.1638253979654; Mon, 29 Nov 2021 22:32:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638253979; cv=none; d=google.com; s=arc-20160816; b=j+OXMC3zgXfMHWP2q1okmc3zG3PMTqwLus98syvAim8ttcdvuvE29RqFUUVZ3nZnyj nvv6YPuMHVxMv9DJsL6prvbofy30byiZCB02ieIDfKT4VJoiynxX+iwOEaeIiNC4Ecdk ePhsRF0MiP8GD/acO/N6a/LZFTOhHybbISedYoPcn4VfoaETHYJbAy8SSh78FjRO+Qyh e3T4l/+DDQSEUvHkSY9eyP41h73x6OiYyjXjjot7EgwLxkM/VLRTuIuANCOZ1khLco7a UEKrcxBZDWa0EDH7IZcZYA9CqSyaZUu/oileDXDciHDS+g44yxJb/AEOzNO21QV2dwje Swvg== 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=ZCze7fU5xnxC52nIAVDrvDymlFq2IokBFJFXZzS3tr4iyhF5bnC6MZLdYmhVzYzRyN jV8IbqI3yd14TFU6oYOUbgMd0R+OUbbT6xuRg2VCoqto1jOP/xTgPQ7rqECk6urI3qYX DurPoMbWW4Q6Y4BU3sAnb2jEgptNKuNa/cYJpqWvkMTT/gK79jYp/THlk6Y5hjuMFYVU TDU/L9S2ro8SyWefAvEZbTlMwst6eGb0miKbCCN6prSowDalm6fCzffAU3hQBI9clG3P 9YDB7PMvIFAq58f2uitS6c522n1vjI4YkLtgGcHJcNt/qx1eNtGRnbktZp+IGfJUDq/q r5+Q== 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 de8si22533031ejc.111.2021.11.29.22.32.59; Mon, 29 Nov 2021 22:32:59 -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 E4F7868AE4D; Tue, 30 Nov 2021 08:32:31 +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 E12FC68AD88 for ; Tue, 30 Nov 2021 08:32:24 +0200 (EET) X-IronPort-AV: E=McAfee;i="6200,9189,10183"; a="296958619" X-IronPort-AV: E=Sophos;i="5.87,275,1631602800"; d="scan'208";a="296958619" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Nov 2021 22:32:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,275,1631602800"; d="scan'208";a="653962406" Received: from chenwenbin-z390-aorus-ultra.sh.intel.com ([10.239.35.110]) by fmsmga001.fm.intel.com with ESMTP; 29 Nov 2021 22:32:17 -0800 From: Wenbin Chen To: ffmpeg-devel@ffmpeg.org Date: Tue, 30 Nov 2021 14:28:14 +0800 Message-Id: <20211130062815.708915-4-wenbin.chen@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211130062815.708915-1-wenbin.chen@intel.com> References: <20211130062815.708915-1-wenbin.chen@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH V4 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: RBKK99BhY6iS 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)) &&