PR #25638 opened by Kilian (lusoris)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25638
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25638.patch

Fixes link failures when individual Vulkan filters are built in isolation.

## Problem

Seven of the 19 Vulkan filters in `allfilters.c` fail to link when configured 
alone with `--disable-everything --enable-vulkan --enable-filter=<name>`, 
because their `OBJS` lines reference objects that are only pulled in by another 
filter:

- `blackdetect_vulkan`, `scdet_vulkan`, `v360_vulkan`: missing `vulkan.o` and 
`vulkan_filter.o`
- `hflip_vulkan`, `vflip_vulkan`: missing `vulkan_filter.o` and the flip shader 
object
- `flip_vulkan`: no `OBJS` line at all
- `scale_vulkan`: missing `scale_eval.o`

## Fix

- Add the missing objects to the `OBJS` lines in `libavfilter/Makefile` for the 
six filters above, and add the previously absent `OBJS` line for `flip_vulkan`.
- Add the flip shader object (`vulkan/flip.comp.spv.o`) to the `OBJS` lines for 
`hflip_vulkan` and `vflip_vulkan` in `libavfilter/vulkan/Makefile`.

Repeating `vulkan.o` or `vulkan_filter.o` across multiple `OBJS` lines is 
harmless because `ffbuild/common.mak` deduplicates via `$(sort)`.

## Testing

Each of the 19 Vulkan filters in `allfilters.c` was configured alone with 
`--disable-everything --enable-vulkan --enable-filter=<name>` and built with 
`make ffmpeg`. On master `df2926615e` seven fail to link; with this patch all 
19 link.

A default configure with `--enable-vulkan` (all 19 Vulkan filters enabled) 
still builds `ffmpeg`, and `make fate-source` passes.

Reproducer:

```
./configure --disable-everything --enable-vulkan --enable-filter=scdet_vulkan 
&& make ffmpeg
```




>From 3e613233a643e1537db58144f970b48eb1c03a79 Mon Sep 17 00:00:00 2001
From: lusoris <[email protected]>
Date: Sat, 31 Oct 2026 09:48:53 +0100
Subject: [PATCH] avfilter/Makefile: add missing objects for standalone Vulkan
 filters

Seven Vulkan filters fail to link when built on their own
(--disable-everything --enable-vulkan --enable-filter=<name>), because
their OBJS lines rely on objects that only another filter pulls in:

- blackdetect_vulkan, scdet_vulkan, v360_vulkan: vulkan.o and
  vulkan_filter.o
- hflip_vulkan, vflip_vulkan: vulkan_filter.o and the flip shader
- flip_vulkan: no OBJS line at all
- scale_vulkan: scale_eval.o

Add the missing objects. Each of the 19 Vulkan filters now links when
it is the only filter enabled.

Signed-off-by: lusoris <[email protected]>
---
 libavfilter/Makefile        | 13 +++++++------
 libavfilter/vulkan/Makefile |  2 ++
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index e00652e4562..6da2d35c174 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -210,7 +210,7 @@ OBJS-$(CONFIG_BILATERAL_CUDA_FILTER)         += 
vf_bilateral_cuda.o vf_bilateral
                                                 cuda/load_helper.o
 OBJS-$(CONFIG_BITPLANENOISE_FILTER)          += vf_bitplanenoise.o
 OBJS-$(CONFIG_BLACKDETECT_FILTER)            += vf_blackdetect.o
-OBJS-$(CONFIG_BLACKDETECT_VULKAN_FILTER)     += vf_blackdetect_vulkan.o
+OBJS-$(CONFIG_BLACKDETECT_VULKAN_FILTER)     += vf_blackdetect_vulkan.o 
vulkan.o vulkan_filter.o
 OBJS-$(CONFIG_BLACKFRAME_FILTER)             += vf_blackframe.o
 OBJS-$(CONFIG_BLEND_FILTER)                  += vf_blend.o framesync.o
 OBJS-$(CONFIG_BLEND_VULKAN_FILTER)           += vf_blend_vulkan.o framesync.o 
vulkan.o vulkan_filter.o
@@ -322,6 +322,7 @@ OBJS-$(CONFIG_FIELDMATCH_FILTER)             += 
vf_fieldmatch.o
 OBJS-$(CONFIG_FIELDORDER_FILTER)             += vf_fieldorder.o
 OBJS-$(CONFIG_FILLBORDERS_FILTER)            += vf_fillborders.o
 OBJS-$(CONFIG_FIND_RECT_FILTER)              += vf_find_rect.o lavfutils.o
+OBJS-$(CONFIG_FLIP_VULKAN_FILTER)            += vf_flip_vulkan.o vulkan.o 
vulkan_filter.o
 OBJS-$(CONFIG_FLOODFILL_FILTER)              += vf_floodfill.o
 OBJS-$(CONFIG_FORMAT_FILTER)                 += vf_format.o
 OBJS-$(CONFIG_FPS_FILTER)                    += vf_fps.o
@@ -345,7 +346,7 @@ OBJS-$(CONFIG_GREYEDGE_FILTER)               += 
vf_colorconstancy.o
 OBJS-$(CONFIG_GUIDED_FILTER)                 += vf_guided.o framesync.o
 OBJS-$(CONFIG_HALDCLUT_FILTER)               += vf_lut3d.o framesync.o
 OBJS-$(CONFIG_HFLIP_FILTER)                  += vf_hflip.o
