Files
libva-multiplanar/phase0_evidence/2026-05-04-kernel-trace/mpv.stderr
T
marfrit 365764fffb Phase 0 amendment: hantro writes zeros, sentinel test cache-buggy
Re-baselined libva-v4l2-request decode path with kernel-side
observability (ftrace v4l2/vb2/dma_fence + dmesg + dynamic_debug)
and visual disambiguator (mpv --vo=gpu in operator's live Plasma
session).

Findings:

1. Kernel reports successful CAPTURE buffer write every frame:
   ftrace vb2_buf_done shows bytesused=3655712 (full NV12 1920x1088
   + hantro tile padding). dmesg completely silent — no
   hantro/vpu/decode/error/warn messages.

2. Visual disambiguator: mpv --hwdec=vaapi-copy --vo=gpu shows a
   solid GREEN frame; --hwdec=vaapi --vo=gpu shows solid BLUE.
   Neither shows the sentinel mid-beige (NV12 Y=0xab,UV=0xab would
   render cream). Both colors are consistent with the kernel
   writing all-zero NV12 (Y=0,UV=0 → green via BT.709 limited; same
   buffer GL-imported as DMA-BUF with different colorspace → blue).

3. Patch 0011 sentinel test has a cache-coherency bug: writes
   0xab via cached surface_object->destination_map[0] mmap, never
   invalidates cache before readback. So the readback always
   shows the stale sentinel even when kernel DMA-overwrote it
   with zeros. vaapi-copy and Mesa DMA-BUF GL import correctly
   invalidate cache and see the real (zero) contents.

This corrects the previous Phase 0 verdicts twice in one day:
- Original commit f15ba8b ("the 2026-04-26 picture holds") was
  wrong: clean contract trace, never checked pixel content.
