====== 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. * Public face: [[https://github.com/marfrit/fourier|github.com/marfrit/fourier]] — sibling subdirs ''chromium-fourier/'', ''qt6-base-fourier/'', ''kwin-fourier/'', ''docs/'', ''tools/'' * Local Arch packaging + investigation notes: [[https://git.reauktion.de/marfrit/marfrit-packages|gitea/marfrit-packages]] under ''arch/{chromium,qt6-base,kwin,firefox}-fourier/'', ''kernel/vb2-dma-resv-rfc/'', ''upstream-submissions/'' * Reference target: **ohm** (PineTab2 / RK3566 / Mali-G52 / panfrost / mainline 6.19.10 / KDE Plasma 6.6.4 Wayland) ===== 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: [[fourier:phase5_2026-04-30|Phase 5 review handover, 2026-04-30]]. Live tasks that continue independently: * **chromium-fourier build** — finish the build + publish; package ships, measurement deferred. * **vb2 dma_resv RFC v2** — kernel-side, separate cadence. 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 ===== * [[fourier:chromium_fourier|chromium-fourier — what we get + the rug-pull on Brave]] (2026-04-26 capture; predates the 4-patch end-to-end win) * [[fourier:patch_series|Patch series — the four sibling series in detail]] * [[fourier:vb2_dma_resv_rfc|vb2-dma-resv kernel RFC — the architectural correction]] * [[fourier:hosts|Per-host status — ohm / fresnel / boltzmann / CT220 / ampere]] * [[fourier:journey|Journey — chronological discovery (chromium → qt6 → kwin → vb2)]] * [[fourier:upstream_submissions|Upstream submission drafts — Qt, KDE, linux-media]] ===== Sources ===== ==== Public ==== * [[https://github.com/marfrit/fourier|github.com/marfrit/fourier]] * ''chromium-fourier/'' — 4 patches * ''qt6-base-fourier/'' — 3 patches * ''kwin-fourier/'' — 2 patches * ''docs/dmabuf-zero-copy.md'' — panfrost ''external_only'' finding + cascade * ''tools/'' — capture / measurement helpers ==== Local (gitea/marfrit-packages) ==== * ''arch/chromium-fourier/'' — PKGBUILD + patches + ''NEXT.md'' campaign chronology + ''KWIN_PIVOT.md'' discovery story * ''arch/qt6-base-fourier/'' * ''arch/kwin-fourier/'' * ''arch/firefox-fourier/'' * ''kernel/vb2-dma-resv-rfc/'' — 3-patch kernel RFC * ''upstream-submissions/qt6-base-fourier/qt-bug-report.md'' * ''upstream-submissions/kwin-fourier/kde-mr-body.md'' * ''upstream-submissions/vb2-dma-resv/lkml-submission-notes.md'' ---- //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 ''[[fourier:patch_series|patch_series]]'' page carries the current 4-patch shape.//