Files
fresnel-fourier/phase8_iteration34_close.md
T
marfrit 70ddbd6c4b iter34 close: kernel 7.0-14 CLEAN ship — 5/5 codecs PASS
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.
2026-05-14 16:50:59 +00:00

3.2 KiB
Raw Blame History

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-14 built + 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 iter empty — 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)

  1. Backend env-gated DIAG cleanup (low priority): iter29 LIBVA_HEVC_DUMP_SLICE_TAIL, iter30 LIBVA_TS_SCALE, iter33 LIBVA_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.
  2. α-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.
  3. 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.