diff mbox series

[FFmpeg-devel] avutil/hwcontext_d3d11va: enable D3D11_RESOURCE_MISC_SHARED for texture

Message ID 20220420041029.1309-1-tong1.wu@intel.com
State New
Headers show
Series [FFmpeg-devel] avutil/hwcontext_d3d11va: enable D3D11_RESOURCE_MISC_SHARED for texture | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_armv7_RPi4 success Make finished
andriy/make_fate_armv7_RPi4 success Make fate finished

Commit Message

Wu, Tong1 April 20, 2022, 4:10 a.m. UTC
Add D3D11_RESOURCE_MISC_SHARED flag for texture to make it shareable.
This can fix the green frames issue when mapping from d3d11va to opencl.
Sample command line: ffmpeg.exe -hwaccel d3d11va -hwaccel_output_format
d3d11 -i input.264 -vf
"hwmap=derive_device=opencl,format=opencl,hwdownload,format=nv12" -c:v
libx264 output.mp4

Signed-off-by: Tong Wu <tong1.wu@intel.com>
---
 libavutil/hwcontext_d3d11va.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Hendrik Leppkes April 20, 2022, 6:35 a.m. UTC | #1
On Wed, Apr 20, 2022 at 6:11 AM Tong Wu
<tong1.wu-at-intel.com@ffmpeg.org> wrote:
>
> Add D3D11_RESOURCE_MISC_SHARED flag for texture to make it shareable.
> This can fix the green frames issue when mapping from d3d11va to opencl.
> Sample command line: ffmpeg.exe -hwaccel d3d11va -hwaccel_output_format
> d3d11 -i input.264 -vf
> "hwmap=derive_device=opencl,format=opencl,hwdownload,format=nv12" -c:v
> libx264 output.mp4
>

The flags are configurable, we should not force them for specific cases.
Specifically, there is also two ways to share a texture, this flag and
the D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag (which is preferable for
new code), which would conflict with each other, making it impossible
to set it.

- Hendrik
Wu, Tong1 April 20, 2022, 7:42 a.m. UTC | #2
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
> Hendrik Leppkes
> Sent: Wednesday, April 20, 2022 2:35 PM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel@ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH] avutil/hwcontext_d3d11va: enable
> D3D11_RESOURCE_MISC_SHARED for texture
> 
> On Wed, Apr 20, 2022 at 6:11 AM Tong Wu
> <tong1.wu-at-intel.com@ffmpeg.org> wrote:
> >
> > Add D3D11_RESOURCE_MISC_SHARED flag for texture to make it shareable.
> > This can fix the green frames issue when mapping from d3d11va to opencl.
> > Sample command line: ffmpeg.exe -hwaccel d3d11va
> > -hwaccel_output_format
> > d3d11 -i input.264 -vf
> > "hwmap=derive_device=opencl,format=opencl,hwdownload,format=nv12"
> -c:v
> > libx264 output.mp4
> >
> 
> The flags are configurable, we should not force them for specific cases.
> Specifically, there is also two ways to share a texture, this flag and the
> D3D11_RESOURCE_MISC_SHARED_NTHANDLE flag (which is preferable for
> new code), which would conflict with each other, making it impossible to set
> it.
> 

Thanks for the review. Since the flags should not be set for those specific cases
like that, is there any feasible way to enable the share resource between d3d11 
and opencl and make the sample command line work?

> - Hendrik
> _______________________________________________
> 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".
diff mbox series

Patch

diff --git a/libavutil/hwcontext_d3d11va.c b/libavutil/hwcontext_d3d11va.c
index 8ab96bad25..c7227a13b4 100644
--- a/libavutil/hwcontext_d3d11va.c
+++ b/libavutil/hwcontext_d3d11va.c
@@ -199,7 +199,7 @@  static AVBufferRef *d3d11va_alloc_single(AVHWFramesContext *ctx)
         .ArraySize  = 1,
         .Usage      = D3D11_USAGE_DEFAULT,
         .BindFlags  = hwctx->BindFlags,
-        .MiscFlags  = hwctx->MiscFlags,
+        .MiscFlags  = hwctx->MiscFlags | D3D11_RESOURCE_MISC_SHARED,
     };
 
     hr = ID3D11Device_CreateTexture2D(device_hwctx->device, &texDesc, NULL, &tex);
@@ -263,7 +263,7 @@  static int d3d11va_frames_init(AVHWFramesContext *ctx)
         .ArraySize  = ctx->initial_pool_size,
         .Usage      = D3D11_USAGE_DEFAULT,
         .BindFlags  = hwctx->BindFlags,
-        .MiscFlags  = hwctx->MiscFlags,
+        .MiscFlags  = hwctx->MiscFlags | D3D11_RESOURCE_MISC_SHARED,
     };
 
     if (hwctx->texture) {