[PATCH 0/4] media: rkvdec: Add VP9 support for VDPU381 variant

Francesco Saverio Pavone pavone.lawyer at gmail.com
Sun Jul 26 23:44:17 PDT 2026


Rock 5B+ leg of the three-board run in the cover letter, as a tag you can
pick up. 7.1 base carrying this code, not a build of the series as posted.

Francesco Saverio Pavone <pavone.lawyer at gmail.com>


Il giorno dom 26 lug 2026 alle ore 22:28 Venkata Atchuta Bheemeswara
Sarma Darbha <vdarbha0473 at gmail.com> ha scritto:
>
> Hi All,
> This patch series adds the initial VP9 support for VDPU381 present in rk3588.
>
> VDPU381 supports VP9 Profile 0 and Profile 2 up to 7680x4320 at 30fps.
>
> Tested with fluster (suite : VP9-TEST-VECTORS, decoder: GStreamer-VP9-V4L2SL-Gst1.0).
> The 224/305 score has been reproduced independently on three RK3588 boards
> across three kernel bases: Orange Pi 5 Pro (RK3588S, 7.2.0-rc3),
> Orange Pi 5 Plus (RK3588, 7.0) and Radxa Rock 5B+ (RK3588, 7.1).
>
> Most of the remaining failures fall into a few known categories:
>
> - All vp90-2-02-size-*.webm variants where either dimension is
>   smaller than 64 pixels fail because the hardware does not support
>   frames smaller than 64x64:
>   vp90-2-02-size-08x08.webm, vp90-2-02-size-08x10.webm,
>   vp90-2-02-size-08x16.webm, vp90-2-02-size-08x18.webm,
>   vp90-2-02-size-08x32.webm, vp90-2-02-size-08x34.webm,
>   vp90-2-02-size-08x64.webm, vp90-2-02-size-08x66.webm,
>   vp90-2-02-size-10x08.webm, vp90-2-02-size-10x10.webm,
>   vp90-2-02-size-10x16.webm, vp90-2-02-size-10x18.webm,
>   vp90-2-02-size-10x32.webm, vp90-2-02-size-10x34.webm,
>   vp90-2-02-size-10x64.webm, vp90-2-02-size-10x66.webm,
>   vp90-2-02-size-16x08.webm, vp90-2-02-size-16x10.webm,
>   vp90-2-02-size-16x16.webm, vp90-2-02-size-16x18.webm,
>   vp90-2-02-size-16x32.webm, vp90-2-02-size-16x34.webm,
>   vp90-2-02-size-16x64.webm, vp90-2-02-size-16x66.webm,
>   vp90-2-02-size-18x08.webm, vp90-2-02-size-18x10.webm,
>   vp90-2-02-size-18x18.webm, vp90-2-02-size-18x32.webm,
>   vp90-2-02-size-18x34.webm, vp90-2-02-size-18x64.webm,
>   vp90-2-02-size-18x66.webm, vp90-2-02-size-32x08.webm,
>   vp90-2-02-size-32x10.webm, vp90-2-02-size-32x18.webm,
>   vp90-2-02-size-32x34.webm, vp90-2-02-size-32x66.webm,
>   vp90-2-02-size-34x08.webm, vp90-2-02-size-34x10.webm,
>   vp90-2-02-size-34x16.webm, vp90-2-02-size-34x34.webm,
>   vp90-2-02-size-34x64.webm, vp90-2-02-size-34x66.webm,
>   vp90-2-02-size-64x08.webm, vp90-2-02-size-64x10.webm,
>   vp90-2-02-size-66x08.webm, vp90-2-02-size-66x10.webm.
>
> - vp90-2-05-resize.ivf, vp90-2-18-resize.ivf and all
>   vp90-2-21-resize_inter_*.webm variants fail. These streams change
>   resolution mid-stream on a non-keyframe, and a reference frame
>   from before the resize ends up unavailable by the time it's
>   needed again. This is being actively looked into:
>   vp90-2-05-resize.ivf, vp90-2-18-resize.ivf,
>   vp90-2-21-resize_inter_1280x720_5_1-2.webm,
>   vp90-2-21-resize_inter_1280x720_5_3-4.webm,
>   vp90-2-21-resize_inter_1280x720_7_1-2.webm,
>   vp90-2-21-resize_inter_1280x720_7_3-4.webm,
>   vp90-2-21-resize_inter_1920x1080_5_1-2.webm,
>   vp90-2-21-resize_inter_1920x1080_5_3-4.webm,
>   vp90-2-21-resize_inter_1920x1080_7_1-2.webm,
>   vp90-2-21-resize_inter_1920x1080_7_3-4.webm,
>   vp90-2-21-resize_inter_320x180_5_1-2.webm,
>   vp90-2-21-resize_inter_320x180_5_3-4.webm,
>   vp90-2-21-resize_inter_320x180_7_1-2.webm,
>   vp90-2-21-resize_inter_320x180_7_3-4.webm,
>   vp90-2-21-resize_inter_320x240_5_1-2.webm,
>   vp90-2-21-resize_inter_320x240_5_3-4.webm,
>   vp90-2-21-resize_inter_320x240_7_1-2.webm,
>   vp90-2-21-resize_inter_320x240_7_3-4.webm,
>   vp90-2-21-resize_inter_640x360_5_1-2.webm,
>   vp90-2-21-resize_inter_640x360_5_3-4.webm,
>   vp90-2-21-resize_inter_640x360_7_1-2.webm,
>   vp90-2-21-resize_inter_640x360_7_3-4.webm,
>   vp90-2-21-resize_inter_640x480_5_1-2.webm,
>   vp90-2-21-resize_inter_640x480_5_3-4.webm,
>   vp90-2-21-resize_inter_640x480_7_1-2.webm,
>   vp90-2-21-resize_inter_640x480_7_3-4.webm.
>
> - vp90-2-09-aq2.webm,
>   vp90-2-09-lf_deltas.webm,
>   vp90-2-15-segkey_adpq.webm,
>   vp90-2-19-skip-01.webm,
>   vp90-2-19-skip-02.webm,
>   vp90-2-19-skip.webm,  vp90-2-22-svc_1280x720_3.ivf,
>   are still failing and not yet root-caused.
>
> - vp91-2-04-yuv422.webm
>   vp91-2-04-yuv444.webm
>   fail because the hardware does not support the format these
>   streams use (4:2:2/4:4:4), only 4:2:0.
>
> The base vdpu381 VP9 driver support was introduced by me. Profile 2 support
> was added by Igor Paunovic. Francesco Saverio Pavone fixed bugs in
> the segmentation map size calculation and in the altref vertical
> scale factor. Igor Paunovic also fixed a decoded-frame stride bug, aligning
> bytesperline to 64 bytes in rkvdec_fill_decoded_pixfmt().
>
> ---
> Igor Paunovic (1):
>       media: rkvdec: align bytesperline to 64 bytes in rkvdec_fill_decoded_pixfmt()
>
> Venkata Atchuta Bheemeswara Sarma Darbha (3):
>       media: rkvdec: vp9: Changing get_ref_buf function name to get_ref_buf_vp9
>       media: rkvdec: Move vp9 functions to common file
>       media: rkvdec: Add VP9 support for VDPU381 variant
>
>  drivers/media/platform/rockchip/rkvdec/Makefile    |    2 +
>  .../platform/rockchip/rkvdec/rkvdec-vdpu381-regs.h |  234 +++++
>  .../platform/rockchip/rkvdec/rkvdec-vdpu381-vp9.c  | 1067 ++++++++++++++++++++
>  .../platform/rockchip/rkvdec/rkvdec-vp9-common.c   |   65 ++
>  .../platform/rockchip/rkvdec/rkvdec-vp9-common.h   |   92 ++
>  .../media/platform/rockchip/rkvdec/rkvdec-vp9.c    |  121 +--
>  drivers/media/platform/rockchip/rkvdec/rkvdec.c    |   73 +-
>  drivers/media/platform/rockchip/rkvdec/rkvdec.h    |    1 +
>  8 files changed, 1537 insertions(+), 118 deletions(-)
> ---
> base-commit: 1229e2e57a5c2980ccd457b9b53ea0eed5a22ab3
> change-id: 20260726-b4-add-rkvdec2-vp9-vdpu381-3d1bd8fca4f5
>
> Best regards,
> --
> Venkata Atchuta Bheemeswara Sarma Darbha <vdarbha0473 at gmail.com>
>



More information about the Linux-rockchip mailing list