patches/driver/media: import Sarma VP9-VDPU381 series #24

Merged
marfrit merged 2 commits from claude-noether/kernel-agent:noether/sarma-vp9-vdpu381 into main 2026-05-18 13:15:20 +00:00
Collaborator

Imports D.V.A.B. Sarma's VP9-VDPU381 patch series as scope-tagged kernel-agent patches under patches/driver/media/. Companion to the operator path (a) decision on marfrit/kernel-agent#12 (build + install + reboot ampere).

What landed

  • patches/driver/media/0001..0003-*.patch — Sarma's 3 commits exported via git format-patch. ~1500 LOC total, apply strictly in order. Source: github.com/dvab-sarma/android_kernel_rk_opi branch add-rkvdec-vdpu381-vp9-v8.
  • patches/driver/media/README.md — author / provenance / removal-criteria / how-to-use docs.

What did NOT land

  • fleet/ampere.yaml is not modified — the manifest preamble currently scopes VP9 out per issue #6. Once the operator verifies VP9 actually works on ampere (post-reboot test), they can bump the manifest to include these three patches in apply order. Kept separate so this PR is reviewable on its own without committing to the manifest change.

Empirical results so far

  • Cherry-picked clean on top of ampere-minimal-devices branch in ampere's local /home/mfritsche/src/linux-rockchip tree (no conflicts).
  • Full kernel build succeeded clean: KBUILD_BUILD_TIMESTAMP='' make -j$(nproc) O=build-vp9 ARCH=arm64 Image modules dtbs → 60min 49s, RC=0, GCC 16.1.1.
  • New extlinux label arch_vp9_test installed alongside existing arch_devices (default unchanged → safe to reboot, default still recovers).
  • End-to-end VP9 decode validation pending operator reboot into arch_vp9_test + v4l2-ctl --list-formats-out showing VP9F + ffmpeg-vaapi smoke test.

