iter33 VP8 diagnostic printks reverted from rockchip_vpu2_hw_vp8_dec.c and hantro_g1_vp8_dec.c. 6 base patches retained (DTS + dma_resv + hantro/rga fences). Post-reboot 5-codec regression on 7.0-14: - h264 libva=dd4f5f2d552c07bc L==K L==SW - hevc libva=108f925bb6cbb6c9 L==K L==SW - vp9 libva=cf35908ae0f9ab60 L==K L==SW - vp8 libva=d3231e5b6c0ee10b L==K L==SW - mpeg2 libva=95c5905890c937d4 L==K L!=SW (HW IDCT ≤1 LSB precision) dmesg | grep iter — empty. Substrate clean. Note: /dev/video* and /dev/media* device numbers SHIFTED between kernel boots (rkvdec /dev/video1→/dev/video3, hantro /dev/video3→ /dev/video2 between 7.0-13 and 7.0-14). Updated memory entry to flag this.
3.2 KiB
Iteration 34 — Phase 8 (close): Kernel cleanup → 7.0-14 SHIPPING
Closes 2026-05-14, fifth campaign-day milestone. Strips iter33 VP8 diagnostic printks, ships clean kernel matching the 5/5 PASS state.
Goal
Remove the iter33 vpu2_iter33_vp8 printk in rockchip_vpu2_hw_vp8_dec.c (and the dead hantro_iter33_vp8 block in hantro_g1_vp8_dec.c that was added to the wrong function in iter33 first attempt). Ship clean 7.0-14.
Result
linux-fresnel-fourier 7.0-14built + deployed.- 5/5 codec regression PASS on the clean kernel — libva == kdirect bit-exact for all 5 codecs (H264, HEVC, VP9, VP8, MPEG-2). 4/5 also bit-equal to SW reference (MPEG-2 differs from SW by ≤1 LSB IDCT precision artifact — same as iter33).
dmesg | grep iterempty — diagnostic printks gone.
Devices on 7.0-14 (note: enumeration shifted from 7.0-13)
| Driver | Video device | Media device |
|---|---|---|
| rockchip-rga | /dev/video0 | n/a |
| rk3399-vpu-enc (encoder) | /dev/video1 | (shared with hantro) |
| rk3399-vpu-dec (hantro) | /dev/video2 | /dev/media0 |
| rkvdec | /dev/video3 | /dev/media1 |
| uvcvideo (USB cam) | /dev/video4-5 | /dev/media2 |
The /dev/video* and /dev/media* numbers shift between kernel boots based on probe order. Always re-probe via v4l2-ctl --info and media-ctl -d /dev/mediaN -p before hard-coding paths in test scripts.
Substrate state at iter34 close
Backend fork tip 7e0848d (α-25 + α-29 + α-30 + iter29/30/33 env-gated DIAG probes; all three letter-fixes are load-bearing).
Kernel linux-fresnel-fourier 7.0-14 clean, no diagnostic printks.
Open items (post iter34)
- Backend env-gated DIAG cleanup (low priority): iter29
LIBVA_HEVC_DUMP_SLICE_TAIL, iter30LIBVA_TS_SCALE, iter33LIBVA_VP8_DUMP_FRAME. Env-gated, no behavior change without env set. Could clean up to keep ship-ready source minimal. Or leave for future regression debugging. - α-26 cosmetic revert (
decode_params->short_term_ref_pic_set_size = picture->st_rps_bits— mis-routed; rkvdec doesn't use). Could revert to 0 to match V4L2 spec semantics. - Libva multi-device probe — let auto-detect support both rkvdec and hantro in a single session, instead of requiring LIBVA_V4L2_REQUEST_VIDEO_PATH override per codec. Architectural change in libva backend.
Campaign FINAL state
| Bug | Status | Fix |
|---|---|---|
| Bug 4 (H.264 keyframe-partial) | FIXED iter25 α-25 | rkvdec image_fmt pre-seed |
| Bug 5 (HEVC libva all-zero CAPTURE) | FIXED iter25 + iter31 | α-25 + α-29 (st_rps_bits to slice_params) |
| VP8 wrong output through libva | FIXED iter33 α-30 | prepend VP8 uncompressed header to OUTPUT |
| MPEG-2 HW differs from SW | NOT A BUG | hantro IDCT precision, libva==kdirect bit-exact |
| Kernel diagnostic printks | CLEANED iter32 + iter34 | 7.0-14 ship |
| Codec | libva 10F sha | kdirect 10F sha | SW 10F sha | L==K | L==SW |
|---|---|---|---|---|---|
| H.264 | dd4f5f2d552c07bc | same | same | ✓ | ✓ |
| HEVC | 108f925bb6cbb6c9 | same | same | ✓ | ✓ |
| VP9 | cf35908ae0f9ab60 | same | same | ✓ | ✓ |
| VP8 | d3231e5b6c0ee10b | same | same | ✓ | ✓ |
| MPEG-2 | 95c5905890c937d4 | same | 933b744134e47ba4 | ✓ | ~ (≤1 LSB diff) |
5/5 codecs PASS the libva-vs-kdirect bit-exact contract. Campaign closed.