From patchwork Wed Mar 9 06:56:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Chuan X-Patchwork-Id: 34644 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:4285:0:0:0:0 with SMTP id wq5csp1279642nkb; Tue, 8 Mar 2022 22:56:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJxVZ+gkzZtagjaC1RXqEukEFe0tXMTh25afVDnv6njMHRHXjvxHUaZQIfc4oNN8b08ieTDZ X-Received: by 2002:aa7:de84:0:b0:40f:db98:d0f9 with SMTP id j4-20020aa7de84000000b0040fdb98d0f9mr19636094edv.366.1646809001058; Tue, 08 Mar 2022 22:56:41 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e17-20020a170906505100b006cf834b30e3si657390ejk.598.2022.03.08.22.56.40; Tue, 08 Mar 2022 22:56:41 -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=@outlook.com header.s=selector1 header.b=ho7fXwmk; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6466E68B002; Wed, 9 Mar 2022 08:56:35 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from AUS01-SY4-obe.outbound.protection.outlook.com (mail-sy4aus01olkn2162.outbound.protection.outlook.com [40.92.62.162]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 42A0968A905 for ; Wed, 9 Mar 2022 08:56:28 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fOfK/p40O45JZdZqon/VHb2YgQGHKCVIeDWGQUxY4z3f7//D97rre3h4LlFesZ0BumdyyyK4iDJcn5OgTcKAw/BdwbLUy8wC1Z/fcMh5TO5TAmxJl+2+AStqnDoJ77YX1bSB9vhLNWq5ZJspksuoGRC5G6YsvYSvn/O7Syea1GJHgw2N99M1+2Pv8NLWx5h4OjjSFAO+/K24ptf39q74Fc9+uvC3uitE7ZwxlFMeMXheYoMIPNwen3/uwi0Uj6jGXGcDGP0/3V9GE0cciCSO6/MC0fBlUEqgxYN+dGP6lDbMwhX5utvz91iHAqc2BqGbr+6siNGrsow3yW7FpEN8YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tK3DtX/KuGO3lQUjB5fR3ut/PPAwN5cogYCFFi0Rn5c=; b=d5VZ/GPSbg/dC5g/ZWw0ecurMhfa+n/Fl1/7eHzsF2KZjtGfiHUrFJYRpRlbrAqjXV+3AGjEJnGf6Ns2XkkmK4AR39avBq9Mlx3Fa4yR9wJm3p/1ieaAQ/jONwGubfvFnZ9FoRvfAk+9aeOG0BITx83DWxFCIe/ypZrOLTsaCrew+z75b4rwUYt7ZLXEgmQlVDOx3FQW5LKpVnPt/FGdlEdvTnun8u6b5CDkJ1R4Sro005TJquAO3EUGitEu5CZRxzQgalBtBxN0ofzlP2OlCuuJpW68m+OAbPeVV7FYsFelr01+UiBLe7qxBMqloKMueqpbLZRBA9yIu/EqTGTMQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tK3DtX/KuGO3lQUjB5fR3ut/PPAwN5cogYCFFi0Rn5c=; b=ho7fXwmkQEED9TXK9GRE8HRAUenCybk3TasGRxGTbKUSVOt6x79TKKbMs28qFt3PgDMlV5wTaSX+pxb+lq5Qrrz/nCjroJsKhLf6XOBUM8NTu4+Ub6wwtrv+8vRVwlIoDhIaMatz4AHjD3qnUZkEQr5MK92sCwW9vs5IA2/nKdOX2tw1ZWKGgf2jMBYRfstDhv+DjKfRPql/zF8EnJpLCJPYT3hNmCNZVIAGJ9jgkd3O/FrVkr3arm8NmGYc0shwyuL9ECWVQud+gl5DXhXpr0MPWER7nXz7UySJBXGvTxgq80DxN3rFk/erd8JDIhRTpEfSzIIyuOOku4hnywTnaQ== Received: from ME3PR01MB5624.ausprd01.prod.outlook.com (2603:10c6:220:cd::12) by SY3PR01MB0635.ausprd01.prod.outlook.com (2603:10c6:0:8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Wed, 9 Mar 2022 06:56:23 +0000 Received: from ME3PR01MB5624.ausprd01.prod.outlook.com ([fe80::b852:909c:c2eb:b8cb]) by ME3PR01MB5624.ausprd01.prod.outlook.com ([fe80::b852:909c:c2eb:b8cb%4]) with mapi id 15.20.5038.027; Wed, 9 Mar 2022 06:56:22 +0000 Message-ID: Date: Wed, 9 Mar 2022 14:56:19 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.2 From: Wang Chuan To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-TMN: [PVwO9xrshAeOj+643ZP+qCCr/DMJLzOW] X-ClientProxiedBy: SG2PR01CA0171.apcprd01.prod.exchangelabs.com (2603:1096:4:28::27) To ME3PR01MB5624.ausprd01.prod.outlook.com (2603:10c6:220:cd::12) X-Microsoft-Original-Message-ID: <312511c9-5419-517a-d8a3-66348286ab48@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4afc559f-983f-48d8-24b5-08da0199ebdb X-MS-TrafficTypeDiagnostic: SY3PR01MB0635:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: slSI2PMVW8orRsXxcBFreXoSBYMAn8e+DHAHqyUrcDvjxmn3r5s7xgMxQGAgTkZOQUu2Ah/B6Pu0Bg5VV+GVTI6NqsuDzM6bS1c5QTaM9H277dfo4yuMO5HwlgyYV7W17vhAJGXuQfvh79LsbdD+jxRLZdlJgve98wP8cZnWqRfwf6xZJo+o+0gD4TfD3Qex8B/Th7E6wUR0OSNo9SXJ7rZxVObtfosRfJrjAtSt0KN48K8dNOvNbJnwQr7zqQNryDdZVAfU78rEEM3yBAgb0/LP0gDzU3rGPY6gYFVOYnm7GKJ6ckRelNS2aPB4P3UHKANR+kYOTXpCFSaU9d6q+b4NNjUnzBqJW/Eu2ObVOeJEDda8lfPa7Bf+7NmXd3eporMk37RGijeo6E/LQq5nqnNvn8vFKEh0AzL62Luo4IxK4GsjIPTaMdfSrxq6Gkbk2hBrqMNLiiFSnI/6c8oAkK58SEZH9LK6EsF8Xo/qv1Q/dbUS0Xh7pH+W0ky4a09zZRSU+y3aGy3EyFltqIzNBmsnMCL4S9Ve+o77ZGKkH/KxggV64x/Z51rPZ9ek8sjaLAhAAVYgVlOvGHacCJYYqg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?epysXROXh66g1eArX9YUL5aolgQc?= =?utf-8?q?H5GwA3KyxJbFQoyypoQu8F6i0MqY0mHzloejQINjZB9B2+t55E6V72b6gN+2cAKj4?= =?utf-8?q?+faidD2pa6uEtcme+jIkejePPRyPYcsd23aB/LHPuvpH38U1jUe6Ynx2Nni685i0A?= =?utf-8?q?s90w5sC0FSsSaCwjoMIVIZBEgZtwO9OU+PEx6dZQ/G7KKuQEIUampofMhpAfHzPBr?= =?utf-8?q?fEarPWvqmhwWOvwNU3KUGiWT+VDccWPTSwguUfyKrtVVl0MhKYeVPt8lW4r3XV66V?= =?utf-8?q?+QseJTgC85Q1UXJNWGTsF7oiHzkAdnp8xzCJzdqx3XkYeqzAsGgxGSFemdnrz2/d7?= =?utf-8?q?BWEeOB9eVxoqXWZ5CmpWlVXHJjGh2ylNps4+exzv5F+pIYpdj29ma2YEt9YBtTyV6?= =?utf-8?q?mJubs0/l7yoaHN0kvwYrJlgDTmpg4mGmdOl5M1ebNrjEpG3trxeGFWaVrOGIT3isE?= =?utf-8?q?bt0jN1FCr+02wnF7vEUlVSH3nRXgO4kFovhKERqYNIOmCxzokMkXuBfHbpcOYAjSK?= =?utf-8?q?icmDoIFt2+uuLbMnj/+ZQB1p4mWTOHUczYjxgZkIXkLh1kjo+ID3zKOUqy6IJfUC5?= =?utf-8?q?/bhxRAlDd9BSkb2xjE2G5p3QEu85GmwCCQXlQcStsItbSU++bxFwbx06KK90TkrX2?= =?utf-8?q?disXhdNZJ50r+LOJT69VHGTewNVta0jlpWz9ZDXSRpOVUzktWbrZb9M2HItfeVX6s?= =?utf-8?q?yV6MEB+yy/55Uy2ccNjgOJ0Pduz6lqSFLoHFY7ZHIcsqDUEH8g+0Yn1x7hZYHLVrc?= =?utf-8?q?/dAgl09pI6BOBoHnq+KltzyqI/2SaYip+3Ck+2GU0gEVA0crHBxGPpS1vUt5NbSwt?= =?utf-8?q?CvDSIOGuvKSw7VKjd4X/AkiG4x6J7mwZdG5vJQx+8rqnueuYMMpKwSRaxGEALDWfj?= =?utf-8?q?G1sKla2V/2iV3uNC9XoW3RHgeC+IhnbNI8dgj3e3lILg=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4afc559f-983f-48d8-24b5-08da0199ebdb X-MS-Exchange-CrossTenant-AuthSource: ME3PR01MB5624.ausprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Mar 2022 06:56:22.9508 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY3PR01MB0635 Subject: [FFmpeg-devel] [PATCH] d3d11va: let user can create SRV from output 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: kKwGZQInttcv Starting from Windows 8, users can create SRV from video resource and bind it to shaders directly. This can avoid unnecessary memcpy (ID3D11DeviceContext::CopyResource, etc), so create texture with [D3D11_BIND_SHADER_RESOURCE] as decoder's output if possible. Signed-off-by: Wang Chuan --- libavcodec/dxva2.c | 2 +- libavutil/hwcontext_d3d11va.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) if (FAILED(hr)) { av_log(ctx, AV_LOG_ERROR, "Could not create the texture (%lx)\n", (long)hr); return NULL; @@ -278,6 +283,11 @@ static int d3d11va_frames_init(AVHWFramesContext *ctx) } } else if (!(texDesc.BindFlags & D3D11_BIND_RENDER_TARGET) && texDesc.ArraySize > 0) { hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &hwctx->texture); + if (FAILED(hr) && (texDesc.BindFlags & D3D11_BIND_SHADER_RESOURCE)) { + av_log(ctx, AV_LOG_ERROR, "Could not create the texture with [D3D11_BIND_SHADER_RESOURCE] flag"); + texDesc.BindFlags &= ~D3D11_BIND_SHADER_RESOURCE; + hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &hwctx->texture); + } if (FAILED(hr)) { av_log(ctx, AV_LOG_ERROR, "Could not create the texture (%lx)\n", (long)hr); return AVERROR_UNKNOWN; diff --git a/libavcodec/dxva2.c b/libavcodec/dxva2.c index 568d686f39..15b25d793c 100644 --- a/libavcodec/dxva2.c +++ b/libavcodec/dxva2.c @@ -645,7 +645,7 @@ int ff_dxva2_common_frame_params(AVCodecContext *avctx, if (frames_ctx->format == AV_PIX_FMT_D3D11) { AVD3D11VAFramesContext *frames_hwctx = frames_ctx->hwctx; - frames_hwctx->BindFlags |= D3D11_BIND_DECODER; + frames_hwctx->BindFlags |= (D3D11_BIND_DECODER | D3D11_BIND_SHADER_RESOURCE); } #endif diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c index 8ab96bad25..97ffd745bd 100644 --- a/libavutil/hwcontext_d3d11va.c +++ b/libavutil/hwcontext_d3d11va.c @@ -203,6 +203,11 @@ static AVBufferRef *d3d11va_alloc_single(AVHWFramesContext *ctx) }; hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &tex); + if (FAILED(hr) && (texDesc.BindFlags & D3D11_BIND_SHADER_RESOURCE)) { + av_log(ctx, AV_LOG_ERROR, "Could not create the texture with [D3D11_BIND_SHADER_RESOURCE] flag"); + texDesc.BindFlags &= ~D3D11_BIND_SHADER_RESOURCE; + hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &tex); + }