From patchwork Sun Apr 5 19:14:33 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 26417 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 1F062BEFBE for ; Sun, 5 Apr 2026 19:14:50 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B453862D0D; Sun, 5 Apr 2026 21:14:47 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="U9LJln6F"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id B111362D0D for ; Sun, 5 Apr 2026 21:14:46 +0200 (CEST) Received: from killaraus.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 7E6996AF for ; Sun, 5 Apr 2026 21:13:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1775416400; bh=YGfncuotm3xqlMnSeguoHw5Q00Y08xmTfCO/tvago1U=; h=From:To:Subject:Date:In-Reply-To:References:From; b=U9LJln6FjTEd8GIdKH4yZGctq/cQlyayzReThQ1ROpz1Bj4I4FQzg+Uz17H3phBB9 TeFnOnEg5ipU7o7MI4eLABLKCfU7GzTLax/YtodtuMojGyYm7dYRN4DQoHke+hPycx EVrKxN3zCuz5hSmXgyHEWtrtLKEcKM4j7oh5G9OM= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [PATCH 01/11] libcamera: software_isp: Convert TODO list to markdown Date: Sun, 5 Apr 2026 22:14:33 +0300 Message-ID: <20260405191443.1209948-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260405191443.1209948-1-laurent.pinchart@ideasonboard.com> References: <20260405191443.1209948-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" To prepare for merging the two software ISP TODO lists (TODO and gpuisp-todo.txt), convert the TODO file to markdown. Signed-off-by: Laurent Pinchart --- src/libcamera/software_isp/{TODO => TODO.md} | 50 ++++++++++++-------- utils/tuning/config-example.yaml | 2 +- 2 files changed, 32 insertions(+), 20 deletions(-) rename src/libcamera/software_isp/{TODO => TODO.md} (91%) diff --git a/src/libcamera/software_isp/TODO b/src/libcamera/software_isp/TODO.md similarity index 91% rename from src/libcamera/software_isp/TODO rename to src/libcamera/software_isp/TODO.md index f19e15ae27a0..bdd4a7421766 100644 --- a/src/libcamera/software_isp/TODO +++ b/src/libcamera/software_isp/TODO.md @@ -1,5 +1,16 @@ -2. Reconsider stats sharing +# Software ISP TODO list +This file contains the TODO list for the software ISP. + +## Common code and CPU-based implementation + +The TODO items in this section gather comments from patch review that were not +deemed to require being addressed right away. The text in block quotes is +copied directly from e-mail review. + +### Reconsider stats sharing + +``` >>> +void SwStatsCpu::finishFrame(void) >>> +{ >>> + *sharedStats_ = stats_; @@ -22,11 +33,11 @@ That would match how we deal with hardware ISPs, and I think that's a good idea. It will help decoupling the processing side from the IPA. +``` ---- - -3. Remove statsReady signal +### Remove statsReady signal +``` > class SwStatsCpu > { > /** @@ -50,11 +61,11 @@ Removing the signal and refactoring those classes doesn't have to be addressed now, I think it would be part of a larger refactoring (possibly also considering platforms that have no ISP but can produce stats in hardware, such as the i.MX7), but please keep it on your radar. +``` ---- - -5. Store ISP parameters in per-frame buffers +### Store ISP parameters in per-frame buffers +``` > /** > * \fn void Debayer::process(FrameBuffer *input, FrameBuffer *output, DebayerParams params) > * \brief Process the bayer data into the requested format. @@ -68,11 +79,11 @@ stats in hardware, such as the i.MX7), but please keep it on your radar. Possibly something to address later, by storing ISP parameters in per-frame buffers like we do for hardware ISPs. +``` ---- - -8. DebayerCpu cleanups +### DebayerCpu cleanups +``` > >> class DebayerCpu : public Debayer, public Object > >> const SharedFD &getStatsFD() { return stats_->getStatsFD(); } > > @@ -105,21 +116,21 @@ the need for performances and the need for a maintainable architecture. > I think this falls under the lets wait until we have a GPU > based SoftISP MVP/POC and then do some refactoring to see which > bits should go where. +``` ---- - -8. Decouple pipeline and IPA naming +### Decouple pipeline and IPA naming +``` > The current src/ipa/meson.build assumes the IPA name to match the > pipeline name. For this reason "-Dipas=simple" is used for the > Soft IPA module. This should be addressed. +``` ---- - -9. Doxyfile cleanup +### Doxyfile cleanup +``` >> diff --git a/Documentation/Doxyfile.in b/Documentation/Doxyfile.in >> index a86ea6c1..2be8d47b 100644 >> --- a/Documentation/Doxyfile.in @@ -160,13 +171,14 @@ Yes, because, well... all the other IPAs were doing that... > It doesn't have to be done before merging, but could you > address this sooner than later ? +``` ---- - -13. Improve black level and colour gains application +### Improve black level and colour gains application +``` I think the black level should eventually be moved before debayering, and ideally the colour gains as well. I understand the need for optimizations to lower the CPU consumption, but at the same time I don't feel comfortable building up on top of an implementation that may work a bit more by chance than by correctness, as that's not very maintainable. +``` diff --git a/utils/tuning/config-example.yaml b/utils/tuning/config-example.yaml index 5593eaef809e..680f9213b269 100644 --- a/utils/tuning/config-example.yaml +++ b/utils/tuning/config-example.yaml @@ -51,4 +51,4 @@ general: macbeth: small: 1 show: 0 -# blacklevel: 32 \ No newline at end of file +# blacklevel: 32