Operator next steps (kernel-agent#12)

  1. Operator reboots ampere, selects arch_vp9_test at extlinux menu prompt.
  2. If boots: v4l2-ctl -d /dev/video1 --list-formats-out should now list VP9F. Then ffmpeg-vaapi VP9 decode test against ~/measurements/encoded/bbb_60s_720p.vp9.webm.
  3. If decode passes: merge this PR + bump fleet/ampere.yaml to include the 3 patches under the scope-tagged list. Either set default arch_vp9_test in extlinux or rebuild a linux-ampere-fourier package release including the patches.
  4. If decode fails: reboot → pick arch_devices → recover. Leave the arch_vp9_test label in place for future debugging.

Cross-references: marfrit/kernel-agent#12 + the upstream gist+blog at https://gist.github.com/Kwiboo/f4ac15576b2c72887ae2bc5d58b5c865 and https://www.collabora.com/news-and-blog/news-and-events/rk3588-and-rk3576-video-decoders-support-merged-in-the-upstream-linux-kernel.html

🤖 Generated with Claude Code

Imports D.V.A.B. Sarma's VP9-VDPU381 patch series as scope-tagged kernel-agent patches under `patches/driver/media/`. Companion to the operator path (a) decision on `marfrit/kernel-agent#12` (build + install + reboot ampere). ## What landed - `patches/driver/media/0001..0003-*.patch` — Sarma's 3 commits exported via `git format-patch`. ~1500 LOC total, apply strictly in order. Source: `github.com/dvab-sarma/android_kernel_rk_opi` branch `add-rkvdec-vdpu381-vp9-v8`. - `patches/driver/media/README.md` — author / provenance / removal-criteria / how-to-use docs. ## What did NOT land - `fleet/ampere.yaml` is **not** modified — the manifest preamble currently scopes VP9 out per issue #6. Once the operator verifies VP9 actually works on ampere (post-reboot test), they can bump the manifest to include these three patches in apply order. Kept separate so this PR is reviewable on its own without committing to the manifest change. ## Empirical results so far - Cherry-picked clean on top of `ampere-minimal-devices` branch in ampere's local `/home/mfritsche/src/linux-rockchip` tree (no conflicts). - Full kernel build succeeded clean: `KBUILD_BUILD_TIMESTAMP='' make -j$(nproc) O=build-vp9 ARCH=arm64 Image modules dtbs` → 60min 49s, RC=0, GCC 16.1.1. - New extlinux label `arch_vp9_test` installed alongside existing `arch_devices` (default unchanged → safe to reboot, default still recovers). - End-to-end VP9 decode validation **pending operator reboot into `arch_vp9_test`** + `v4l2-ctl --list-formats-out` showing `VP9F` + ffmpeg-vaapi smoke test. ## Operator next steps (kernel-agent#12) 1. Operator reboots ampere, selects `arch_vp9_test` at extlinux menu prompt. 2. If boots: `v4l2-ctl -d /dev/video1 --list-formats-out` should now list `VP9F`. Then ffmpeg-vaapi VP9 decode test against `~/measurements/encoded/bbb_60s_720p.vp9.webm`. 3. If decode passes: merge this PR + bump `fleet/ampere.yaml` to include the 3 patches under the scope-tagged list. Either set `default arch_vp9_test` in extlinux or rebuild a `linux-ampere-fourier` package release including the patches. 4. If decode fails: reboot → pick `arch_devices` → recover. Leave the `arch_vp9_test` label in place for future debugging. Cross-references: marfrit/kernel-agent#12 + the upstream gist+blog at https://gist.github.com/Kwiboo/f4ac15576b2c72887ae2bc5d58b5c865 and https://www.collabora.com/news-and-blog/news-and-events/rk3588-and-rk3576-video-decoders-support-merged-in-the-upstream-linux-kernel.html 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-noether added 1 commit 2026-05-18 12:56:33 +00:00
Three patches from D.V.A.B. Sarma adding VP9 decode support to the
VDPU381 variant of rkvdec (RK3588 generation). Combined ~1500 LOC,
5 new files in drivers/media/platform/rockchip/rkvdec/.

Provenance: github.com/dvab-sarma/android_kernel_rk_opi branch
add-rkvdec-vdpu381-vp9-v8. Collabora's blog cites the work but it
hasn't reached linux-media patchwork yet (Collabora: "v1 series
needs to be sent for review soon"). Casanova's underlying
VDPU381/VDPU383 H.264+HEVC base IS in mainline 7.0 release.

Tested by author on Orange Pi 5 Pro (RK3588) with AOSP 16 + FFMPEG,
Profile 0 + Profile 2.

Tested in our fleet 2026-05-18: cherry-picks cleanly on top of
ampere-minimal-devices, full kernel build (KERNELRELEASE
7.0.0-rc3-vp9-test+) succeeds clean with GCC 16.1.1. Image + DTB +
modules + initramfs installed under -vp9-test+ suffix on ampere
without touching the running -devices+ kernel; new extlinux label
arch_vp9_test added (default unchanged at arch_devices). End-to-end
VP9 decode verification pending operator reboot into the new label.

Patches NOT yet referenced from fleet/ampere.yaml — that bump is
the operator's call (manifest preamble currently scopes VP9 out per
issue #6). Once verified, ampere.yaml can add these three under the
scope-tagged patch list in apply order 0001→0002→0003.

Cross-reference: marfrit/kernel-agent#12.
claude-noether added 1 commit 2026-05-18 13:15:19 +00:00
Reference the 3 patches imported in the previous commit under the
scope-tagged patch list. Apply order is strict (0001 → 0002 → 0003).

Verified 2026-05-18 via the arch_vp9_test extlinux boot on ampere:
- VP9F enumerates on rkvdec /dev/video2
- kdirect decode bit-exact vs libavcodec SW reference at -ss 30
- libva decode (firefox/chromium-style consumer) also bit-exact
- vainfo lists VAProfileVP9Profile0 (iter38 multi-device probe auto-picks)
- All three paths agree on sha
  c8624d7c42db66525f53a02a515bc38d0a17ef39f692660cc7bebb1e2d2e1b48

Removes VP9 from the "explicitly not included" comment block — issue
#12 closes with this change.

Also: AV1 stays out-of-scope per issue #6 ask 3 (kernel side fine via
the existing av1-vpu-dec node; backend just needs the 4th-fd
generalization tracked in libva-v4l2-request-fourier#2).

The next linux-ampere-fourier package rebuild from this manifest
will pick up VP9 automatically; ampere's running
7.0.0-rc3-vp9-test+ kernel already has these patches via the
operator's manual build session today.
marfrit merged commit 96af34d775 into main 2026-05-18 13:15:20 +00:00
marfrit deleted branch noether/sarma-vp9-vdpu381 2026-05-18 13:15:20 +00:00
Sign in to join this conversation.