Linux Media Controller development
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Bryan O'Donoghue <bod@kernel.org>
Cc: libcamera-devel@lists.libcamera.org, linux-media@vger.kernel.org
Subject: Re: [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference
Date: Sun, 20 Sep 2026 01:29:15 +0300	[thread overview]
Message-ID: <20260919222915.GB1179126@killaraus.ideasonboard.com> (raw)
In-Reply-To: <cadd6ff4-ec70-4ff9-9125-a0c4342261f6@kernel.org>

On Sat, Sep 19, 2026 at 10:45:00PM +0100, Bryan O'Donoghue wrote:
> On 18/09/2026 10:18, Laurent Pinchart wrote:
> >> There are clear benefits to having a loop of NPU/DSP to Offline ISP to
> >> Display that drm/accel seems to offer some interesting solutions to.
> > What are those interesting solutions ?
> 
> The chain I'm interested in is
> 
> Inline - V4L2 streaming
> -> Produces raw or YUV
> 
> CVP (&& ||) NPU - Likely implemented as DRM

Possibly, but that's bit very relevant from a userspace point of view.
An NPU will be controlled through a userspace stack, likely involving
Mesa if the stack is open-source, and exposed through higher-level
frameworks/APIs (TF, ONNX, ...). The fact that the kernel driver lives
in DRM won't have any impact.

> -> Produces motion vectors and/or further warps image
> 
> Offline - Sharpens, GTM, TNR (could be DRM, or v4lm2m)
> -> Produces YUV
> 
> Display - DRM

So likely OpenGL or Vulkan, involving wayland or X11. In rare cases
directly interfacing with KMS for embedded devices.

> V4L2 owning sensor -> inline engine is already supported and won't 
> change. For subsequent steps though each stage hands off in-kernel 
> without having to involve userspace.

That's fences, isn't it ?

> Given though it depends if you need user-space to "do stuff" at the 
> offline stage. If the offline stage has a firmware perhaps user-space 
> doesn't need to be involved much past setup whereas if that offline 
> stage has no firmware, then user-space really needs to drive it. The 
> difference between the OPE on-list right now without a firmware and the 
> ICP which does have a firmware.

Cases where userspace wouldn't need to be involved exist, but then
there's even less userspace involvement than you describe above. The
firmware would control all the components directly (sensor, inline and
offline stages), exposing only the end result (possibly with the ability
to additionally capture raw frames).

> Taking the example of sharing params and stats between Inline and 
> Offline - in this case you are constructing a single ISP around two 
> blocks basically in libcamera, whereas what I've described above 
> traverses several blocks and isn't really an ISP - the ISP is already @ 
> stage 1 - you have an additional fully offline block with its own 
> firmware, sessions and runtime context. Stage 1 and stage 3 don't share 
> kernel-side stats and params; they have their own isolated contexts, in 
> contrast to TFE/OPE on Agatti where its integrated and must live in a 
> dedicated libcamera pipeline.
> 
> But because you have a functional ISP @ stage 1 - the question is does 
> the firmware based offline engine provide better overall system 
> functionality as a DRM device ...

I don't see why that would be the case.

> Its actually the question I'd like to discuss with colleagues in sunny 
> Prague :)
> 
> So I think the tension comes from wanting to have the DRM scheduler but 
> acknowledging that it is probably only for some use-cases possible.
> 
> You implement the device as a DRM device, you are still free to have a 
> complex user-space context for that if that is your need - whereas if 
> you have a use-case which can tolerate non-intervention from user-space, 
> then the DRM scheduler _is_ what you want for complex hand-off from one 
> device block to the other.

Not quite. It's a matter of fences.

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2026-09-19 22:29 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <UzpC1s2YnBtZIaRCab_Y8AbCecyauDUO4OC7Nhd1-h4TE21aLSghbwDuOKgdwJQugvPMjM4foPHuL-UKnBLD6A==@protonmail.internalid>
2026-09-14 23:38 ` [ANNOUNCEMENT] Camera & ISP at Linux Plumbers Conference Laurent Pinchart
2026-09-17 13:47   ` Bryan O'Donoghue
2026-09-18  8:08     ` johannes.goede
2026-09-18  9:18     ` Laurent Pinchart
2026-09-19 21:45       ` Bryan O'Donoghue
2026-09-19 22:29         ` Laurent Pinchart [this message]
2026-09-21 11:52           ` Bryan O'Donoghue
2026-09-21 16:02             ` Nicolas Dufresne
2026-09-27  9:01   ` johannes.goede
2026-09-27  9:04   ` johannes.goede
2026-09-30 11:18   ` Stefan Klug
2026-09-30 22:01     ` Conor Dooley
2026-10-02 16:14       ` Stefan Klug
2026-10-03 14:56         ` Loic Poulain
2026-10-01 15:15     ` johannes.goede
2026-10-01 20:55       ` Laurent Pinchart
2026-10-02  6:56         ` Sakari Ailus
2026-10-02 18:31           ` Laurent Pinchart
2026-10-06 10:03             ` Sakari Ailus
     [not found]   ` <2e1d628f-8183-4446-9500-9886561f320b@mm-sol.com>
2026-09-30 23:23     ` Laurent Pinchart
2026-10-06  6:30       ` Gjorgji Rosikopulos
2026-10-01  6:19   ` Rishikesh Donadkar
2026-10-01 21:08     ` Laurent Pinchart

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=20260919222915.GB1179126@killaraus.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=bod@kernel.org \
    --cc=libcamera-devel@lists.libcamera.org \
    --cc=linux-media@vger.kernel.org \
    /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