- Revised commit e892cea ("kernel produces no decoded pixel
  output, sentinel survives") was half right: kernel does write,
  writes zeros, and the sentinel test was reading stale cache.
- Now: kernel writes ALL ZEROS to the CAPTURE buffer. Hantro is
  silently failing the bitstream parse or some control validation.

This is consistent with patch 0011's own commit message hypothesis:
"All zeros → kernel did write 0x00s (overwriting our sentinel),
and the apparent 'no picture' output is the kernel-side decode
actually producing zeros (e.g. parser rejected the bitstream)."
That hypothesis was right; we just couldn't confirm it via the
sentinel test (cache bug) and went down the wrong rabbit hole.

Phase 6 direction sharpens substantially. Bug isn't "we can't
engage hantro" — it's "hantro engages but its parser produces
zeros." Bisect the control submission: VIDIOC_G_EXT_CTRLS
readback to verify writes stick, diff against FFmpeg's
v4l2_request_h264.c (proven working on hantro), verify SPS
completeness, resolve patch 0008's slice_header bit_size open
question, dyndbg the hantro module, etc. Phase 1 boolean-
correctness criterion needs a working pixel-content check before
lock; fix patch 0011's cache sync first.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:39:42 +00:00

41 lines
5.4 KiB
Plaintext

v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 00 00 00 04 00 00 00 00 08 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000000 frame_idx=0 flags=0x8 TopFOC=65536 BottomFOC=65536 frame_num=0
v4l2-request: OUTPUT[idx=0, len=6272]: 00 00 01 25 b8 20 20 21 44 c5 00 01 57 9b ef be fb ef be fb ef be fb ef be fb ef be fb ef be fb
v4l2-request: CAPTURE[idx=0, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 01 00 00 04 01 00 00 00 08 00 00 00 04 00 01 00 04 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000001 frame_idx=1 flags=0x8 TopFOC=65540 BottomFOC=65540 frame_num=1
v4l2-request: OUTPUT[idx=1, len=108]: 00 00 01 21 e1 09 00 85 00 3f d8 00 00 01 21 00 7f b8 42 40 21 40 0f f6 00 00 01 21 00 3f ce 10
v4l2-request: CAPTURE[idx=1, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 02 00 00 04 02 00 00 00 00 00 00 00 02 00 01 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000002 frame_idx=2 flags=0x0 TopFOC=65538 BottomFOC=65538 frame_num=2
v4l2-request: OUTPUT[idx=2, len=109]: 00 00 01 01 a8 81 60 10 a0 07 fb 00 00 01 01 00 7f aa 20 58 04 28 01 fe c0 00 00 01 01 00 3f ca
v4l2-request: CAPTURE[idx=2, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 03 00 00 04 02 00 00 00 08 00 00 00 08 00 01 00 08 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000003 frame_idx=2 flags=0x8 TopFOC=65544 BottomFOC=65544 frame_num=2
v4l2-request: OUTPUT[idx=3, len=144299]: 00 00 01 21 e2 11 00 85 42 b8 58 00 05 57 43 01 19 16 05 c1 95 41 3a 7b a1 9b 3b df d1 68 28 be
v4l2-request: CAPTURE[idx=3, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 04 00 00 04 03 00 00 00 00 00 00 00 06 00 01 00 06 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000004 frame_idx=3 flags=0x0 TopFOC=65542 BottomFOC=65542 frame_num=3
v4l2-request: OUTPUT[idx=0, len=248054]: 00 00 01 01 a8 c3 60 10 aa c6 47 88 8b 07 23 86 0a 5f 25 25 d0 c8 32 6c c6 c1 83 ae 06 83 8d 04
v4l2-request: CAPTURE[idx=4, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 05 00 00 04 03 00 00 00 08 00 00 00 0c 00 01 00 0c 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000005 frame_idx=3 flags=0x8 TopFOC=65548 BottomFOC=65548 frame_num=3
v4l2-request: OUTPUT[idx=1, len=95876]: 00 00 01 21 e3 19 00 85 4d ff ff 71 00 00 22 67 0b ba a0 0d d7 40 27 d0 14 2b 89 10 80 3a 1a 09
v4l2-request: CAPTURE[idx=5, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 06 00 00 04 04 00 00 00 00 00 00 00 0a 00 01 00 0a 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000006 frame_idx=4 flags=0x0 TopFOC=65546 BottomFOC=65546 frame_num=4
v4l2-request: OUTPUT[idx=2, len=49777]: 00 00 01 01 a9 05 60 10 a6 18 ff ff bb 5b 24 05 e8 56 2b 76 0a 18 ff 8f 71 df b5 6a ef 60 34 98
v4l2-request: CAPTURE[idx=6, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 00 00 00 04 04 00 00 00 08 00 00 00 10 00 01 00 10 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000000 frame_idx=4 flags=0x8 TopFOC=65552 BottomFOC=65552 frame_num=4
v4l2-request: OUTPUT[idx=3, len=60348]: 00 00 01 21 e4 21 00 85 44 e2 80 00 a8 8e 23 c4 78 8f 11 e2 3c 47 88 f1 1e 23 c4 78 8f 11 e2 3c
v4l2-request: CAPTURE[idx=0, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 02 00 00 04 05 00 00 00 00 00 00 00 0e 00 01 00 0e 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000002 frame_idx=5 flags=0x0 TopFOC=65550 BottomFOC=65550 frame_num=5
v4l2-request: OUTPUT[idx=0, len=9557]: 00 00 01 01 a9 47 60 10 a3 06 f9 43 5e 1a f0 d7 41 af 0d 78 6b c3 5e 1a f0 d7 86 bc 35 e1 af 0d
v4l2-request: CAPTURE[idx=2, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
v4l2-request: VAPictureH264 sizeof=36 CurrPic[0..31]: 01 00 00 04 05 00 00 00 08 00 00 00 14 00 01 00 14 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
v4l2-request: VAPictureH264 CurrPic field reads: picture_id=0x04000001 frame_idx=5 flags=0x8 TopFOC=65556 BottomFOC=65556 frame_num=5
v4l2-request: OUTPUT[idx=1, len=59825]: 00 00 01 21 e5 29 00 85 46 e2 80 00 a6 cd f3 7f ff c3 1d 77 75 7c 6e 28 37 cd ff f9 6b d7 bf 7b
v4l2-request: CAPTURE[idx=1, plane0]: ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab