365764fffb
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 commitf15ba8b("the 2026-04-26 picture holds") was wrong: clean contract trace, never checked pixel content. - Revised commite892cea("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>
41 lines
5.4 KiB
Plaintext
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
|