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

Venkata Atchuta Bheemeswara Sarma Darbha vdarbha0473 at gmail.com
Sun Jul 26 13:25:33 PDT 2026


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