====== fourier — patch series in detail ====== Snapshot of the four sibling patch series as of 2026-04-28 evening. Index: [[fourier:start]]. ===== chromium-fourier (4 patches, validated end-to-end on ohm) ===== Reference target: **ohm** — PineTab2 / RK3566 / Mali-G52 / panfrost / mainline kernel 6.19.10 / KDE Plasma 6.6.4 Wayland. - ''enable-v4l2-decoder-default.patch'' — flip ''kAcceleratedVideoDecodeLinux'' default - ''wayland-allow-direct-egl-gles2.patch'' — re-allow direct EGL/GLES2 in ''WaylandSurfaceFactory'' - ''nv12-external-oes-on-modifier-external-only.patch'' — pick ''GL_TEXTURE_EXTERNAL_OES'' for NV12 dmabufs whose modifier is ''external_only'' - ''v4l2-capture-pool-floor-at-16.patch'' — floor V4L2 capture pool at 16 buffers **Result on ohm:** ''bbb_1080p30_h264.mp4'' plays end-to-end on KDE Plasma 6.6.4 Wayland, ~81 % combined chrome CPU vs ~131 % pre-patch baseline (~3.8× reduction). **Side-effect:** Brave's YouTube playback also feels markedly snappier on ohm — patches 2 + 3 are not chromium-fourier-binary-specific, they help any Wayland Chromium-derived browser through the panfrost ''external_only'' modifier path, and patch from the kwin layer (see below) helps every ''wp_linux_dmabuf-v1'' client. Build: cross-compiled on **CT 220 chromium-builder-x86** (Proxmox container on data) — see ''[[fourier:hosts|fourier:hosts]]''. ===== qt6-base-fourier (3 patches, validated on ohm + fresnel) ===== Pure **spec-correctness fix**. OpenGL ES 3.0 deprecated ''GL_ALPHA'' as a ''glTexImage2D'' internalFormat; Qt 6 was hard-coding it via the ''QT_CONFIG(opengles2)'' build branch with **no runtime ES-version check**. Affects every Qt 6 GLES3 client on Mali-class hardware. - ''0001-qopengltextureglyphcache-pick-GL_R8-on-ES3.patch'' - ''0002-qrhigles2-RED_OR_ALPHA8-pick-GL_R8-on-ES3.patch'' - ''0003-qopengltextureuploader-pick-GL_R8-on-ES3.patch'' Zero ''GL_INVALID_VALUE'' in journal post-relogin. Cleanly upstream-targetable to bugreports.qt.io + Gerrit; submission body is written and parked in ''upstream-submissions/qt6-base-fourier/qt-bug-report.md''. ===== kwin-fourier (2 patches — one shipped, one staged) ===== - ''0001-transaction-bypass-watchDmaBuf-fence-wait.patch'' — diagnostic bypass; this is what //identified// the bug - ''0002-transaction-poll-dmabuf-fd-directly-upstream-shape.patch'' — the actual upstream-bound shape: poll the dmabuf fd directly instead of going through ''EXPORT_SYNC_FILE'' + ''QSocketNotifier'' round-trip; validated on ohm Both are shaped to address the per-frame ''DMA_BUF_IOCTL_EXPORT_SYNC_FILE'' overhead in KWin's compositor scheduling path. **Side-effect benefit:** every ''wp_linux_dmabuf-v1'' client (chrome, brave, mpv, VLC) feels markedly snappier on Mali-class hardware. The discovery story is in ''arch/chromium-fourier/KWIN_PIVOT.md'' in gitea/marfrit-packages — see also ''[[fourier:journey]]''. The upstream-shape patch's submission body is at ''upstream-submissions/kwin-fourier/kde-mr-body.md''. ===== firefox-fourier 150.0.1 (4 patches, partial validation on fresnel) ===== - **patch 1** — gfxinfo fourcc advertise (verified working) - **patch 2** — libwrapper hwdevice route (compiled in but not engaging at runtime) - **patch 3** — ffmpegvideo route (compiled in but not engaging at runtime — root cause identified today) - **patch 4** — pref default (verified working) Today (2026-04-28) the runtime defect on patch 3 was identified via ''MOZ_LOG'': patch 3 only walked the **generic codec's** ''hw_configs''. libavcodec on ALARM registers v4l2_request as **separate AVCodec entries** (''h264_v4l2request'' etc.). Patch 3 has been corrected to **probe by name first**, falling back to ''hw_configs''. Rebuild pending on **boltzmann**. ===== Where to find sources ===== * Public: [[https://github.com/marfrit/fourier|github.com/marfrit/fourier]] — ''chromium-fourier/'', ''qt6-base-fourier/'', ''kwin-fourier/'', ''docs/'', ''tools/'' * Local: [[https://git.reauktion.de/marfrit/marfrit-packages|gitea/marfrit-packages]] — ''arch/{chromium,qt6-base,kwin,firefox}-fourier/''