Files
marfrit-packages/arch/mpv-fourier
test0r 713a856cdc
build and publish packages / distcc-avahi-aarch64 (push) Successful in 45s
build and publish packages / lmcp-any (push) Successful in 8s
build and publish packages / lmcp-debian (push) Successful in 5s
build and publish packages / claude-his-any (push) Successful in 7s
build and publish packages / ffmpeg-v4l2-request-aarch64 (push) Successful in 9m16s
build and publish packages / claude-his-debian (push) Successful in 6s
build and publish packages / libva-v4l2-request-fourier-aarch64 (push) Successful in 12s
build and publish packages / mpv-fourier-aarch64 (push) Successful in 59s
mpv-fourier: iter1 patch — explicit DMA_BUF_IOCTL_SYNC on import fds
Workaround for the dmabuf-wayland green-frames bug
(marfrit/dmabuf-modifier-triage#1). iter1 phase 2 source-read of
KWin 6.6.4 + Mesa 26.0.6 ruled out the original H1/H2 hypotheses
(panfrost offset handling and KWin wl_dmabuf import are clean) and
matched the green tone to BT.601 limited-range YUV(0,0,0) -> RGB(0,
135, 0). Conclusion: panfrost reads zero-fill memory despite hantro
having written real data — a cache-coherency / synchronization gap.

V4L2 doesn't attach implicit fences (dma_resv) to CAPTURE buffers
on VIDIOC_DQBUF; this gap is the same one our vb2_dma_resv RFC v2
addresses upstream. The userspace workaround is to issue
DMA_BUF_IOCTL_SYNC(SYNC_START|SYNC_RW) + SYNC_END(SYNC_RW) on each
EXPBUF fd before submitting to the compositor — invokes the producer
driver's begin_cpu_access / end_cpu_access path, which on most ARM
SoCs flushes write buffers and synchronizes coherent memory.

Patch covers BOTH vaapi_dmabuf_importer (the path our test exercises
via `mpv --hwdec=vaapi`) and drmprime_dmabuf_importer (for symmetry
when used via `--hwdec=drmprime`).

If this works, ship it; if it doesn't, hypothesis space narrows
further to GPU-side cache invalidation in panfrost's kernel-mode
dma_buf import path (H7).

pkgrel 8 -> 9. Patch sha256
6c929bea7636b8d81b63a1275ba1d8a471fe2f249fc23509043ace6cf9b076a7.
2026-05-08 22:03:26 +00:00
..

mpv-fourier

mpv with the fourier-umbrella patches.

Why

The dmabuf-modifier-triage campaign isolated the green-frames bug on ohm to mpv's vo_dmabuf_wayland.c plane-semantics handling for V4L2 stateless decoder dmabufs. mpv currently emits a zwp_linux_buffer_params_v1 message that mixes per-plane fds (V4L2 MPLANE export) with a single- allocation offset for plane 1, causing KWin to read the UV chroma plane past-EOF on the UV-plane fd and render solid dark green.

This package is the delivery vehicle for the fix once it's written. PKGBUILD is in place with an empty patch slot; the patch itself is iter1 of the triage campaign.

Tracker

Status

  • 2026-05-08: scaffold landed. Builds vanilla mpv 0.41.0 with no fourier patches applied (patch slot empty in prepare()). pkgrel=1 pinned to mpv release v0.41.0.

When iter1 of the triage campaign produces the patch, bump pkgrel, add the patch to source=() and sha256sums=(), uncomment the patch -p1 line in prepare().

Hosts that benefit

Only hosts that exercise the V4L2 stateless dmabuf-wayland path — ohm (RK3566 + hantro G1) today, fresnel (RK3399 + hantro + rkvdec) once that campaign reaches its mpv-test phase. Other hosts on [marfrit] (boltzmann, hertz desktop) won't see any difference as the fix is no-op for non-V4L2-stateless dmabuf paths.