From 9f6c24060b330dd4decff546662837f4b8fa140b Mon Sep 17 00:00:00 2001 From: neatnoise Date: Wed, 29 Apr 2026 15:21:16 +0200 Subject: [PATCH] ffmpeg: fix vulkan encode feedback flags check order The feedback flags check added in FFmpeg 735c84b57f reads enc_caps.supportedEncodeFeedbackFlags before GetPhysicalDeviceVideoCapabilitiesKHR populates the struct, so the flags are always zero and the check always fails with 'Driver does not support required encode feedback flags'. Move the check to after the capabilities query. --- ...ix-encode-feedback-flags-check-order.patch | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 patches/FFmpeg/FFmpeg/vulkan/02-fix-encode-feedback-flags-check-order.patch diff --git a/patches/FFmpeg/FFmpeg/vulkan/02-fix-encode-feedback-flags-check-order.patch b/patches/FFmpeg/FFmpeg/vulkan/02-fix-encode-feedback-flags-check-order.patch new file mode 100644 index 00000000..bed8c6a9 --- /dev/null +++ b/patches/FFmpeg/FFmpeg/vulkan/02-fix-encode-feedback-flags-check-order.patch @@ -0,0 +1,41 @@ +Fix encode feedback flags check running before capabilities are queried + +The feedback flags check added in 735c84b57f was placed before +GetPhysicalDeviceVideoCapabilitiesKHR populates enc_caps, so +supportedEncodeFeedbackFlags is always zero and the check always fails. + +Move the check to after the capabilities query where enc_caps is valid. + +diff --git a/libavcodec/vulkan_encode.c b/libavcodec/vulkan_encode.c +--- a/libavcodec/vulkan_encode.c ++++ b/libavcodec/vulkan_encode.c +@@ -773,14 +773,6 @@ + return AVERROR(EINVAL); + } + +- if ((ctx->enc_caps.supportedEncodeFeedbackFlags & feedback_flags) != +- feedback_flags) { +- av_log (avctx, AV_LOG_ERROR, +- "Driver does not support required encode feedback flags " +- "(BUFFER_OFFSET and BYTES_WRITTEN).\n"); +- return AVERROR(ENOTSUP); +- } +- + ctx->base.op = &vulkan_base_encode_ops; + ctx->codec = codec; + +@@ -880,6 +872,14 @@ + return AVERROR_EXTERNAL; + } + ++ if ((ctx->enc_caps.supportedEncodeFeedbackFlags & feedback_flags) != ++ feedback_flags) { ++ av_log (avctx, AV_LOG_ERROR, ++ "Driver does not support required encode feedback flags " ++ "(BUFFER_OFFSET and BYTES_WRITTEN).\n"); ++ return AVERROR(ENOTSUP); ++ } ++ + err = init_rc(avctx, ctx); + if (err < 0) + return err;