[BUG] rkvdec-vdpu383-h264: wrong pixels at horizontal de-blocking edges y=4 and y=12
Simon Wright
simon at symple.nz
Wed Jun 10 23:15:02 PDT 2026
Hi Piotr,
Short version: the in-tree port didn't actually have the warmup running (it needs a
probe-time buffer alloc + a pm_runtime_resume hook, not just the decode code). Rather
than pick that apart, here's a clean patch that wires it properly - and I've now
validated it on hardware.
The patch is self-contained and needs no devicetree change (mainline already maps the
"link" register bank it uses); git apply-clean on 7.0 and 7.1-rc7:
https://github.com/SympleNZ/rkvdec-vdpu383-h264-bug/tree/master/fix
git apply fix/0001-media-rkvdec-prime-VDPU383-deblock-warmup-rk3576.patch
It adds one file (rkvdec-rk3576-workaround.c) plus a probe + pm_runtime_resume hook,
scoped to the RK3576/VDPU383 variant. Confirm it's actually active before judging it:
dmesg | grep -i "deblock-priming"
# expect: "RK3576 H.264 deblock-priming workaround enabled"
I validated it on the two RK3576 boards here: on a NanoPi R76S the warmup takes BBB
from ~18% of decodes corrupt to 0/40; on an ArmSoM Sige5 the unpatched HW decode is
100% corrupt, and the corruption looks exactly like the photo you shared. Before/after
captures:
https://github.com/SympleNZ/rkvdec-vdpu383-h264-bug#what-it-looks-like
Your board spread (nanopi M5/R76S, rock4d 20-40%) and ours (R76S 18%, Sige5 100%) are the
same timing-marginal race the priming settles, so I'd expect it to clear on your
boards once it's firing.
If you get it built, a quick "builds + the line shows up", and a Tested-by across your
devices, would strengthen this for upstream - multi-board confirmation on a hardware
workaround is exactly what the maintainers want.
Regards,
Simon
More information about the Linux-rockchip
mailing list