[FFmpeg-trac] #8962(undetermined:new): Vulkan filters crash
FFmpeg
trac at avcodec.org
Wed Nov 4 17:51:56 EET 2020
#8962: Vulkan filters crash
-------------------------------------+-------------------------------------
Reporter: | Type: defect
paulpacifico |
Status: new | Priority: normal
Component: | Version: git-
undetermined | master
Keywords: vulkan | Blocked By:
crash |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Hello ffmpeg team,
I tried everything to get vulkan filters works but it just always crash...
'''ffmpeg version N-99827-g700c0cef20'''
''Here is my command:''
{{{
ffmpeg- loglevel debug -init_hw_device vulkan=vk -filter_hw_device vk -f
lavfi -i testsrc2 -vf hwupload,avgblur_vulkan -f null -
}}}
''And the debug log:''
{{{
ffmpeg version N-99827-g700c0cef20 Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
configuration: --disable-static --enable-shared --cc='ccache gcc'
--cxx='ccache g++' --disable-autodetect --disable-debug --disable-
w32threads --enable-sdl2 --enable-gpl --enable-version3 --enable-
fontconfig --enable-iconv --enable-libass --enable-libdav1d --enable-
libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine
--enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame
--enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265
--enable-libzimg --enable-lzma --enable-zlib --enable-libvidstab --enable-
libvorbis --enable-libvo-amrwbenc --enable-libspeex --enable-libxvid
--enable-libgsm --enable-libsvtav1 --enable-libmfx --enable-ffnvcodec
--enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc
--enable-nvdec --enable-dxva2 --enable-libopenmpt --enable-amf --enable-
opencl --enable-vulkan --enable-libglslang --enable-schannel --extra-
cflags=-DLIBTWOLAME_STATIC --extra-libs=-lstdc++ --extra-libs=-liconv
--shlibdir=/local64/bin-video
libavutil 56. 60.100 / 56. 60.100
libavcodec 58.112.101 / 58.112.101
libavformat 58. 64.100 / 58. 64.100
libavdevice 58. 11.102 / 58. 11.102
libavfilter 7. 88.100 / 7. 88.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
libpostproc 55. 8.100 / 55. 8.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device'
(initialise hardware device) with argument 'vulkan=vk'.
Reading option '-filter_hw_device' ... matched as option
'filter_hw_device' (set hardware device used when filtering) with argument
'vk'.
Reading option '-f' ... matched as option 'f' (force format) with argument
'lavfi'.
Reading option '-i' ... matched as input url with argument 'testsrc2'.
Reading option '-vf' ... matched as option 'vf' (set video filters) with
argument 'hwupload,avgblur_vulkan'.
Reading option '-f' ... matched as option 'f' (force format) with argument
'null'.
Reading option '-' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument
vulkan=vk.
[AVHWDeviceContext @ 0000026d757a8cc0] GPU listing:
[AVHWDeviceContext @ 0000026d757a8cc0] 0: Unknown AMD GPU (discrete)
(0x6601)
[AVHWDeviceContext @ 0000026d757a8cc0] Using queue family 0 (total queues:
1) for graphics
[AVHWDeviceContext @ 0000026d757a8cc0] QF 0 flags: (graphics)
(compute) (transfers) (sparse)
[AVHWDeviceContext @ 0000026d757a8cc0] Using queue family 1 (total queues:
2) for compute
[AVHWDeviceContext @ 0000026d757a8cc0] QF 1 flags: (compute)
(transfers) (sparse)
[AVHWDeviceContext @ 0000026d757a8cc0] Using queue family 2 (total queues:
2) for transfers
[AVHWDeviceContext @ 0000026d757a8cc0] QF 2 flags: (transfers)
(sparse)
[AVHWDeviceContext @ 0000026d757a8cc0] Using device extension
"VK_EXT_external_memory_host"
[AVHWDeviceContext @ 0000026d757a8cc0] Using device extension
VK_EXT_external_memory_host
[AVHWDeviceContext @ 0000026d757a8cc0] Using device: Unknown AMD GPU
[AVHWDeviceContext @ 0000026d757a8cc0] Alignments:
[AVHWDeviceContext @ 0000026d757a8cc0]
optimalBufferCopyRowPitchAlignment: 1
[AVHWDeviceContext @ 0000026d757a8cc0] minMemoryMapAlignment:
64
[AVHWDeviceContext @ 0000026d757a8cc0]
minImportedHostPointerAlignment: 4096
Applying option filter_hw_device (set hardware device used when filtering)
with argument vk.
Successfully parsed a group of options.
Parsing a group of options: input url testsrc2.
Applying option f (force format) with argument lavfi.
Successfully parsed a group of options.
Opening an input file: testsrc2.
detected 4 logical cores
[Parsed_testsrc2_0 @ 0000026d757aeec0] size:320x240 rate:25/1
duration:-1.000000 sar:1/1
[AVFilterGraph @ 0000026d77146dc0] query_formats: 2 queried, 1 merged, 0
already done, 0 delayed
[lavfi @ 0000026d771a4480] All info found
Input #0, lavfi, from 'testsrc2':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0, 1, 1/25: Video: rawvideo, 1 reference frame (I420 /
0x30323449), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 0/1, 25 tbr, 25 tbn, 25
tbc
Successfully opened the file.
Parsing a group of options: output url -.
Applying option vf (set video filters) with argument
hwupload,avgblur_vulkan.
Applying option f (force format) with argument null.
Successfully parsed a group of options.
Opening an output file: -.
Successfully opened the file.
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
[rawvideo @ 0000026d756d7600] PACKET SIZE: 115200, STRIDE: 480
[graph 0 input from stream 0:0 @ 0000026d771c3b00] Setting 'video_size' to
value '320x240'
[graph 0 input from stream 0:0 @ 0000026d771c3b00] Setting 'pix_fmt' to
value '0'
[graph 0 input from stream 0:0 @ 0000026d771c3b00] Setting 'time_base' to
value '1/25'
[graph 0 input from stream 0:0 @ 0000026d771c3b00] Setting 'pixel_aspect'
to value '1/1'
[graph 0 input from stream 0:0 @ 0000026d771c3b00] Setting 'frame_rate' to
value '25/1'
[graph 0 input from stream 0:0 @ 0000026d771c3b00] w:320 h:240
pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1
[AVFilterGraph @ 0000026d756d5700] query_formats: 4 queried, 3 merged, 0
already done, 0 delayed
[hwupload @ 0000026d756d54c0] Surface format is yuv420p.
[Parsed_avgblur_vulkan_1 @ 0000026d771c3700] Shader avgblur_compute_hor:
1 #version 460
2 #define IS_WITHIN(v1, v2) ((v1.x < v2.x) && (v1.y < v2.y))
3
4 layout (local_size_x = 32, local_size_y = 1, local_size_z = 1) in;
5
6 layout (set = 0, binding = 0) uniform sampler2D input_img[3];
7 layout (set = 0, binding = 1, rgba8) uniform writeonly image2D
output_img[3];
8
9 #define FILTER_RADIUS (2)
10 #define INC(x) (ivec2(x, 0))
11 #define DIR(var) (var.x)
12
13 shared vec4 cache[DIR(gl_WorkGroupSize) + FILTER_RADIUS*2 + 1];
14
15 void distort(const ivec2 pos, const int idx)
16 {
17 const uint cp = DIR(gl_LocalInvocationID) + FILTER_RADIUS;
18
19 cache[cp] = texture(input_img[idx], pos);
20
21 const ivec2 loc_l = pos - INC(FILTER_RADIUS);
22 cache[cp - FILTER_RADIUS] = texture(input_img[idx], loc_l);
23
24 const ivec2 loc_h = pos + INC(DIR(gl_WorkGroupSize));
25 cache[cp + DIR(gl_WorkGroupSize)] = texture(input_img[idx],
loc_h);
26
27 barrier();
28
29 vec4 sum = vec4(0);
30 for (int p = -FILTER_RADIUS; p <= FILTER_RADIUS; p++)
31 sum += cache[cp + p];
32
33 sum /= vec4(FILTER_RADIUS*2 + 1);
34 imageStore(output_img[idx], pos, sum);
35 }
36
37 void main()
38 {
39 ivec2 size;
40 const ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
41
42 size = imageSize(output_img[0]);
43 if (IS_WITHIN(pos, size)) {
44 distort(pos, 0);
45 }
46
47 size = imageSize(output_img[1]);
48 if (IS_WITHIN(pos, size)) {
49 distort(pos, 1);
50 }
51
52 size = imageSize(output_img[2]);
53 if (IS_WITHIN(pos, size)) {
54 distort(pos, 2);
55 }
56 }
[Parsed_avgblur_vulkan_1 @ 0000026d771c3700] Shader avgblur_compute_hor
linked! Size: 4340 bytes
}}}
'''Then crash...'''
I know my vulkan GPU shows "Unknown" but i get the same crash on any
computer (AMD or Nvidia on Windows plateform).
Thanks for all.
Paul.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8962>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list