From patchwork Mon Jun 15 14:05:25 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 26877 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 0AFEFC324C for ; Mon, 15 Jun 2026 14:05:50 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7CFEF623E4; Mon, 15 Jun 2026 16:05:48 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Tm7Khxxf"; 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 F0075623CB for ; Mon, 15 Jun 2026 16:05:46 +0200 (CEST) Received: from [192.168.1.104] (net-93-65-100-155.cust.vodafonedsl.it [93.65.100.155]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id DEAA5241; Mon, 15 Jun 2026 16:05:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1781532314; bh=cHjv+GLGgbQPhg8VfcfAhjjSFgJFFsggvFgS4dVWgj0=; h=From:Subject:Date:To:Cc:From; b=Tm7Khxxff6m0729FiwWLDn/wlywEzMxjlLWYBMqriCT/nhu0JVtb4NV/u0/XrmmQH zZQvA26QRKQCcH8Hr2XO3tw7npO7AL95aF6zrFV2NUCbAUyH2kgney5uu9FHIQaAIB kpjgtikbBYdTCri5Vyl6EfGAmfTwm9mvNZI8UZHo= From: Jacopo Mondi Subject: [PATCH 00/11] ipa: libipa: Introduce libipa algorithms Date: Mon, 15 Jun 2026 16:05:25 +0200 Message-Id: <20260615-libipa-algorithms-v1-0-e949c937422e@ideasonboard.com> MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAKUGMGoC/x3MQQqAIBBA0avErBNMaKCuEi0mG3XALDQiiO6et HyL/x8onIULjM0DmS8psqeKrm3ABkqelazVYLRBjV2voixykKLo9yxn2IrqB0RcLGkyDmp3ZHZ y/89pft8P3zDbm2MAAAA= X-Change-ID: 20260615-libipa-algorithms-59666bca0a2f To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , Kieran Bingham X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4431; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=cHjv+GLGgbQPhg8VfcfAhjjSFgJFFsggvFgS4dVWgj0=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBqMAa4vlSf9gJTHlR1F1f4MwPXDNnb0sW+iknvK bJ6Gh3I8D+JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCajAGuAAKCRByNAaPFqFW PA7qD/40Zm5j3j4R2ORwZTaKSNHx+fnnK1IRGhP7aWTdVGew2nOxr1JXB5LfRIlVtdbGaCigQNP 1ipo4injNUNc8cEGpINr3B3WFycJX4snAacy8dUcaiGRglHox9iEbduPlN3HbGrrm7rIFW6T50O 6hos3F09USOHY5qcHAW44frYwsLPueHZxqmcZIQi56pBKp9h/h/bC1L3ZcE7ZSn7GiJSL4a5+h3 09UKb/fZAk2z1cExWPryAEPOR0hjqSh4qrFRP22+qvAEJv/UkrP8ZPvYH9rnUOjmSG7EPmQ/GxD 18y4CkQdNayJXZ4I5OjhPPPEobUYjgWRFbEQKcpRBlA0DNhC48rGJS7j4GiXq1inir+vZ9YdmXP CKz+47/hQ2vNwrj5GxO0S+83E3OesQ3UHFL97g/N/jPJPWzELAnHfpFP2CE1gV5k9wkjXIKSJHI OP1vXS9wqPuqp95LlCQ9BWbyn6/IbnEZ2tQ+RpYbfokdMxjkoAJYzLep5qVNEgEWiIGk0Ss0JRv OzFP8PRv8Gl/winIlRZbIZEVaV6vYsE0rB3ADx6Wli16edC5Rl9w7UUfz7oBp2rVw/itI43nemy qMNSD/mdKq8r7aFWu/dpWT6HgkdoFRT4P4CLoFi6LyoNGjtZaTVLNlnX5I64pW210ZESCAJt39q W0KDCqCIYirHY1Q== 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 --- Jacopo Mondi (8): 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 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 (3): softisp: Split AWB from Combined Matrix ipa: simple: awb: Port to use libipa AwbAlgorithm ipa: simple: Use libipa CcmAlgorithm .../internal/software_isp/debayer_params.h | 2 +- src/ipa/libipa/awb.cpp | 562 ++++++++++++++++++--- src/ipa/libipa/awb.h | 123 ++++- src/ipa/libipa/awb_bayes.cpp | 40 +- src/ipa/libipa/awb_bayes.h | 11 +- src/ipa/libipa/awb_grey.cpp | 16 +- src/ipa/libipa/awb_grey.h | 5 +- src/ipa/libipa/ccm.cpp | 273 ++++++++++ src/ipa/libipa/ccm.h | 87 ++++ src/ipa/libipa/lsc.cpp | 322 ++++++++++++ src/ipa/libipa/lsc.h | 145 ++++++ src/ipa/libipa/lsc_base.cpp | 152 ++++++ 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 | 133 ++++- src/ipa/libipa/lsc_polynomial.h | 135 +++-- src/ipa/libipa/meson.build | 7 + src/ipa/mali-c55/algorithms/awb.cpp | 198 ++++---- src/ipa/mali-c55/algorithms/awb.h | 30 +- src/ipa/mali-c55/algorithms/ccm.cpp | 175 +++++++ src/ipa/mali-c55/algorithms/ccm.h | 66 +++ src/ipa/mali-c55/algorithms/lsc.cpp | 163 +++--- src/ipa/mali-c55/algorithms/lsc.h | 38 +- src/ipa/mali-c55/algorithms/meson.build | 1 + src/ipa/mali-c55/ipa_context.cpp | 6 + src/ipa/mali-c55/ipa_context.h | 30 +- src/ipa/mali-c55/mali-c55.cpp | 29 +- src/ipa/rkisp1/algorithms/awb.cpp | 225 ++------- src/ipa/rkisp1/algorithms/awb.h | 18 +- src/ipa/rkisp1/algorithms/ccm.cpp | 97 +--- src/ipa/rkisp1/algorithms/ccm.h | 20 +- src/ipa/rkisp1/algorithms/lsc.cpp | 424 ++-------------- src/ipa/rkisp1/algorithms/lsc.h | 45 +- src/ipa/rkisp1/ipa_context.h | 48 +- src/ipa/simple/algorithms/awb.cpp | 122 +++-- src/ipa/simple/algorithms/awb.h | 29 ++ src/ipa/simple/algorithms/ccm.cpp | 69 +-- src/ipa/simple/algorithms/ccm.h | 23 +- src/ipa/simple/ipa_context.h | 20 +- src/libcamera/shaders/bayer_1x_packed.frag | 4 + src/libcamera/shaders/bayer_unpacked.frag | 4 + src/libcamera/software_isp/debayer_cpu.cpp | 2 +- src/libcamera/software_isp/debayer_egl.cpp | 5 + src/libcamera/software_isp/debayer_egl.h | 3 + 45 files changed, 2920 insertions(+), 1192 deletions(-) --- base-commit: ff5cb4f17b0b9989dd853b4d4320ddb2c59a9c0e change-id: 20260615-libipa-algorithms-59666bca0a2f Best regards,