From patchwork Tue Jun 23 13:54:55 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 27011 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 A3EE0C3306 for ; Tue, 23 Jun 2026 13:55:13 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DD58A657A0; Tue, 23 Jun 2026 15:55:11 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="JrnqxGNK"; 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 EE23965788 for ; Tue, 23 Jun 2026 15:55:09 +0200 (CEST) Received: from [192.168.1.7] (net-93-65-100-155.cust.vodafonedsl.it [93.65.100.155]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 2213DEAA; Tue, 23 Jun 2026 15:54:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1782222871; bh=Eq/xhHdsIAE41XoYPNM8IQZQMUjKkNlcaT87AdoFhC4=; h=From:Subject:Date:To:Cc:From; b=JrnqxGNKIQV1M1x81z7e0S7pcbPWVw95b0Y3DjSRjAlgBssL+MCiVGAM+erWZKvW4 zOHK2+BUe5IJ6oiCLzcikAjT5JcUqKFYJ9QbHAvVTwUhe1AMQ3wH34zSk3qnVVIDkI OG39GJ9lk+d4vN2/J4xHq9qSRt0K0gve5VB/Re/Q= From: Jacopo Mondi Subject: [PATCH v2 00/11] ipa: libipa: Introduce libipa algorithms Date: Tue, 23 Jun 2026 15:54:55 +0200 Message-Id: <20260623-libipa-algorithms-v2-0-f97433f12e4e@ideasonboard.com> MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAC+QOmoC/32NQQqDMBBFryKzbkpMNSVd9R7FxSSOOqBGEgktk rs39QBdvgf//QMiBaYIj+qAQIkj+7WAulTgJlxHEtwXBiWVlrpuxcyWNxQ4jz7wPi1RtEZrbR1 KVAOU3RZo4PfZfHWFJ467D5/zItU/+6+WaiEFmcY4c7s3StGTe8LoV+sx9FfnF+hyzl8u9C3Gu QAAAA== X-Change-ID: 20260615-libipa-algorithms-59666bca0a2f To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , Kieran Bingham , Daniel Scally X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4644; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=Eq/xhHdsIAE41XoYPNM8IQZQMUjKkNlcaT87AdoFhC4=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBqOpA5E0llKlfdFnZEYGVoBdcdZHTV0bX2QztgP hv3yxZsaZOJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCajqQOQAKCRByNAaPFqFW PKxjEADFaDhO1pnmadx5lBgegnXaeboNsCCTY3VH4wz0+WwEngI40foGqcDvdrWA0MgEa2/GeR1 Qqc0vislB8BhB3u70xbggAh1FfyEpDwPHhQ1dU+mezJaE0pD9slBOwF9E441oHSmYOUQlanH9im 2KB+P/l6sqvv4wq9C0xvHVqiKxmx27zU1c3WoaDjJbiwzU5LjUafaCSRsux16zZ4yGsiYJp0It0 wQKKMLydRhQzIIERpm6LpsR+UXVcAju7J3jMFrEeBG4tATxDqwzLVDx1NX5dOWkfW02faY3gkc8 vOvrBwtoszSpz9EqY4O/GG7ybm93unDH1kAiAh3uaAPqzvWlZm8fOcaMnwjQt958vGW/i4fkAdp 1fz7EEE8nU6thvcHfY0ABY1lS4SONP6x3eNkXPNolT2bQhLMGxLfZb1wf9X/3okdHKbnar+4iL5 AMqfEq+aRP5IZ/k9GoebZS90zGsH5gPiORlJ8Rv0/4TG7OdF3pFzpq/rdYP9tmoT/+tVhIQp5at XC7jS1wPvzEt+U7EogrqIZJ9m3gK0dLpLQslHJUFGAyHYJ5TvqjWyCJjqXw5b1M4gX0C5jSuxqC oSMSjv5iipuZtV2opYs1QlBjHOcEyo5oZ17V7Z0pj7AJHCBCEkFNjKJK0+8GzvWo5XtkPyNEI7L SUGVvWrgqSjk3aA== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B 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" This series introduces the first algorithms in libipa: Awb, Lsc and Ccm. As most of the implementations of the common algorithms derive from RkISP1 it wasn't possible to separate the algorithm introduction with the RkISP1 IPA modifications to maintain bisectability. This series contains: - Awb (Grey and Bayes) - RkISP1 - Simple - Mali-C55 - Ccm - RkISP1 - Simple - Mali-C55 - Lsc (grid and polynomial) - RkISP1 - Mali-C55 Tested on RkISP1 with imx219 (Grey world awb and grid-based LSC) and on Mali-C55 with imx708 (Bayes AWB and grid-based LSC). More test on Simple and with polynomial LSC would be helpful :) Signed-off-by: Jacopo Mondi --- Changes in v2: - Introduce awb::Context to simplify ActiveState and FrameContext definition - Add mali uAPI header for CCM and Gamma - Do not rename Mali functions for hardware configuration in awb and lsc - Spelling and documentation --- Jacopo Mondi (9): ipa: libipa: awb: Reimplement AwbAlgorithm ipa: mali-c55: awb: Port to use libipa AwbAlgorithm ipa: libipa: Add CcmAlgorithm to libipa ipa: rkisp1: ccm: Port to use CcmAlgorithm include: linux: mali-c55: Update to support CCM and Gamma ipa: mali-c55: Implement Ccm algorithm ipa: libipa: Introduce LscAlgorithm ipa: mali-c55: Add sensorInfo to IPAContext ipa: mali-c55: Port to use LscAlgorithm Kieran Bingham (2): ipa: simple: awb: Port to use libipa AwbAlgorithm ipa: simple: Use libipa CcmAlgorithm .../internal/software_isp/debayer_params.h | 4 +- include/linux/media/arm/mali-c55-config.h | 85 +++- src/ipa/libipa/awb.cpp | 527 ++++++++++++++++++--- src/ipa/libipa/awb.h | 114 ++++- src/ipa/libipa/awb_bayes.cpp | 42 +- src/ipa/libipa/awb_bayes.h | 11 +- src/ipa/libipa/awb_grey.cpp | 25 +- src/ipa/libipa/awb_grey.h | 5 +- src/ipa/libipa/ccm.cpp | 245 ++++++++++ src/ipa/libipa/ccm.h | 77 +++ src/ipa/libipa/lsc.cpp | 324 +++++++++++++ src/ipa/libipa/lsc.h | 145 ++++++ src/ipa/libipa/lsc_base.cpp | 155 ++++++ src/ipa/libipa/lsc_base.h | 59 +++ src/ipa/libipa/lsc_grid.cpp | 33 ++ src/ipa/libipa/lsc_grid.h | 113 +++++ src/ipa/libipa/lsc_polynomial.cpp | 154 +++++- src/ipa/libipa/lsc_polynomial.h | 147 +++--- src/ipa/libipa/meson.build | 7 + src/ipa/mali-c55/algorithms/awb.cpp | 193 ++++---- src/ipa/mali-c55/algorithms/awb.h | 28 +- src/ipa/mali-c55/algorithms/ccm.cpp | 175 +++++++ src/ipa/mali-c55/algorithms/ccm.h | 66 +++ src/ipa/mali-c55/algorithms/lsc.cpp | 156 +++--- src/ipa/mali-c55/algorithms/lsc.h | 32 +- src/ipa/mali-c55/algorithms/meson.build | 1 + src/ipa/mali-c55/ipa_context.cpp | 6 + src/ipa/mali-c55/ipa_context.h | 24 +- src/ipa/mali-c55/mali-c55.cpp | 29 +- src/ipa/mali-c55/params.h | 2 + src/ipa/rkisp1/algorithms/awb.cpp | 223 ++------- src/ipa/rkisp1/algorithms/awb.h | 18 +- src/ipa/rkisp1/algorithms/ccm.cpp | 97 +--- src/ipa/rkisp1/algorithms/ccm.h | 17 +- src/ipa/rkisp1/algorithms/lsc.cpp | 421 +++------------- src/ipa/rkisp1/algorithms/lsc.h | 45 +- src/ipa/rkisp1/ipa_context.h | 49 +- src/ipa/simple/algorithms/awb.cpp | 111 +++-- src/ipa/simple/algorithms/awb.h | 29 ++ src/ipa/simple/algorithms/blc.cpp | 2 +- src/ipa/simple/algorithms/ccm.cpp | 69 +-- src/ipa/simple/algorithms/ccm.h | 23 +- src/ipa/simple/ipa_context.h | 15 +- src/libcamera/software_isp/debayer_cpu.cpp | 12 +- 44 files changed, 2920 insertions(+), 1195 deletions(-) --- base-commit: d780e285b593dd12e950777c13f69ce0799981e1 change-id: 20260615-libipa-algorithms-59666bca0a2f Best regards,