ffmpeg-v4l2-request-fourier: flip libavcodec daedalus ctx no_qpu → qpu-capable (0013) #104
Reference in New Issue
Block a user
Delete Branch "claude-noether/marfrit-packages:noether/h264-ctx-qpu-capable"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Patches 0003 (IDCT 4x4) and 0007 (qpel mc20) created the libavcodec.so process-global daedalus_ctx via
daedalus_ctx_create_no_qpu(). At the time the rationale was sound: cycle 6/9 had only CPU NEON paths, so a QPU-capable ctx would have meant pointless Vulkan init in every host process.Two things changed since.
Every H.264 hot-path primitive now has a V3D7 compute shader. IDCT 4x4/8x8 + 8 deblock variants + 30 qpel positions. See daedalus-fourier PRs #28–#35.
Dispatch overhead has been hammered down — buffer pool in v3d_runner + persistent command buffer. daedalus-fourier PR #36 bench on hertz (Pi 5 V3D 7.1):
1080p worst-case sum (IDCT4 + deblock luma + qpel mc22):
PR #10's CPU-4×-faster verdict (which justified the original no_qpu ctx choice) is reversed by ~17×.
What
New patch
0013-h264-ctx-qpu-capable.patchflips both H.264 TUs (h264_idct_daedalus.c,h264_qpel_daedalus.c) fromdaedalus_ctx_create_no_qpu()todaedalus_ctx_create().daedalus_ctx_create()probes for Vulkan and falls back to no_qpu if unavailable, so safe on hosts without V3D (x86 build runners, etc.). Hosts WITH V3D get the speedup.Wired into both arch PKGBUILD and debian build-deb.sh; both pkgrel bumped 10 → 11.
Notes
The daedalus-fourier pin in PKGBUILD currently points at
b9f9ff2(PR #25 — chroma DC Hadamard public symbol). The bench-measured speedup was at daedalus-fourier head post-#35. Bumping the pin is a follow-up; the ctx flip alone already gets the QPU path engaged for whatever shaders are present at the pinned commit.Refs reauktion/daedalus-fourier!36.
6047c04f7fto9c70ffffe7Rebased onto current
main. PR #102 (0013-h264-deblock-chroma-intra) merged while this PR was open, so the patch is renumbered 0013 → 0014. No content change beyond the filename and the corresponding'0014-...'entries in PKGBUILDsource[]/prepare()andbuild-deb.sh. Mergeable now.