Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Detlev Casanova <detlev.casanova@collabora.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>,
	 Heiko Stuebner <heiko@sntech.de>,
	 Nicolas Dufresne <nicolas.dufresne@collabora.com>,
	 Hans Verkuil <hverkuil+cisco@kernel.org>,
	Jonas Karlman <jonas@kwiboo.se>
Cc: "Sven Püschel" <s.pueschel@pengutronix.de>,
	kernel@collabora.com, linux-media@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	"Detlev Casanova" <detlev.casanova@collabora.com>
Subject: [PATCH v2 0/5] media: rkvdec: Enable multi-core support
Date: Mon, 10 Aug 2026 11:22:10 -0400	[thread overview]
Message-ID: <20260810-rkvdec-multicore-v2-0-986f89d22cdc@collabora.com> (raw)

Since the driver is used for decoding on rk3588 and that the SoC has
2 identical decoding cores, enable support for it.

Instead of exposing 2 v4l2 devices to userspace, the driver will only
expose one and handle the 2 cores transparently.

The 2 cores are able to work in parallel, but only contexts are
parallelized: 1 stream, that uses 1 context, will only be able to use
1 core as it usually needs previous frames already decoded to use as
reference frames.
To avoid complex scheduling, only different streams can use cores at the
same time.

The implementation is based on Sven Püschel's RGA multi-core support[1]
(and this patch set depends on it).
It uses the maximum parallel jobs implementation in v4l2-core and also
uses the same components mechanism to handle core probing.

A fix for the RCB (Row and Cols Buffer) size computation is also provided
as it was causing issues with some fluster tests.

The v4l2 commit is not signed as it should be part of Sven's patch set
v2.

Performance-wise, fluster doesn't seem to run much faster, but I tested
with an HEVC test video from Jellyfin and observed that frames start
dropping with 6 concurrent gstreamer instances, instead of 4 without
multi-core enabled.

[1]: https://lore.kernel.org/all/20260606-spu-rga3multicore-v1-0-3ec2b15675f7@pengutronix.de/

Changes in v2:
 - Remove job_finish/buf_done dance and use Sven's max parallel
   implementation instead.
 - Rework history to have a working driver at each commit.
 - Remove the 2 cores limitation, any number of cores can be used now.

Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
---
Detlev Casanova (5):
      media: rkvdec: Keep RCB to the correct size
      media: rkvdec: Remove unused need_reset
      v4l2: export v4l2_m2m_set_max_parallel_jobs
      media: rkvdec: Split into core and master platform drivers
      media: rkvdec: Add multicore support

 .../media/platform/rockchip/rkvdec/rkvdec-h264.c   |  17 +-
 .../media/platform/rockchip/rkvdec/rkvdec-hevc.c   |  16 +-
 .../media/platform/rockchip/rkvdec/rkvdec-rcb.c    |  77 ++-
 .../media/platform/rockchip/rkvdec/rkvdec-rcb.h    |   8 +-
 .../platform/rockchip/rkvdec/rkvdec-vdpu381-h264.c |  24 +-
 .../platform/rockchip/rkvdec/rkvdec-vdpu381-hevc.c |  24 +-
 .../platform/rockchip/rkvdec/rkvdec-vdpu383-h264.c |  24 +-
 .../platform/rockchip/rkvdec/rkvdec-vdpu383-hevc.c |  26 +-
 .../media/platform/rockchip/rkvdec/rkvdec-vp9.c    |  27 +-
 drivers/media/platform/rockchip/rkvdec/rkvdec.c    | 625 +++++++++++++++------
 drivers/media/platform/rockchip/rkvdec/rkvdec.h    |  31 +-
 drivers/media/v4l2-core/v4l2-mem2mem.c             |   1 +
 12 files changed, 596 insertions(+), 304 deletions(-)
---
base-commit: 6a75e3d4f6428b90f398354212e3a2e0172851d6
change-id: 20260408-rkvdec-multicore-98831da51072
prerequisite-change-id: 20260602-spu-rga3multicore-ae8c8caf01e9:v1
prerequisite-patch-id: 57496def46f4b8bf13d70a6f73dd9005b59d9ede
prerequisite-patch-id: e89e8a899373aaaa8cd1242d30f86a957b4d7e27
prerequisite-patch-id: d1f2bfc2a3ca3aef12a9678fe15bb93f346caf95
prerequisite-patch-id: f46ff26bb00afaf45122256d30f68464589d9943
prerequisite-patch-id: cd802c9f5c1106d08738f92a0a7c3d74fe2c89c1
prerequisite-patch-id: 1ec6b5db4df41bbe96f4ab8e83feeff1392a622f
prerequisite-patch-id: cb6a14d144c4efa77ad6396b005fa1f97d3a834e
prerequisite-patch-id: f8d48c1836f2287305d93af37a8c2fdb13c8a1d9
prerequisite-patch-id: 125ab4c4cc472f7a47f1ef41182d751b17056bf4
prerequisite-patch-id: eec4c1acdf5754b2faae9c8b18b93b8fb6b3aea3
prerequisite-patch-id: 4b4d935e09abc95aeb7e8aedffd3eb179b36d5a0
prerequisite-patch-id: 01df8a8e2a7d25a098483c03b18b6da425f63361
prerequisite-patch-id: 9a9071eca6bce3f693580756d5077d4bc8968a95
prerequisite-patch-id: e3f5d215b7207701cb331e720aada3fe504a0f8b
prerequisite-patch-id: ec44f51ffb6beb8c2b7854debc1b0b8be127d30a
prerequisite-patch-id: 14dad2504e1293cd4c5dc215ae99b2c6fc5e5877
prerequisite-patch-id: 10c6c977c0f71400931941b42da73adcaf63e810

Best regards,
--  
Detlev Casanova <detlev.casanova@collabora.com>



             reply	other threads:[~2026-08-10 15:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-10 15:22 Detlev Casanova [this message]
2026-08-10 15:22 ` [PATCH v2 1/5] media: rkvdec: Keep RCB to the correct size Detlev Casanova
2026-08-10 15:22 ` [PATCH v2 2/5] media: rkvdec: Remove unused need_reset Detlev Casanova
2026-08-10 15:22 ` [PATCH v2 3/5] v4l2: export v4l2_m2m_set_max_parallel_jobs Detlev Casanova
2026-08-10 15:22 ` [PATCH v2 4/5] media: rkvdec: Split into core and master platform drivers Detlev Casanova
2026-08-10 15:22 ` [PATCH v2 5/5] media: rkvdec: Add multicore support Detlev Casanova

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260810-rkvdec-multicore-v2-0-986f89d22cdc@collabora.com \
    --to=detlev.casanova@collabora.com \
    --cc=ezequiel@vanguardiasur.com.ar \
    --cc=heiko@sntech.de \
    --cc=hverkuil+cisco@kernel.org \
    --cc=jonas@kwiboo.se \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=nicolas.dufresne@collabora.com \
    --cc=s.pueschel@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox