[FFmpeg-trac] #10152(undetermined:new): hwupload from cuda to vulkan doesn't work on Linux
FFmpeg
trac at avcodec.org
Thu Jan 26 23:28:56 EET 2023
#10152: hwupload from cuda to vulkan doesn't work on Linux
-------------------------------------+-------------------------------------
Reporter: serql | Type: defect
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
How to reproduce:
{{{
% ffmpeg -hwaccel nvdec -hwaccel_output_format cuda -i 1.ts
-init_hw_device cuda=cuda:0 -filter_hw_device cuda -vf
hwupload=derive_device=vulkan,scale_vulkan=w=1920:h=1440 -f null -
ffmpeg version N-109662-g2c3107c3e9 Copyright (c) 2000-2023 the FFmpeg
developers
built with gcc 11 (GCC)
configuration: --enable-nonfree --enable-cuda-nvcc --enable-libnpp
--prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-
cflags='-I/root/ffmpeg_build/include -I/usr/local/cuda/include' --extra-
ldflags='-L/root/ffmpeg_build/lib -L/usr/local/cuda/lib64
-L/root/ffmpeg_sources/1.3.236.0/x86_64/lib' --extra-libs=-lpthread
--extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac
--enable-libfreetype --enable-libx264 --enable-libx265 --enable-cuvid
--enable-hwaccel=hevc_nvdec --enable-hwaccel=h264_nvdec --enable-opencl
--enable-libzimg --enable-vulkan --enable-libshaderc --enable-libplacebo
libavutil 57. 44.100 / 57. 44.100
libavcodec 59. 57.100 / 59. 57.100
libavformat 59. 36.100 / 59. 36.100
libavdevice 59. 8.101 / 59. 8.101
libavfilter 8. 54.100 / 8. 54.100
libswscale 6. 8.112 / 6. 8.112
libswresample 4. 9.100 / 4. 9.100
libpostproc 56. 7.100 / 56. 7.100
Input #0, mpegts, from '1.ts':
Duration: 00:01:00.06, start: 27664.427600, bitrate: 3665 kb/s
Program 3
Stream #0:0[0x31]: Video: hevc (Main 10) ([36][0][0][0] / 0x0024),
yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 1920x1080 [SAR 1:1 DAR 16:9],
Closed Captions, 59.94 fps, 59.94 tbr, 90k tbn
Stream mapping:
Stream #0:0 -> #0:0 (hevc (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[AVHWFramesContext @ 0x9cd0ac0] There are no supported modifiers for the
given sw_format
[Parsed_hwupload_0 @ 0xd038a80] Failed to configure output pad on
Parsed_hwupload_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!
ffmpeg version N-109662-g2c3107c3e9
built on Linux (Centos 7)
}}}
Ref: https://trac.ffmpeg.org/ticket/8512
What I'm trying to do: I want to decode hevc using nvidia gpu, then upload
it to vulkan, then use libplacebo to convert HDR to SDR, then return it
back to cpu mem. First step always fail (hwupload to vulkan). nvdec and
nvenc works fine if I don't try to use vulkan filter
{{{
# nvidia-smi
Thu Jan 26 16:13:33 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.85.05 Driver Version: 525.85.05 CUDA Version: 12.0
|
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr.
ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute
M. |
| | | MIG
M. |
|===============================+======================+======================|
| 0 NVIDIA T1000 8GB Off | 00000000:17:00.0 Off |
N/A |
...
Vulkan info:
Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
apiVersion = 1.3.224 (4206816)
driverVersion = 525.85.5.320 (2203402560)
vendorID = 0x10de
deviceID = 0x1ff0
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = NVIDIA T1000 8GB
pipelineCacheUUID = 5e84b6ed-4e70-35e3-ab42-c0b2fad24793
}}}
Messages from trace level:
{{{
Parsed_hwupload_0 @ 0x64a1b40] Setting 'derive_device' to value 'vulkan'
[Parsed_scale_vulkan_1 @ 0x64a1c40] Setting 'w' to value '1920'
[Parsed_scale_vulkan_1 @ 0x64a1c40] Setting 'h' to value '1440'
[graph 0 input from stream 0:0 @ 0x9f51c00] Setting 'video_size' to value
'1920x1080'
[graph 0 input from stream 0:0 @ 0x9f51c00] Setting 'pix_fmt' to value
'117'
[graph 0 input from stream 0:0 @ 0x9f51c00] Setting 'time_base' to value
'1/90000'
[graph 0 input from stream 0:0 @ 0x9f51c00] Setting 'pixel_aspect' to
value '1/1'
[graph 0 input from stream 0:0 @ 0x9f51c00] Setting 'frame_rate' to value
'60000/1001'
[graph 0 input from stream 0:0 @ 0x9f51c00] w:1920 h:1080 pixfmt:cuda
tb:1/90000 fr:60000/1001 sar:1/1
[AVHWDeviceContext @ 0x46f43c0] Calling cu->cuDeviceGetUuid((CUuuid
*)&dev_select.uuid, cu_internal->cuda_device)
[AVHWDeviceContext @ 0xb49cd40] Supported validation layers:
[AVHWDeviceContext @ 0xb49cd40] VK_LAYER_NV_optimus
[AVHWDeviceContext @ 0xb49cd40] GPU listing:
[AVHWDeviceContext @ 0xb49cd40] 0: NVIDIA T1000 8GB (discrete)
(0x1ff0)
[AVHWDeviceContext @ 0xb49cd40] 1: NVIDIA T1000 8GB (discrete)
(0x1ff0)
[AVHWDeviceContext @ 0xb49cd40] Device 0 selected: NVIDIA T1000 8GB
(discrete) (0x1ff0)
[AVHWDeviceContext @ 0xb49cd40] Queue families:
[AVHWDeviceContext @ 0xb49cd40] 0: graphics compute transfer sparse
(queues: 16)
[AVHWDeviceContext @ 0xb49cd40] 1: transfer sparse (queues: 2)
[AVHWDeviceContext @ 0xb49cd40] 2: compute transfer sparse (queues: 8)
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_KHR_push_descriptor
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_KHR_sampler_ycbcr_conversion
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_KHR_synchronization2
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_KHR_external_memory_fd
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_EXT_external_memory_dma_buf
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_EXT_image_drm_format_modifier
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_KHR_external_semaphore_fd
[AVHWDeviceContext @ 0xb49cd40] Using device extension
VK_EXT_external_memory_host
[AVHWDeviceContext @ 0xb49cd40] Using device: NVIDIA T1000 8GB
[AVHWDeviceContext @ 0xb49cd40] Alignments:
[AVHWDeviceContext @ 0xb49cd40] optimalBufferCopyRowPitchAlignment: 1
[AVHWDeviceContext @ 0xb49cd40] minMemoryMapAlignment: 64
[AVHWDeviceContext @ 0xb49cd40] minImportedHostPointerAlignment:
4096
[AVHWDeviceContext @ 0xb49cd40] Using queue family 0 (queues: 16) for
graphics
[AVHWDeviceContext @ 0xb49cd40] Using queue family 1 (queues: 2) for
transfers
[AVHWDeviceContext @ 0xb49cd40] Using queue family 2 (queues: 8) for
compute
[AVFilterGraph @ 0xaf30c80] query_formats: 4 queried, 3 merged, 0 already
done, 0 delayed
[hwupload @ 0xee8ccc0] Surface format is cuda.
[AVHWFramesContext @ 0xa720b00] There are no supported modifiers for the
given sw_format
[Parsed_hwupload_0 @ 0x64a1b40] Failed to configure output pad on
Parsed_hwupload_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Terminating demuxer thread 0
[AVHWDeviceContext @ 0x46f43c0] Calling
decoder->cudl->cuCtxPushCurrent(decoder->cuda_ctx)
[AVHWDeviceContext @ 0x46f43c0] Calling
decoder->cvdl->cuvidDestroyDecoder(decoder->decoder)
[AVHWDeviceContext @ 0x46f43c0] Calling
decoder->cudl->cuCtxPopCurrent(&dummy)
[AVHWDeviceContext @ 0x46f43c0] Calling
cu->cuCtxPushCurrent(hwctx->cuda_ctx)
[AVHWDeviceContext @ 0x46f43c0] Calling cu->cuMemFree((CUdeviceptr)data)
[AVHWDeviceContext @ 0x46f43c0] Calling cu->cuCtxPopCurrent(&dummy)
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10152>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list