daedalus-v4l2{,-dkms}: 462aa4b -> f0d4186 — per-ctx vb2 lock
Upstream PR #3 — kernel per-context vb2_queue lock so concurrent clients of /dev/video0 don't serialise on a device-wide mutex. Pi 5 Firefox VAAPI playback (RDD + content + GPU processes each opening the device) now works without S_FMT EBUSY collisions. Verified on higgs: YouTube playback engages daedalus at sustained ~230 fps decode through the libavcodec dlopen path, ~7× headroom over the 30fps@1080p Pi 5 Fourier target. Both packages: pkgver 0.1.0.r24.f0d4186, pkgrel reset to 1. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -18,9 +18,9 @@ _module=daedalus_v4l2
|
|||||||
|
|
||||||
# Same pin as arch/daedalus-v4l2 — keep kernel module + daemon
|
# Same pin as arch/daedalus-v4l2 — keep kernel module + daemon
|
||||||
# bit-versioned together so the chardev wire protocol stays in sync.
|
# bit-versioned together so the chardev wire protocol stays in sync.
|
||||||
_commit=462aa4b4804972189d2f1b1ab5782f1ca1e8c423
|
_commit=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
|
||||||
|
|
||||||
pkgver=0.1.0.r22.462aa4b
|
pkgver=0.1.0.r24.f0d4186
|
||||||
pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
||||||
pkgdesc="V4L2 stateless decoder shim kernel module (DKMS) — Pi 5 / CM5"
|
pkgdesc="V4L2 stateless decoder shim kernel module (DKMS) — Pi 5 / CM5"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ _upstreampkg=daedalus-v4l2
|
|||||||
# ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands a
|
# ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands a
|
||||||
# pixel-correct decoded frame back in ffmpeg. Promote to a later pin
|
# pixel-correct decoded frame back in ffmpeg. Promote to a later pin
|
||||||
# only after a future phase closes cleanly.
|
# only after a future phase closes cleanly.
|
||||||
_commit=462aa4b4804972189d2f1b1ab5782f1ca1e8c423
|
_commit=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
|
||||||
|
|
||||||
# 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each
|
# 0.1.0 (pre-1.0) + commit count + short sha. Bump the .Y on each
|
||||||
# Phase 8.x close. pkgver() recomputes at build time.
|
# Phase 8.x close. pkgver() recomputes at build time.
|
||||||
pkgver=0.1.0.r22.462aa4b
|
pkgver=0.1.0.r24.f0d4186
|
||||||
pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
pkgrel=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
||||||
pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)"
|
pkgdesc="Userspace daemon for the daedalus-v4l2 V4L2 stateless decoder shim (VP9/AV1/H.264 on Pi 5 / CM5)"
|
||||||
arch=('aarch64')
|
arch=('aarch64')
|
||||||
|
|||||||
+2
-2
@@ -14,8 +14,8 @@
|
|||||||
# Sibling userspace package: ../daedalus-v4l2/build-deb.sh
|
# Sibling userspace package: ../daedalus-v4l2/build-deb.sh
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
UPSTREAM_COMMIT=462aa4b4804972189d2f1b1ab5782f1ca1e8c423
|
UPSTREAM_COMMIT=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
|
||||||
PKGVER=0.1.0+r22+g462aa4b
|
PKGVER=0.1.0+r24+gf0d4186
|
||||||
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
||||||
MODULE_NAME=daedalus_v4l2
|
MODULE_NAME=daedalus_v4l2
|
||||||
|
|
||||||
|
|||||||
+10
@@ -1,3 +1,13 @@
|
|||||||
|
daedalus-v4l2-dkms (0.1.0+r24+gf0d4186-1) bookworm trixie; urgency=medium
|
||||||
|
|
||||||
|
* Bump to f0d4186 — per-ctx vb2 lock fix. daedalus_queue_init now
|
||||||
|
uses ctx->vb_mutex instead of ctx->dev->m2m_lock for each
|
||||||
|
vb2_queue's lock, unblocking Firefox's multi-process VAAPI
|
||||||
|
clients (they were colliding on the device-wide mutex and one
|
||||||
|
would EBUSY-fail S_FMT while another was mid-streamon).
|
||||||
|
|
||||||
|
-- Markus Fritsche <mfritsche@reauktion.de> Wed, 20 May 2026 23:00:00 +0000
|
||||||
|
|
||||||
daedalus-v4l2-dkms (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium
|
daedalus-v4l2-dkms (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium
|
||||||
|
|
||||||
* Bump to 462aa4b — kernel device_run() now calls
|
* Bump to 462aa4b — kernel device_run() now calls
|
||||||
|
|||||||
Vendored
+2
-2
@@ -15,8 +15,8 @@ set -euo pipefail
|
|||||||
# end-to-end via libva (consumer target hit)" — first commit where the
|
# end-to-end via libva (consumer target hit)" — first commit where the
|
||||||
# full ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands
|
# full ffmpeg -hwaccel vaapi → libva → /dev/video0 → daemon path lands
|
||||||
# a pixel-correct decoded frame back in ffmpeg.
|
# a pixel-correct decoded frame back in ffmpeg.
|
||||||
UPSTREAM_COMMIT=462aa4b4804972189d2f1b1ab5782f1ca1e8c423
|
UPSTREAM_COMMIT=f0d41867f60f5bf8dbfcc6cc16404d7d7eb90014
|
||||||
PKGVER=0.1.0+r22+g462aa4b
|
PKGVER=0.1.0+r24+gf0d4186
|
||||||
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
PKGREL=1 # reset for new upstream pin (3dd0eb0 — DAEMON-PPS H.264 SPS/PPS NAL synth)
|
||||||
|
|
||||||
HERE=$(dirname "$(readlink -f "$0")")
|
HERE=$(dirname "$(readlink -f "$0")")
|
||||||
|
|||||||
+19
@@ -1,3 +1,22 @@
|
|||||||
|
daedalus-v4l2 (0.1.0+r24+gf0d4186-1) bookworm trixie; urgency=medium
|
||||||
|
|
||||||
|
* Bump to f0d4186 — kernel per-ctx vb2 lock fix. daedalus_queue_init
|
||||||
|
was wiring src_vq->lock and dst_vq->lock to ctx->dev->m2m_lock (a
|
||||||
|
device-wide mutex), serialising every vb2 ioctl across all
|
||||||
|
concurrent clients of /dev/video0. For Firefox (which spawns
|
||||||
|
separate content + RDD + GPU processes that each open the device
|
||||||
|
and run libva probe simultaneously), one libva session's
|
||||||
|
S_FMT(OUTPUT_MPLANE) hit EBUSY while another was mid-streamon —
|
||||||
|
Firefox VAAPI playback fell apart at startup.
|
||||||
|
* Fix gives each open() its own ctx->vb_mutex; vb2 ioctls run
|
||||||
|
independently per client. Matches cedrus / rkvdec / hantro
|
||||||
|
pattern.
|
||||||
|
* Verified on higgs: Firefox YouTube playback engages VAAPI cleanly,
|
||||||
|
sustained ~230 fps decode at 640x368 through the daedalus daemon,
|
||||||
|
zero EBUSY in stderr or daemon journal.
|
||||||
|
|
||||||
|
-- Markus Fritsche <mfritsche@reauktion.de> Wed, 20 May 2026 23:00:00 +0000
|
||||||
|
|
||||||
daedalus-v4l2 (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium
|
daedalus-v4l2 (0.1.0+r22+g462aa4b-1) bookworm trixie; urgency=medium
|
||||||
|
|
||||||
* Bump to 462aa4b — kernel-side fix for control-binding gap that
|
* Bump to 462aa4b — kernel-side fix for control-binding gap that
|
||||||
|
|||||||
Reference in New Issue
Block a user