This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit bdd454504f06f482e3837bd5918fcccff63ca0fa Author: Niklas Haas <[email protected]> AuthorDate: Wed Oct 28 15:20:00 2026 +0100 Commit: Niklas Haas <[email protected]> CommitDate: Sat Oct 31 13:37:58 2026 +0100 avfilter/vf_libplacebo: make the GPU setup idempotent So config_input() can simply set up the GPU for every input, rather than tracking whether the device still needs to be inherited. Co-Authored-By: Claude Opus 5.5 <[email protected]> Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]> --- libavfilter/vf_libplacebo.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c index 817a5be568..e4ad39fb23 100644 --- a/libavfilter/vf_libplacebo.c +++ b/libavfilter/vf_libplacebo.c @@ -697,11 +697,15 @@ static int copy_pl_queue(const AVVulkanDeviceContext *hwctx, return 0; } +/* Creates or imports the Vulkan device, unless already done */ static int init_vulkan(AVFilterContext *avctx, const AVVulkanDeviceContext *hwctx) { int err = 0; LibplaceboContext *s = avctx->priv; + if (s->gpu) + return 0; + if (hwctx) { struct pl_vulkan_import_params import_params = { .instance = hwctx->inst, @@ -754,6 +758,7 @@ fail: return err; } +/* Sets up the state depending on the GPU, unless already done */ static int libplacebo_setup_gpu(AVFilterContext *avctx) { int err = 0; @@ -761,6 +766,9 @@ static int libplacebo_setup_gpu(AVFilterContext *avctx) uint8_t *buf = NULL; size_t buf_len; + if (s->inputs) + return 0; + /* Parse the user shaders, if requested */ if (s->shader_bin_len) RET(parse_shader(avctx, s->shader_bin, s->shader_bin_len)); @@ -1417,14 +1425,19 @@ fail: return err; } -/* Adopt the Vulkan device of the input's hardware frames. query_formats - * advertised Vulkan only, so a non-Vulkan input here is a configuration error. */ +/* Adopt the Vulkan device of the input's hardware frames, unless a device was + * already set up. query_formats advertised Vulkan only, so a non-Vulkan input + * here is a configuration error. */ static int inherit_device(AVFilterLink *inlink) { AVFilterContext *avctx = inlink->dst; + LibplaceboContext *s = avctx->priv; FilterLink *l = ff_filter_link(inlink); AVHWFramesContext *hwfc; + if (s->gpu) + return 0; + if (inlink->format != AV_PIX_FMT_VULKAN || !l->hw_frames_ctx) { av_log(avctx, AV_LOG_ERROR, "inherit_device requires a Vulkan " "hardware frames context on the input.\n"); @@ -1465,15 +1478,10 @@ static int libplacebo_config_input(AVFilterLink *inlink) inlink->sample_aspect_ratio = av_inv_q(inlink->sample_aspect_ratio); } - /* Deferred Vulkan setup (inherit_device): the device was not created at - * init; adopt the one the input frames live on. */ - if (!s->gpu) { - av_assert0(s->inherit_device); + if (s->inherit_device) RET(inherit_device(inlink)); - RET(init_vulkan(avctx, choose_default_device(avctx))); - RET(libplacebo_setup_gpu(avctx)); - } - + RET(init_vulkan(avctx, choose_default_device(avctx))); + RET(libplacebo_setup_gpu(avctx)); return config_input_vulkan(inlink); fail: -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
