Commit d33a47dbdb for ffmpeg

commit d33a47dbdbba6521ebc5150502a281e9f137b049
Author: Niklas Haas <git@haasn.dev>
Date:   Wed Oct 28 15:19:19 2026 +0100

    avfilter/vf_libplacebo: split libplacebo_setup_gpu() out of init_vulkan()

    Separates creating the Vulkan device from the filter-specific setup that
    depends on it, so the former can be shared with other filters in this file.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
    Sponsored-by: nxtedition AB
    Signed-off-by: Niklas Haas <git@haasn.dev>

diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c
index 4bc09d2184..bb1da66ecc 100644
--- a/libavfilter/vf_libplacebo.c
+++ b/libavfilter/vf_libplacebo.c
@@ -509,6 +509,7 @@ static int parse_shader(AVFilterContext *avctx, const void *shader, size_t len)
 static void libplacebo_uninit(AVFilterContext *avctx);
 static int libplacebo_config_input(AVFilterLink *inlink);
 static int init_vulkan(AVFilterContext *avctx, const AVVulkanDeviceContext *hwctx);
+static int libplacebo_setup_gpu(AVFilterContext *avctx);

 /* Creates the log, shader cache and output format shared by all filters */
 static int init_common(AVFilterContext *avctx)
@@ -614,6 +615,7 @@ static int libplacebo_init(AVFilterContext *avctx)
                 vkhwctx = avhwctx->hwctx;
         }
         RET(init_vulkan(avctx, vkhwctx));
+        RET(libplacebo_setup_gpu(avctx));
     }

     return 0;
@@ -684,8 +686,6 @@ static int init_vulkan(AVFilterContext *avctx, const AVVulkanDeviceContext *hwct
 {
     int err = 0;
     LibplaceboContext *s = avctx->priv;
-    uint8_t *buf = NULL;
-    size_t buf_len;

     if (hwctx) {
         struct pl_vulkan_import_params import_params = {
@@ -733,6 +733,18 @@ static int init_vulkan(AVFilterContext *avctx, const AVVulkanDeviceContext *hwct

     s->gpu = s->vulkan->gpu;
     pl_gpu_set_cache(s->gpu, s->cache);
+    return 0;
+
+fail:
+    return err;
+}
+
+static int libplacebo_setup_gpu(AVFilterContext *avctx)
+{
+    int err = 0;
+    LibplaceboContext *s = avctx->priv;
+    uint8_t *buf = NULL;
+    size_t buf_len;

     /* Parse the user shaders, if requested */
     if (s->shader_bin_len)
@@ -1423,6 +1435,8 @@ static int libplacebo_config_input(AVFilterLink *inlink)
             return AVERROR(ENOMEM);
         if ((err = init_vulkan(avctx, hwfc->device_ctx->hwctx)) < 0)
             return err;
+        if ((err = libplacebo_setup_gpu(avctx)) < 0)
+            return err;
     }

     if (inlink->format == AV_PIX_FMT_VULKAN)