-OBJS-$(CONFIG_HFLIP_VULKAN_FILTER)           += vf_flip_vulkan.o vulkan.o
+OBJS-$(CONFIG_HFLIP_VULKAN_FILTER)           += vf_flip_vulkan.o vulkan.o 
vulkan_filter.o
 OBJS-$(CONFIG_HISTEQ_FILTER)                 += vf_histeq.o
 OBJS-$(CONFIG_HISTOGRAM_FILTER)              += vf_histogram.o
 OBJS-$(CONFIG_HQDN3D_FILTER)                 += vf_hqdn3d.o
@@ -482,10 +483,10 @@ OBJS-$(CONFIG_SCALE_CUDA_FILTER)             += 
vf_scale_cuda.o scale_eval.o sca
 OBJS-$(CONFIG_SCALE_QSV_FILTER)              += vf_vpp_qsv.o
 OBJS-$(CONFIG_SCALE_VAAPI_FILTER)            += vf_scale_vaapi.o scale_eval.o 
vaapi_vpp.o
 OBJS-$(CONFIG_SCALE_VT_FILTER)               += vf_scale_vt.o scale_eval.o
-OBJS-$(CONFIG_SCALE_VULKAN_FILTER)           += vf_scale_vulkan.o vulkan.o 
vulkan_filter.o
+OBJS-$(CONFIG_SCALE_VULKAN_FILTER)           += vf_scale_vulkan.o scale_eval.o 
vulkan.o vulkan_filter.o
 OBJS-$(CONFIG_SCALE2REF_FILTER)              += vf_scale.o scale_eval.o 
framesync.o
 OBJS-$(CONFIG_SCDET_FILTER)                  += vf_scdet.o
-OBJS-$(CONFIG_SCDET_VULKAN_FILTER)           += vf_scdet_vulkan.o
+OBJS-$(CONFIG_SCDET_VULKAN_FILTER)           += vf_scdet_vulkan.o vulkan.o 
vulkan_filter.o
 OBJS-$(CONFIG_SCHARR_FILTER)                 += vf_convolution.o
 OBJS-$(CONFIG_SCROLL_FILTER)                 += vf_scroll.o
 OBJS-$(CONFIG_SEGMENT_FILTER)                += f_segment.o
@@ -561,12 +562,12 @@ OBJS-$(CONFIG_UNSHARP_OPENCL_FILTER)         += 
vf_unsharp_opencl.o opencl.o \
 OBJS-$(CONFIG_UNTILE_FILTER)                 += vf_untile.o
 OBJS-$(CONFIG_USPP_FILTER)                   += vf_uspp.o qp_table.o
 OBJS-$(CONFIG_V360_FILTER)                   += vf_v360.o
-OBJS-$(CONFIG_V360_VULKAN_FILTER)            += vf_v360_vulkan.o framesync.o
+OBJS-$(CONFIG_V360_VULKAN_FILTER)            += vf_v360_vulkan.o framesync.o 
vulkan.o vulkan_filter.o
 OBJS-$(CONFIG_VAGUEDENOISER_FILTER)          += vf_vaguedenoiser.o
 OBJS-$(CONFIG_VARBLUR_FILTER)                += vf_varblur.o framesync.o
 OBJS-$(CONFIG_VECTORSCOPE_FILTER)            += vf_vectorscope.o
 OBJS-$(CONFIG_VFLIP_FILTER)                  += vf_vflip.o
-OBJS-$(CONFIG_VFLIP_VULKAN_FILTER)           += vf_flip_vulkan.o vulkan.o
+OBJS-$(CONFIG_VFLIP_VULKAN_FILTER)           += vf_flip_vulkan.o vulkan.o 
vulkan_filter.o
 OBJS-$(CONFIG_VFRDET_FILTER)                 += vf_vfrdet.o
 OBJS-$(CONFIG_VIBRANCE_FILTER)               += vf_vibrance.o
 OBJS-$(CONFIG_VIDSTABDETECT_FILTER)          += vidstabutils.o 
vf_vidstabdetect.o
diff --git a/libavfilter/vulkan/Makefile b/libavfilter/vulkan/Makefile
index 55de033d6bb..d22bedb223e 100644
--- a/libavfilter/vulkan/Makefile
+++ b/libavfilter/vulkan/Makefile
@@ -13,6 +13,8 @@ OBJS-$(CONFIG_SCALE_VULKAN_FILTER) += vulkan/scale.comp.spv.o 
\
 OBJS-$(CONFIG_SCDET_VULKAN_FILTER) += vulkan/scdet.comp.spv.o
 OBJS-$(CONFIG_OVERLAY_VULKAN_FILTER) += vulkan/overlay.comp.spv.o
 OBJS-$(CONFIG_FLIP_VULKAN_FILTER) += vulkan/flip.comp.spv.o
+OBJS-$(CONFIG_HFLIP_VULKAN_FILTER) += vulkan/flip.comp.spv.o
+OBJS-$(CONFIG_VFLIP_VULKAN_FILTER) += vulkan/flip.comp.spv.o
 OBJS-$(CONFIG_FRUC_VULKAN_FILTER) += vulkan/fruc_grayscale.comp.spv.o \
                                      vulkan/fruc_interpolate.comp.spv.o
 OBJS-$(CONFIG_TRANSPOSE_VULKAN_FILTER) += vulkan/transpose.comp.spv.o
-- 
2.54.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to