From patchwork Fri Nov 13 16:40:33 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 28887 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 99940C3304 for ; Fri, 13 Nov 2026 16:41:01 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B5F136A814; Fri, 13 Nov 2026 17:40:59 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="gxePk4Ts"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BB532690A0 for ; Fri, 13 Nov 2026 17:40:57 +0100 (CET) Received: from pb-laptop.local (185.221.140.49.nat.pool.zt.hu [185.221.140.49]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EA84A219 for ; Fri, 13 Nov 2026 17:38:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1794587913; bh=BA45pG841QIKZqR/4VL+w//DVj6YX5pCsb3VRcZCilo=; h=From:To:Subject:Date:From; b=gxePk4TsSNtCwm/GdSI/fjfBbgZ73BS70QmEDaSeDxYBW8Iw5nO+/axLsZPZP4Bs9 F800Aw2IZ+gfoK5ItelxChJ+GmsiUHpIzUvgpA/Q0Bt5bjbMRd3ZW/GdvmP7G832zU ksFNILCjlnLzP0HEL5c0+iH71cNisUUtxY9b0338= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [PATCH v4 00/21] libcamera: rcar-gen4 + rpp-x1 Date: Fri, 13 Nov 2026 17:40:33 +0100 Message-ID: <20261113164054.267164-1-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.56.1 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" This is the first prototype implementation of the rppx1 ipa module based on the new kernel uapi. It is the spiritual continuation of * https://patchwork.libcamera.org/cover/26915/ * https://patchwork.libcamera.org/cover/24304/ But it includes both the pipeline handler and ipa components, rebased on the current master branch. The corresponding kernel branch is here: https://git.ideasonboard.com/renesas-v4h-isp/linux/src/branch/pobrn/rppx1 This has been an R-Car V4H Sparrow-Hawk device with the imx708 (and imx219) sensor(s). Some points: * the isp always runs, even when only a raw stream is getting captured, this also means metadata is generated and controls exist, even if they have no visible effect; this has been like this in previous versions, so I did not change it changes in v4: * [9/21] is a new change * no significant changes other than that * mainly rebasing and addressing review comments v3: https://patchwork.libcamera.org/cover/28338/ Barnabás Pőcze (10): ipa: libipa: fixedpoint: Shift unsigned type for scaling ipa: libipa: quantized: Make floating point type customizable ipa: libipa: quantized: Use `double` when necessary ipa: libipa: awb: Log rgb means immediately ipa: libipa: awb_bayes: Fix initial max value ipa: libipa: gamma: Static assert lookup node count ipa: libipa: gamma: Accept const segment lengths ipa: libipa: gamma: Use `std::optional` for segment lengths ipa: libipa: ccm: Use 32-bit offsets ipa: rppx1: Add uncalibrated tuning file Jacopo Mondi (9): include: linux: Update to Linux 7.3-rc3 ipa: rppx1: blc: Add ipa: rppx1: agc: Add ipa: rppx1: awb: Add ipa: rppx1: lux: Add ipa: rppx1: ccm: Add ipa: rppx1: gamma: Add ipa: rppx1: gsl: Add ipa: rppx1: lsc: Add Jai Luthra (1): ipa: rppx1: Add Niklas Söderlund (1): libcamera: pipeline: Add R-Car Gen4 ISP pipeline Documentation/Doxyfile-common.in | 1 + include/libcamera/ipa/meson.build | 1 + include/libcamera/ipa/rppx1.mojom | 40 + include/linux/README | 2 +- include/linux/drm.h | 7 + include/linux/drm_fourcc.h | 244 ++++- include/linux/drm_mode.h | 1 + include/linux/media/dreamchip/rppx1-config.h | 730 +++++++++++++++ include/linux/rkisp1-config.h | 113 ++- include/linux/v4l2-controls.h | 2 + include/linux/videodev2.h | 4 + meson.build | 1 + meson_options.txt | 3 +- src/ipa/ipu3/algorithms/ccm.cpp | 2 +- src/ipa/libipa/awb.cpp | 12 +- src/ipa/libipa/awb_bayes.cpp | 2 +- src/ipa/libipa/ccm.cpp | 2 +- src/ipa/libipa/ccm.h | 4 +- src/ipa/libipa/fixedpoint.cpp | 7 +- src/ipa/libipa/fixedpoint.h | 28 +- src/ipa/libipa/gamma.cpp | 85 +- src/ipa/libipa/gamma.h | 17 +- src/ipa/libipa/quantized.cpp | 10 +- src/ipa/libipa/quantized.h | 14 +- src/ipa/meson.build | 1 + src/ipa/rkisp1/algorithms/ccm.cpp | 2 +- src/ipa/rkisp1/algorithms/goc.cpp | 2 +- src/ipa/rppx1/algorithms/agc.cpp | 349 +++++++ src/ipa/rppx1/algorithms/agc.h | 47 + src/ipa/rppx1/algorithms/algorithm.h | 22 + src/ipa/rppx1/algorithms/awb.cpp | 272 ++++++ src/ipa/rppx1/algorithms/awb.h | 48 + src/ipa/rppx1/algorithms/blc.cpp | 111 +++ src/ipa/rppx1/algorithms/blc.h | 41 + src/ipa/rppx1/algorithms/ccm.cpp | 112 +++ src/ipa/rppx1/algorithms/ccm.h | 45 + src/ipa/rppx1/algorithms/gamma.cpp | 89 ++ src/ipa/rppx1/algorithms/gamma.h | 43 + src/ipa/rppx1/algorithms/gsl.cpp | 150 +++ src/ipa/rppx1/algorithms/gsl.h | 35 + src/ipa/rppx1/algorithms/lsc.cpp | 275 ++++++ src/ipa/rppx1/algorithms/lsc.h | 58 ++ src/ipa/rppx1/algorithms/lux.cpp | 76 ++ src/ipa/rppx1/algorithms/lux.h | 36 + src/ipa/rppx1/algorithms/meson.build | 12 + src/ipa/rppx1/data/meson.build | 9 + src/ipa/rppx1/data/uncalibrated.yaml | 11 + src/ipa/rppx1/ipa_context.cpp | 37 + src/ipa/rppx1/ipa_context.h | 106 +++ src/ipa/rppx1/meson.build | 31 + src/ipa/rppx1/module.h | 29 + src/ipa/rppx1/params.h | 112 +++ src/ipa/rppx1/rppx1.cpp | 293 ++++++ src/ipa/rppx1/stats.h | 62 ++ src/libcamera/pipeline/rcar-gen4/frames.cpp | 264 ++++++ src/libcamera/pipeline/rcar-gen4/frames.h | 84 ++ src/libcamera/pipeline/rcar-gen4/isp.cpp | 194 ++++ src/libcamera/pipeline/rcar-gen4/isp.h | 39 + src/libcamera/pipeline/rcar-gen4/meson.build | 8 + .../pipeline/rcar-gen4/rcar-gen4.cpp | 880 ++++++++++++++++++ src/libcamera/pipeline/rcar-gen4/vin.cpp | 177 ++++ src/libcamera/pipeline/rcar-gen4/vin.h | 54 ++ test/ipa/libipa/quantized.cpp | 8 +- utils/update-kernel-headers.sh | 1 + 64 files changed, 5459 insertions(+), 98 deletions(-) create mode 100644 include/libcamera/ipa/rppx1.mojom create mode 100644 include/linux/media/dreamchip/rppx1-config.h create mode 100644 src/ipa/rppx1/algorithms/agc.cpp create mode 100644 src/ipa/rppx1/algorithms/agc.h create mode 100644 src/ipa/rppx1/algorithms/algorithm.h create mode 100644 src/ipa/rppx1/algorithms/awb.cpp create mode 100644 src/ipa/rppx1/algorithms/awb.h create mode 100644 src/ipa/rppx1/algorithms/blc.cpp create mode 100644 src/ipa/rppx1/algorithms/blc.h create mode 100644 src/ipa/rppx1/algorithms/ccm.cpp create mode 100644 src/ipa/rppx1/algorithms/ccm.h create mode 100644 src/ipa/rppx1/algorithms/gamma.cpp create mode 100644 src/ipa/rppx1/algorithms/gamma.h create mode 100644 src/ipa/rppx1/algorithms/gsl.cpp create mode 100644 src/ipa/rppx1/algorithms/gsl.h create mode 100644 src/ipa/rppx1/algorithms/lsc.cpp create mode 100644 src/ipa/rppx1/algorithms/lsc.h create mode 100644 src/ipa/rppx1/algorithms/lux.cpp create mode 100644 src/ipa/rppx1/algorithms/lux.h create mode 100644 src/ipa/rppx1/algorithms/meson.build create mode 100644 src/ipa/rppx1/data/meson.build create mode 100644 src/ipa/rppx1/data/uncalibrated.yaml create mode 100644 src/ipa/rppx1/ipa_context.cpp create mode 100644 src/ipa/rppx1/ipa_context.h create mode 100644 src/ipa/rppx1/meson.build create mode 100644 src/ipa/rppx1/module.h create mode 100644 src/ipa/rppx1/params.h create mode 100644 src/ipa/rppx1/rppx1.cpp create mode 100644 src/ipa/rppx1/stats.h create mode 100644 src/libcamera/pipeline/rcar-gen4/frames.cpp create mode 100644 src/libcamera/pipeline/rcar-gen4/frames.h create mode 100644 src/libcamera/pipeline/rcar-gen4/isp.cpp create mode 100644 src/libcamera/pipeline/rcar-gen4/isp.h create mode 100644 src/libcamera/pipeline/rcar-gen4/meson.build create mode 100644 src/libcamera/pipeline/rcar-gen4/rcar-gen4.cpp create mode 100644 src/libcamera/pipeline/rcar-gen4/vin.cpp create mode 100644 src/libcamera/pipeline/rcar-gen4/vin.h --- 2.56.1