Files
FFmpeg/libavcodec/vulkan/Makefile
Lynne d040f5d985 ffv1enc_vulkan: gather slices on the GPU, drop the transfer copy
Uses the gather shader from the APV encoder to copy the packet data on
the GPU with a second pass.

Replace all of that with a seg_gather compute dispatch in the
same submission as the encode. It packs the per-slice slots tight and in
order into a contiguous host-visible buffer, so the final packet is just
the sum of the per-slice sizes and the gathered buffer is handed straight
to pkt->buf with no extra submit, no copy, no CPU involvement.

The slots are sized with the version-4 worst-case formula (the realistic
lossless bound, ~17x tighter than the version-3 budget this encoder never
approaches; the emitted bitstream version is unchanged) and rounded down
to a 16-byte multiple so the gather reads them with aligned wide loads.

Removes the transfer queue family, its exec pool, and the buf_regions
scratch array.
2026-07-02 16:45:08 +09:00

53 lines
3.1 KiB
Makefile

clean::
$(RM) $(CLEANSUFFIXES:%=libavcodec/vulkan/%)
OBJS-$(CONFIG_APV_VULKAN_HWACCEL) += vulkan/apv_decode.comp.spv.o \
vulkan/apv_idct.comp.spv.o
OBJS-$(CONFIG_APV_VULKAN_ENCODER) += vulkan/apv_encode_dct.comp.spv.o \
vulkan/apv_encode_tiles.comp.spv.o \
vulkan/seg_gather.comp.spv.o
OBJS-$(CONFIG_FFV1_VULKAN_ENCODER) += vulkan/ffv1_enc_setup.comp.spv.o \
vulkan/ffv1_enc_reset.comp.spv.o \
vulkan/ffv1_enc_reset_golomb.comp.spv.o \
vulkan/ffv1_enc.comp.spv.o \
vulkan/ffv1_enc_golomb.comp.spv.o \
vulkan/ffv1_enc_rgb.comp.spv.o \
vulkan/ffv1_enc_rgb_golomb.comp.spv.o \
vulkan/ffv1_enc_rct_search.comp.spv.o \
vulkan/ffv1_enc_remap.comp.spv.o \
vulkan/ffv1_enc_rgb_float.comp.spv.o \
vulkan/ffv1_enc_rgb_float_golomb.comp.spv.o \
vulkan/ffv1_enc_sort32.comp.spv.o \
vulkan/ffv1_enc_bayer.comp.spv.o \
vulkan/ffv1_enc_bayer_golomb.comp.spv.o \
vulkan/seg_gather.comp.spv.o
OBJS-$(CONFIG_FFV1_VULKAN_HWACCEL) += vulkan/ffv1_dec_setup.comp.spv.o \
vulkan/ffv1_dec_reset.comp.spv.o \
vulkan/ffv1_dec_reset_golomb.comp.spv.o \
vulkan/ffv1_dec.comp.spv.o \
vulkan/ffv1_dec_golomb.comp.spv.o \
vulkan/ffv1_dec_rgb.comp.spv.o \
vulkan/ffv1_dec_rgb_golomb.comp.spv.o \
vulkan/ffv1_dec_rgb_float.comp.spv.o \
vulkan/ffv1_dec_rgb_float_golomb.comp.spv.o \
vulkan/ffv1_dec_bayer.comp.spv.o \
vulkan/ffv1_dec_bayer_golomb.comp.spv.o
OBJS-$(CONFIG_PRORES_KS_VULKAN_ENCODER) += vulkan/prores_ks_alpha_data.comp.spv.o \
vulkan/prores_ks_slice_data.comp.spv.o \
vulkan/prores_ks_estimate_slice.comp.spv.o \
vulkan/prores_ks_encode_slice.comp.spv.o \
vulkan/prores_ks_trellis_node.comp.spv.o
OBJS-$(CONFIG_PRORES_RAW_VULKAN_HWACCEL) += vulkan/prores_raw_decode.comp.spv.o \
vulkan/prores_raw_idct.comp.spv.o
OBJS-$(CONFIG_PRORES_VULKAN_HWACCEL) += vulkan/prores_vld.comp.spv.o \
vulkan/prores_idct.comp.spv.o
OBJS-$(CONFIG_DPX_VULKAN_HWACCEL) += vulkan/dpx_unpack.comp.spv.o \
vulkan/dpx_copy.comp.spv.o