Table of Contents

fourier — multi-layer V4L2 hardware-decode unlock for mainline ARM Wayland

A patch campaign that started as a single Chromium V4L2 dispatch unlock and expanded — every time a layer was patched, the next layer's bug surfaced — into 4 sibling patch series + 1 kernel RFC + 3 upstream submission drafts that together make hardware video decode actually work on mainline-Linux Wayland on Rockchip + Mali-class ARM hardware.

Status — paused 2026-04-30

Project paused pending the GL/EGL pipeline campaign baseline. The browser-side ship-gate (1080p30 YouTube ≤ 30 % CPU, no drops) is gated on the Mali-side EGLImage import cost being addressed; running browser measurements before that lands produces known-failing results that contaminate the 8-phase loop.

Freeze-state record: Phase 5 review handover, 2026-04-30.

Live tasks that continue independently:

Re-entry condition: GL fix campaign surfaces something useful that changes the GL-consumer baseline.

Status snapshot — 2026-04-30

Series Patches State Validated where Notes
chromium-fourier 4 end-to-end smooth playback ohm bbb_1080p30_h264.mp4: ~81 % chrome CPU vs ~131 % pre-patch baseline (~3.8× reduction)
qt6-base-fourier 3 shipped + upstream-targetable ohm + fresnel pure spec-correctness GLES3 fix; zero GL_INVALID_VALUE in journal post-relogin
kwin-fourier 1 shipped (0001-skip-wait) shipped, MR 9157 closed ohm reverted to 0001 after MR review found 0002 technically wrong; goes no-op once vb2-dma-resv RFC lands
vb2-dma-resv RFC 3 sent 2026-04-29 v1 reviewed (Nicolas + Christian); v2 sketch backlogged not a NACK; attach point moves to device_run, opt-in flag added, lockdep annotated for v2
firefox-fourier 150.0.1 4 partial — gates 1+4 verified, 2+3 corrected today, rebuild pending fresnel root cause identified via MOZ_LOG: must probe by h264_v4l2request codec name first
upstream submission drafts 3 written, awaiting validation gates bugreports.qt.io, invent.kde.org MR, linux-media RFC

Sub-pages

Sources

Public

Local (gitea/marfrit-packages)


Page index created 2026-04-28 from a fourier-campaign sync. The chromium-fourier sub-page predates the end-to-end win and reflects the state on 2026-04-26; the patch_series page carries the current 4-patch shape.