FFmpeg/libavutil
Lynne aea4d4b423
hwcontext_vulkan: rewrite upload/download
This commit was long overdue. The old transfer dubiously tried to
merge as much code as possible, and had very little in the way
of optimizations, apart from basic host-mapping.

The new code uses buffer pools for any temporary bufflers, and
handles falling back to buffer-based uploads if host-mapping fails.

Roundtrip performance difference:
ffmpeg -init_hw_device "vulkan=vk:0,debug=0,disable_multiplane=1" -f lavfi \
-i color=red:s=3840x2160 -vf hwupload,hwdownload,format=yuv420p -f null -

7900XTX:
Before: 224fps
After: 502fps

Ada, with proprietary drivers:
Before: 29fps
After: 54fps

Alder Lake:
Before: 85fps
After: 108fps

With the host-mapping codepath disabled:
Before: 32fps
After: 51fps
2024-08-11 05:13:11 +02:00
..
aarch64 aarch64: Add OpenBSD runtime detection of dotprod and i8mm using sysctl 2024-06-26 02:06:53 -04:00
arm lavu/arm: remove GCC 4.6- stuff 2024-06-13 21:16:16 +03:00
loongarch avutil/la: Add function performance testing 2023-05-25 21:05:21 +02:00
mips configure: Remove av_restrict 2024-03-15 12:51:15 +01:00
ppc avutil/ppc/cpu: Also use the machdep.altivec sysctl on NetBSD 2024-05-18 07:38:40 -04:00
riscv lavu/riscv: drop probing for zba CPU capability 2024-08-05 21:16:26 +03:00
tests lavu/riscv: drop probing for zba CPU capability 2024-08-05 21:16:26 +03:00
x86 x86/intreadwrite: add SSE2 optimized AV_COPY128U 2024-07-29 23:17:52 -03:00
.gitignore
adler32.c
adler32.h
aes.c avutil/aes: Don't use out-of-bounds index 2022-10-24 16:28:14 +02:00
aes.h avutil/aes: document some missing arguments 2022-10-17 09:56:47 +02:00
aes_ctr.c
aes_ctr.h avutil/aes_ctr: document some missing arguments 2022-10-17 09:56:47 +02:00
aes_internal.h
ambient_viewing_environment.c avutil/ambient_viewing_environment: set a sane default value for AVRational fields 2024-06-20 17:02:50 -03:00
ambient_viewing_environment.h avutil: introduce AVAmbientViewingEnvironment side data 2023-01-13 21:26:13 +02:00
attributes.h
attributes_internal.h avutil/attributes_internal: Add visibility pragma 2022-10-10 13:43:59 +02:00
audio_fifo.c avutil/audio_fifo: Constify some pointees 2023-09-12 09:20:13 +02:00
audio_fifo.h avutil/audio_fifo: Constify some pointees 2023-09-12 09:20:13 +02:00
avassert.h lavu/avassert: include config.h 2023-07-12 15:35:37 +02:00
avsscanf.c avutil/avsscanf: Remove dead code 2024-07-21 17:02:12 +02:00
avstring.c avutil/avstring: Use proper types 2024-03-10 13:51:37 +01:00
avstring.h avutil/avstring: Remove obsolete version.h inclusion 2023-09-07 00:48:50 +02:00
avutil.h avutil: remove deprecated FF_API_AV_FOPEN_UTF8 2024-03-07 08:53:30 -03:00
avutilres.rc
base64.c libavutil/base64: Try not to write over the array end 2024-05-13 03:26:57 +02:00
base64.h
blowfish.c
blowfish.h
bprint.c avutil/bprint: Allow size == 0 in av_bprint_init_for_buffer() 2023-08-10 08:53:38 +02:00
bprint.h fix "param"s that should be "@param" 2024-03-04 17:45:00 +01:00
bswap.h lavu/bswap: remove some inline assembler 2024-06-13 21:16:16 +03:00
buffer.c avutil/buffer: Check ff_mutex_init() for failure 2024-07-21 17:02:13 +02:00
buffer.h
buffer_internal.h
camellia.c
camellia.h avutil/camellia: Fix doxy @param typo 2022-10-17 09:55:19 +02:00
cast5.c avutil/cast5: Avoid undefined shift of uint32_t by 32 places 2022-11-11 12:24:23 +01:00
cast5.h
channel_layout.c channel_layout: add new channel positions supported by xHE-AAC 2024-06-02 18:34:38 +02:00
channel_layout.h channel_layout: add new channel positions supported by xHE-AAC 2024-06-02 18:34:38 +02:00
colorspace.h
common.h lavu/common.h: Fix UB in av_clip_uintp2_c() 2024-06-14 14:28:25 +02:00
cpu.c lavu/riscv: drop probing for zba CPU capability 2024-08-05 21:16:26 +03:00
cpu.h lavu/cpu: deprecate RISC-V F, D and zba CPU flags 2024-08-05 21:16:26 +03:00
cpu_internal.h
crc.c
crc.h avutil/crc: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
csp.c avutil/{color_utils, csp}: merge color_utils into csp and expose API 2023-02-09 15:35:14 +01:00
csp.h avutil/{color_utils, csp}: merge color_utils into csp and expose API 2023-02-09 15:35:14 +01:00
cuda_check.h
des.c
des.h avutil/des: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
detection_bbox.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
detection_bbox.h avutil/detection_bbox: Add doxy for missing argument 2022-10-17 09:56:47 +02:00
dict.c avutil/dict: Deduplicate freeing dictionary 2024-03-08 01:01:49 +01:00
dict.h avutil/dict: Improve documentation 2022-11-06 08:26:50 +01:00
dict_internal.h
display.c
display.h avutil/display: Add file to doxy group 2022-10-17 09:55:19 +02:00
dovi_meta.c avutil/dovi_meta: add dolby vision extension blocks 2024-04-03 16:16:25 +02:00
dovi_meta.h avutil/dovi_meta: add dv_md_compression to cfg record 2024-07-28 12:20:07 +02:00
downmix_info.c
downmix_info.h
dynarray.h
emms.h avutil/internal: Don't auto-include emms.h 2023-09-04 11:04:45 +02:00
encryption_info.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
encryption_info.h
error.c avutil/error: Add HTTP 429 Too Many Requests AVERROR code 2024-04-25 14:13:47 +01:00
error.h avutil/error: Add HTTP 429 Too Many Requests AVERROR code 2024-04-25 14:13:47 +01:00
eval.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
eval.h apply spelling fixes 2023-11-18 19:55:42 +01:00
executor.c avutil/executor: Fix stack overflow due to recursive call 2024-07-11 20:26:23 +08:00
executor.h avutil/executor: Allowing thread_count be zero 2024-06-27 20:54:42 +08:00
ffmath.h
fifo.c avutil: remove deprecated FF_API_FIFO_OLD_API 2024-03-07 08:53:30 -03:00
fifo.h avutil/fifo, file: Remove unused headers 2024-03-27 17:07:22 +01:00
file.c avutil: remove deprecated FF_API_AV_FOPEN_UTF8 2024-03-07 08:53:30 -03:00
file.h avutil/fifo, file: Remove unused headers 2024-03-27 17:07:22 +01:00
file_open.c avutil/file_open: Fix build error with wasi 2024-07-16 22:50:21 +08:00
file_open.h
film_grain_params.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
film_grain_params.h avutil/film_grain_params: add av_film_grain_params_select() 2024-03-23 18:55:15 +01:00
fixed_dsp.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
fixed_dsp.h configure: Remove av_restrict 2024-03-15 12:51:15 +01:00
float2half.c
float2half.h
float_dsp.c lavu/float_dsp: add double-precision scalar product 2024-05-31 22:22:43 +03:00
float_dsp.h avutil/float_dsp.h: fix doxy for scalarproduct_double 2024-06-01 11:15:30 -03:00
frame.c avutil/frame: use the maximum compile time supported alignment for strides 2024-08-07 00:16:21 -03:00
frame.h avutil/frame: remove comment about avcodec_get_frame_class() 2024-04-18 12:24:43 -03:00
getenv_utf8.h
half2float.c
half2float.h
hash.c avutil/hash: Avoid relocations for hash names 2024-03-18 01:48:46 +01:00
hash.h
hdr_dynamic_metadata.c avutil/hdr_dynamic_metadata: allow av_dynamic_hdr_plus_to_t35() to accept an existing buffer 2023-04-05 09:47:12 -03:00
hdr_dynamic_metadata.h fix "@param foo[in/out]" to "@param[in, out] foo" 2024-03-04 17:45:12 +01:00
hdr_dynamic_vivid_metadata.c
hdr_dynamic_vivid_metadata.h libavutil/hdr_dynamic_vivid_metadata: fix three spline params 2023-03-17 18:51:16 +08:00
hmac.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
hmac.h
hwcontext.c avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext.h avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext_cuda.c avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext_cuda.h avutil/hwcontext_cuda: add option to use current device context 2023-09-28 19:23:51 +02:00
hwcontext_cuda_internal.h
hwcontext_d3d11va.c avutil/hwcontext_d3d11va: Free AVD3D11FrameDescriptor on error 2024-07-10 18:10:09 +02:00
hwcontext_d3d11va.h
hwcontext_d3d12va.c avutil/hwcontext_d3d12va: add Flags for resource creation 2024-07-02 14:15:12 +02:00
hwcontext_d3d12va.h avutil/hwcontext_d3d12va: add Flags for resource creation 2024-07-02 14:15:12 +02:00
hwcontext_d3d12va_internal.h libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
hwcontext_drm.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
hwcontext_drm.h
hwcontext_dxva2.c avutil/hwcontext_d3d11va: correct sizeof IDirect3DSurface9 2024-07-10 18:10:09 +02:00
hwcontext_dxva2.h
hwcontext_internal.h avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext_mediacodec.c avutil/hwcontext_mediacodec: fix backward compatibility 2023-01-26 23:31:37 +08:00
hwcontext_mediacodec.h avutil/hwcontext_mediacodec: fix backward compatibility 2023-01-26 23:31:37 +08:00
hwcontext_opencl.c avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext_opencl.h
hwcontext_qsv.c lavu/hwcontext_qsv: Use vendor id to create device 2024-08-09 13:40:26 +08:00
hwcontext_qsv.h lavu/hwcontext_qsv: update AVQSVFramesContext to support dynamic frame pool 2024-05-20 09:30:48 +08:00
hwcontext_stub.c
hwcontext_vaapi.c lavu/hwcontext_vaapi: Add option to allow to specify vendor id when init hw device 2024-08-09 13:40:24 +08:00
hwcontext_vaapi.h
hwcontext_vdpau.c avutil/hwcontext: Allocate AVHWFramesCtx jointly with its internals 2024-03-07 08:53:31 -03:00
hwcontext_vdpau.h
hwcontext_videotoolbox.c avutil/hwcontext_videotoolbox: Correctly set trc 2024-08-02 10:24:09 +08:00
hwcontext_videotoolbox.h avutil/hwcontext_videotoolbox: Update documentation 2024-07-05 19:13:43 +08:00
hwcontext_vulkan.c hwcontext_vulkan: rewrite upload/download 2024-08-11 05:13:11 +02:00
hwcontext_vulkan.h hwcontext_vulkan: add a new mechanism to expose used queue families 2024-08-11 05:13:03 +02:00
iamf.c avutil/iamf: use AV_OPT_TYPE_UINT 2024-05-04 21:31:33 -03:00
iamf.h avutil/iamf: add some more doxy to structs 2024-01-15 18:16:07 -03:00
imgutils.c avutil/imgutils: av_image_check_size2() ensure width and height fit in 32bit 2024-07-12 22:16:05 +02:00
imgutils.h avutil/imgutils: add new function av_image_fill_color() 2023-12-13 18:51:32 +01:00
imgutils_internal.h avutil/internal: Move avpriv_set_systematic_pal2 decl to imgutils_internal.h 2024-03-31 00:08:43 +01:00
integer.c avutil/integer: Use '|' instead of '+' where it is more natural 2022-10-24 20:11:20 +02:00
integer.h
internal.h avutil/internal: Move avpriv_set_systematic_pal2 decl to imgutils_internal.h 2024-03-31 00:08:43 +01:00
intfloat.h
intmath.c
intmath.h lavu/intmath.h: Fix UB in ff_ctz_c() and ff_ctzll_c() 2024-06-14 14:28:25 +02:00
intreadwrite.h avutil/intreadwrite: add missing aligned read/write macros 2024-07-29 21:33:31 -03:00
lfg.c
lfg.h avutil/lfg: Minor doxy improvements 2022-10-17 09:56:47 +02:00
libavutil.v
libm.h
lls.c lavu/lls: R-V V update_lls 2024-06-01 18:05:58 +03:00
lls.h lavu/lls: R-V V update_lls 2024-06-01 18:05:58 +03:00
log.c lavu/log: do not assume AVClass.item_name is always set 2023-11-09 11:25:17 +01:00
log.h
log2_tab.c
lzo.c
lzo.h
macos_kperf.c avutil/macos_kperf: Fix assert which makes kperf failed to run 2024-06-18 15:24:12 +08:00
macos_kperf.h
macros.h
Makefile avutil/timestamp: introduce av_ts_make_time_string2 for better precision 2024-03-25 21:30:51 +01:00
mastering_display_metadata.c avutil/mastering_display_metadata: set a sane default value for AVRational fields 2024-06-20 17:02:50 -03:00
mastering_display_metadata.h avutil/mastering_display_metadata: add a new allocator function that returns a size 2024-04-11 11:46:18 -03:00
mathematics.c Move bessel_i0() from swresample/resample to avutil/mathematics 2023-05-29 00:45:28 +02:00
mathematics.h Move bessel_i0() from swresample/resample to avutil/mathematics 2023-05-29 00:45:28 +02:00
md5.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
md5.h
mem.c avutil/internal: Move FF_MEMORY_POISON to its only user 2024-03-31 00:08:43 +01:00
mem.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
mem_internal.h avutil/mem_internal: Remove unneeded headers 2024-03-01 01:35:42 +01:00
motion_vector.h
murmur3.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
murmur3.h
objc.h
opt.c avutil/opt: free the temporary layout in av_opt_is_set_to_default() 2024-05-07 20:11:42 -03:00
opt.h avutil/opt: add a note about the av_opt_{get,set}_chlayout() behavior 2024-05-07 20:11:42 -03:00
parseutils.c
parseutils.h avutil/parseutils: Use inline code and properly escape 2022-10-17 09:56:47 +02:00
pca.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
pca.h
pixdesc.c avutil/pix{desc,fmt}: add new matrix coefficients from H.273 v3 2024-04-03 21:31:35 +03:00
pixdesc.h avutil/pixdesc: add AV_PIX_FMT_FLAG_XYZ 2023-10-31 15:46:07 +01:00
pixelutils.c
pixelutils.h
pixfmt.h avutil/pix{desc,fmt}: add new matrix coefficients from H.273 v3 2024-04-03 21:31:35 +03:00
qsort.h
random_seed.c avutil/random_seed: Avoid dead returns 2024-05-28 03:48:05 +02:00
random_seed.h avutil/random_seed: include stddef.h 2023-07-05 10:25:12 -07:00
rational.c avutil/rational: increase av_d2q precision 2024-02-04 20:04:18 +01:00
rational.h avutil/rational: Document what is to be expected from av_d2q() of doubles representing rational numbers 2024-02-12 00:50:46 +01:00
rc4.c
rc4.h avutil/rc4: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
replaygain.h
reverse.c
reverse.h
ripemd.c
ripemd.h
samplefmt.c avutil/samplefmt: Constify some pointees 2023-09-12 09:17:28 +02:00
samplefmt.h avutil/samplefmt: Constify some pointees 2023-09-12 09:17:28 +02:00
sfc64.h avutil/eval: Use even better PRNG 2024-01-16 01:34:57 +01:00
sha.c
sha.h
sha512.c
sha512.h
slicethread.c avutil/slicethread: Check pthread_*_init() for failure 2024-07-21 17:02:13 +02:00
slicethread.h
softfloat.h avutil/softfloat: Basic documentation for av_sincos_sf() 2023-06-23 02:06:46 +02:00
softfloat_ieee754.h
softfloat_tables.h
spherical.c avutil/spherical: Add more spherical types 2024-06-18 14:47:40 +01:00
spherical.h avutil/spherical: Add more spherical types 2024-06-18 14:47:40 +01:00
stereo3d.c avutil/stereo3d: add a Stereo3D view to signal that the view is unspecified 2024-06-28 13:16:57 -03:00
stereo3d.h avutil/stereo3d: add a Stereo3D view to signal that the view is unspecified 2024-06-28 13:16:57 -03:00
tablegen.h
tea.c
tea.h
thread.h avutil/thread: fix pthread_setname_np parameters for NetBSD and Apple 2024-02-05 09:42:30 +01:00
threadmessage.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
threadmessage.h
time.c
time.h
time_internal.h
timecode.c avutil/timecode: Use a 64bit framenum internally 2024-07-21 15:29:25 +02:00
timecode.h libavutil/timecode: fix parameter order in documentation 2024-01-14 14:58:57 +01:00
timer.h lavu: Set default FF_TIMER_UNITS to "ns" 2024-08-05 21:16:26 +03:00
timestamp.c avutil/timestamp: avoid possible FPE when 0 is passed to av_ts_make_time_string2() 2024-06-30 09:11:44 +02:00
timestamp.h avutil/timestamp: change precision of av_ts_make_time_string() 2024-03-25 21:30:51 +01:00
tree.c
tree.h
twofish.c
twofish.h avutil/twofish: Fix doxy @param typo 2022-10-17 09:51:47 +02:00
tx.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
tx.h lavu/tx: add DCT-I and DST-I transforms 2023-09-01 23:59:10 +02:00
tx_double.c
tx_float.c
tx_int32.c
tx_priv.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
tx_template.c avutil/common: Don't auto-include mem.h 2024-03-31 00:08:43 +01:00
utils.c
uuid.c
uuid.h avutil/uuid: Remove bogus doxy return doc 2022-10-17 09:56:47 +02:00
version.c lib*/version: Use static_assert for static asserts 2024-03-31 00:08:42 +01:00
version.h hwcontext_vulkan: add a new mechanism to expose used queue families 2024-08-11 05:13:03 +02:00
version_major.h
video_enc_params.c lavu/video_enc_params: Avoid relying on an undefined C construct 2023-01-31 14:22:54 +02:00
video_enc_params.h avutil/video_enc_params: fix doxy for av_video_enc_params_block() 2023-10-30 10:30:05 -03:00
video_hint.c lavu: add video_hint API 2023-08-08 09:46:11 +02:00
video_hint.h lavu: add video_hint API 2023-08-08 09:46:11 +02:00
vulkan.c hwcontext_vulkan: rewrite upload/download 2024-08-11 05:13:11 +02:00
vulkan.h hwcontext_vulkan: initialize optical flow queues if available 2024-08-11 05:13:10 +02:00
vulkan_functions.h hwcontext_vulkan: initialize optical flow queues if available 2024-08-11 05:13:10 +02:00
vulkan_loader.h hwcontext_vulkan: initialize optical flow queues if available 2024-08-11 05:13:10 +02:00
wchar_filename.h avutil/wchar_filename: Correct sizeof 2024-07-10 18:10:10 +02:00
xga_font_data.c
xga_font_data.h
xtea.c
xtea.h