| |
| fourier:patch_series [2026/04/28 22:06] – fourier: patch series detail (chromium 4, qt6 3, kwin 2, firefox 4) markus_fritsche | fourier:patch_series [2026/04/29 04:16] (current) – fix HTML-entity over-escape (' -> ' ; " -> "); restores monospace markup markus_fritsche |
|---|
| mainline kernel 6.19.10 / KDE Plasma 6.6.4 Wayland. | mainline kernel 6.19.10 / KDE Plasma 6.6.4 Wayland. |
| |
| - ''enable-v4l2-decoder-default.patch'' — flip ''kAcceleratedVideoDecodeLinux'' default | - ''enable-v4l2-decoder-default.patch'' — flip ''kAcceleratedVideoDecodeLinux'' default |
| - ''wayland-allow-direct-egl-gles2.patch'' — re-allow direct EGL/GLES2 in ''WaylandSurfaceFactory'' | - ''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'' | - ''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 | - ''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 | **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 | 6.6.4 Wayland, ~81 % combined chrome CPU vs ~131 % pre-patch baseline |
| (~3.8× reduction). | (~3.8× reduction). |
| |
| **Side-effect:** Brave's YouTube playback also feels markedly snappier on ohm — | **Side-effect:** Brave's YouTube playback also feels markedly snappier on ohm — |
| patches 2 + 3 are not chromium-fourier-binary-specific, they help any | patches 2 + 3 are not chromium-fourier-binary-specific, they help any |
| Wayland Chromium-derived browser through the panfrost ''external_only'' | Wayland Chromium-derived browser through the panfrost ''external_only'' |
| modifier path, and patch from the kwin layer (see below) helps every | modifier path, and patch from the kwin layer (see below) helps every |
| ''wp_linux_dmabuf-v1'' client. | ''wp_linux_dmabuf-v1'' client. |
| |
| Build: cross-compiled on **CT 220 chromium-builder-x86** (Proxmox container | Build: cross-compiled on **CT 220 chromium-builder-x86** (Proxmox container |
| on data) — see ''[[fourier:hosts|fourier:hosts]]''. | on data) — see ''[[fourier:hosts|fourier:hosts]]''. |
| |
| ===== qt6-base-fourier (3 patches, validated on ohm + fresnel) ===== | ===== qt6-base-fourier (3 patches, validated on ohm + fresnel) ===== |
| |
| Pure **spec-correctness fix**. OpenGL ES 3.0 deprecated ''GL_ALPHA'' as a | Pure **spec-correctness fix**. OpenGL ES 3.0 deprecated ''GL_ALPHA'' as a |
| ''glTexImage2D'' internalFormat; Qt 6 was hard-coding it via the | ''glTexImage2D'' internalFormat; Qt 6 was hard-coding it via the |
| ''QT_CONFIG(opengles2)'' build branch with **no runtime ES-version check**. | ''QT_CONFIG(opengles2)'' build branch with **no runtime ES-version check**. |
| Affects every Qt 6 GLES3 client on Mali-class hardware. | Affects every Qt 6 GLES3 client on Mali-class hardware. |
| |
| - ''0001-qopengltextureglyphcache-pick-GL_R8-on-ES3.patch'' | - ''0001-qopengltextureglyphcache-pick-GL_R8-on-ES3.patch'' |
| - ''0002-qrhigles2-RED_OR_ALPHA8-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'' | - ''0003-qopengltextureuploader-pick-GL_R8-on-ES3.patch'' |
| |
| Zero ''GL_INVALID_VALUE'' in journal post-relogin. Cleanly | Zero ''GL_INVALID_VALUE'' in journal post-relogin. Cleanly |
| upstream-targetable to bugreports.qt.io + Gerrit; submission body is | upstream-targetable to bugreports.qt.io + Gerrit; submission body is |
| written and parked in | written and parked in |
| ''upstream-submissions/qt6-base-fourier/qt-bug-report.md''. | ''upstream-submissions/qt6-base-fourier/qt-bug-report.md''. |
| |
| ===== kwin-fourier (2 patches — one shipped, one staged) ===== | ===== kwin-fourier (2 patches — one shipped, one staged) ===== |
| |
| - ''0001-transaction-bypass-watchDmaBuf-fence-wait.patch'' — diagnostic bypass; this is what //identified// the bug | - ''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 | - ''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 | Both are shaped to address the per-frame |
| ''DMA_BUF_IOCTL_EXPORT_SYNC_FILE'' overhead in KWin's compositor scheduling | ''DMA_BUF_IOCTL_EXPORT_SYNC_FILE'' overhead in KWin's compositor scheduling |
| path. **Side-effect benefit:** every ''wp_linux_dmabuf-v1'' client (chrome, | path. **Side-effect benefit:** every ''wp_linux_dmabuf-v1'' client (chrome, |
| brave, mpv, VLC) feels markedly snappier on Mali-class hardware. | brave, mpv, VLC) feels markedly snappier on Mali-class hardware. |
| |
| The discovery story is in ''arch/chromium-fourier/KWIN_PIVOT.md'' in | The discovery story is in ''arch/chromium-fourier/KWIN_PIVOT.md'' in |
| gitea/marfrit-packages — see also ''[[fourier:journey]]''. | gitea/marfrit-packages — see also ''[[fourier:journey]]''. |
| |
| The upstream-shape patch's submission body is at | The upstream-shape patch's submission body is at |
| ''upstream-submissions/kwin-fourier/kde-mr-body.md''. | ''upstream-submissions/kwin-fourier/kde-mr-body.md''. |
| |
| ===== firefox-fourier 150.0.1 (4 patches, partial validation on fresnel) ===== | ===== firefox-fourier 150.0.1 (4 patches, partial validation on fresnel) ===== |
| |
| Today (2026-04-28) the runtime defect on patch 3 was identified via | 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''. | ''MOZ_LOG'': patch 3 only walked the **generic codec's** ''hw_configs''. |
| libavcodec on ALARM registers v4l2_request as **separate AVCodec | libavcodec on ALARM registers v4l2_request as **separate AVCodec |
| entries** (''h264_v4l2request'' etc.). Patch 3 has been corrected to | entries** (''h264_v4l2request'' etc.). Patch 3 has been corrected to |
| **probe by name first**, falling back to ''hw_configs''. Rebuild pending | **probe by name first**, falling back to ''hw_configs''. Rebuild pending |
| on **boltzmann**. | on **boltzmann**. |
| |
| ===== Where to find sources ===== | ===== Where to find sources ===== |
| |
| * Public: [[https://github.com/marfrit/fourier|github.com/marfrit/fourier]] — ''chromium-fourier/'', ''qt6-base-fourier/'', ''kwin-fourier/'', ''docs/'', ''tools/'' | * 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/'' | * Local: [[https://git.reauktion.de/marfrit/marfrit-packages|gitea/marfrit-packages]] — ''arch/{chromium,qt6-base,kwin,firefox}-fourier/'' |
| |