fourier:start
This is an old revision of the document!
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.
- Public face: github.com/marfrit/fourier — sibling subdirs ''chromium-fourier/'', ''qt6-base-fourier/'', ''kwin-fourier/'', ''docs/'', ''tools/''
- Local Arch packaging + investigation notes: 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 snapshot — 2026-04-28 evening
| 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 | 2 (1 shipped + 1 upstream-shape) | upstream-bound | ohm | side-effect: every ''wp_linux_dmabuf-v1'' client snappier on Mali-class HW |
| vb2-dma-resv RFC | 3-patch kernel RFC | drafted, ready for ''send-email'' | — | the fix that makes the kwin-fourier wait premise actually true |
| 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
- chromium-fourier — what we get + the rug-pull on Brave (2026-04-26 capture; predates the 4-patch end-to-end win)
Sources
Public
-
- ''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 ''patch_series'' page carries the current 4-patch shape.
fourier/start.1777414011.txt.gz · Last modified: by markus_fritsche
