fresnel-fourier stack: bump libva to iter38b + fix firefox HW-decode defaults (#8) #9

Merged
marfrit merged 2 commits from claude-noether/marfrit-packages:noether/libva-iter38b-and-firefox-prefs into main 2026-05-15 06:13:20 +00:00
Contributor

Two PKGBUILD-level changes for the fresnel-fourier production stack.

1. libva-v4l2-request-fourier: bump pin iter8 → iter38b (7ac934e)

Carries the fork from libva-multiplanar's iter8 close (2026-05-06) to fresnel-fourier's iter38b close (2026-05-14):

  • iter25 — rkvdec image_fmt pre-seed (HEVC frame-1 fix)
  • iter31 — VAAPI st_rps_bits → V4L2 slice_params (HEVC frame-2+ fix)
  • iter33 — VP8 uncompressed-header prepend for hantro first_part_offset
  • iter35 — MPEG-2 verified libva-correct
  • iter38 — multi-device probe so a single libva session serves rkvdec + hantro
  • iter38b — bounds check uses MAX_PROFILES (11), not MAX_CONFIG_ATTRIBUTES (10)

Required by the fresnel-fourier README which currently says the package isn't built (the README is wrong about that — the package exists, just on the iter8 pin). vainfo lists all 10 profiles in one session, byte-exact bench verified across 5 codecs.

68 commits between old pin (65969da3) and new (7ac934e0). pkgver() recomputes the rev count at build time; placeholder bumped from r280 to r348.

2. firefox-fourier: ship RK3399 HW-decode default prefs (closes #8)

Issue #8 documented that the patch series (0001..0004) builds the routing path but doesn't actually engage on a fresh profile because three other prefs are false upstream:

  • widget.dmabuf.force-enabled (panfrost EGL probe doesn't fire)
  • media.hardware-video-decoding.force-enabled (Intel-tuned cost heuristic picks SW)
  • media.ffvpx-hw.enabled (FFvpx PDM HW-capable variant gating for VP8/VP9)

Fixed by shipping a vendor-default file at /usr/lib/firefox-fourier/browser/defaults/preferences/rockchip-fourier-defaults.js. Lower precedence than user.js / about:config — power users can still disable for debugging without touching the package.

pkgrel 1 → 2.

CI impact

After merge, two builds will trigger sequentially per the workflow's needs: chain:

  1. libva-v4l2-request-fourier-aarch64
  2. firefox-fourier-aarch64 (slow — Firefox build, hours)

The mpv-fourier iter2 build (run #92) currently in progress is unaffected.

Test plan

  • CI green for libva-v4l2-request-fourier-aarch64
  • CI green for firefox-fourier-aarch64
  • pacman -Syu on fresnel pulls the new libva (iter38b) and firefox (pkgrel=2)
  • Fresh Firefox profile on fresnel — empty user.js, just media.autoplay.default=0 — autoplay H.264 → MOZ_LOG shows Requesting pixel format VAAPI_VLD + Got VA-API DMABufSurface
  • Same sweep across HEVC / VP8 / VP9 (per #8's repro matrix)

Bot: claude-noether

Two PKGBUILD-level changes for the fresnel-fourier production stack. ## 1. `libva-v4l2-request-fourier`: bump pin iter8 → iter38b (`7ac934e`) Carries the fork from libva-multiplanar's iter8 close (2026-05-06) to fresnel-fourier's iter38b close (2026-05-14): - iter25 — rkvdec `image_fmt` pre-seed (HEVC frame-1 fix) - iter31 — VAAPI `st_rps_bits` → V4L2 slice_params (HEVC frame-2+ fix) - iter33 — VP8 uncompressed-header prepend for hantro `first_part_offset` - iter35 — MPEG-2 verified libva-correct - **iter38** — multi-device probe so a single libva session serves rkvdec + hantro - **iter38b** — bounds check uses `MAX_PROFILES` (11), not `MAX_CONFIG_ATTRIBUTES` (10) Required by the [`fresnel-fourier` README](https://git.reauktion.de/marfrit/fresnel-fourier/src/branch/main/README.md) which currently says the package isn't built (the README is wrong about that — the package exists, just on the iter8 pin). vainfo lists all 10 profiles in one session, byte-exact bench verified across 5 codecs. 68 commits between old pin (`65969da3`) and new (`7ac934e0`). `pkgver()` recomputes the rev count at build time; placeholder bumped from `r280` to `r348`. ## 2. `firefox-fourier`: ship RK3399 HW-decode default prefs (closes #8) Issue #8 documented that the patch series (0001..0004) builds the routing path but doesn't actually engage on a fresh profile because three other prefs are `false` upstream: - `widget.dmabuf.force-enabled` (panfrost EGL probe doesn't fire) - `media.hardware-video-decoding.force-enabled` (Intel-tuned cost heuristic picks SW) - `media.ffvpx-hw.enabled` (FFvpx PDM HW-capable variant gating for VP8/VP9) Fixed by shipping a vendor-default file at `/usr/lib/firefox-fourier/browser/defaults/preferences/rockchip-fourier-defaults.js`. Lower precedence than `user.js` / `about:config` — power users can still disable for debugging without touching the package. `pkgrel 1 → 2`. ## CI impact After merge, two builds will trigger sequentially per the workflow's `needs:` chain: 1. `libva-v4l2-request-fourier-aarch64` 2. `firefox-fourier-aarch64` (slow — Firefox build, hours) The mpv-fourier iter2 build (run #92) currently in progress is unaffected. ## Test plan - [ ] CI green for libva-v4l2-request-fourier-aarch64 - [ ] CI green for firefox-fourier-aarch64 - [ ] `pacman -Syu` on fresnel pulls the new libva (iter38b) and firefox (pkgrel=2) - [ ] Fresh Firefox profile on fresnel — empty `user.js`, just `media.autoplay.default=0` — autoplay H.264 → MOZ_LOG shows `Requesting pixel format VAAPI_VLD` + `Got VA-API DMABufSurface` - [ ] Same sweep across HEVC / VP8 / VP9 (per #8's repro matrix) Bot: claude-noether
claude-noether added 2 commits 2026-05-15 06:10:54 +00:00
Carries the fork from libva-multiplanar iter8 close (2026-05-06) to
fresnel-fourier iter38b (2026-05-14): multi-device probe so a single
libva session serves rkvdec (H.264 + HEVC + VP9) + hantro (MPEG-2 +
VP8) without LIBVA_V4L2_REQUEST_VIDEO_PATH overrides, plus the
MAX_PROFILES bounds-check fix from iter38b.

Required by the fresnel-fourier README's HW-decode stack (vainfo
exposes all 10 profiles in one session, byte-exact bench verified
across 5 codecs).

68 commits between the old pin (65969da3) and the new (7ac934e0).
pkgver() recomputes the rev count at build time; the static placeholder
is bumped from r280 to r348 to reflect the new pin.
Three prefs that gate the patched VAAPI / V4L2-request code path are
'false' upstream and need to be 'true' for the libva-v4l2-request
backend to actually engage on RK3399 / panfrost EGL:

  widget.dmabuf.force-enabled
  media.hardware-video-decoding.force-enabled
  media.ffvpx-hw.enabled

Without them, Gecko's DMA-BUF probe silently fails (panfrost EGL
doesn't trip the right detection), the (Intel-tuned) HW-vs-SW cost
heuristic picks SW, and the FFvpx PDM never selects its HW-capable
variant for VP8/VP9. Net result: fresh profiles SW-decode despite the
0001..0004 unlock patches being applied.

Shipped as a vendor-default file at:
  /usr/lib/firefox-fourier/browser/defaults/preferences/rockchip-fourier-defaults.js

Lower precedence than user.js / about:config — power users debugging
HW decode can still flip them off without touching the package.

pkgrel 1 -> 2.

Closes: #8
marfrit merged commit 2f78136479 into main 2026-05-15 06:13:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marfrit/marfrit-packages#9