From patchwork Mon Jan 26 19:01:39 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 25967 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 57784C3200 for ; Mon, 26 Jan 2026 19:01:48 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0EA9761FD3; Mon, 26 Jan 2026 20:01:48 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="HHcPYjZl"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9562461FC4 for ; Mon, 26 Jan 2026 20:01:44 +0100 (CET) Received: from pendragon.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id D6C9C4BB for ; Mon, 26 Jan 2026 20:01:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769454069; bh=B7YvItmwoOoCmOkFN7pD2Z8y8BCHNXzDjsgMb5Sjl/U=; h=From:To:Subject:Date:In-Reply-To:References:From; b=HHcPYjZl3dp/YW6g7M3h9Jo6nT+ZnsMZoqB9m1Km86Chui09ZIXZ0Twl0DYaO3Ozq em+zQ+zG1Ec6P2s7HkSw6CqAZqZt28XVyQcbRIv18yI0fpvPtZltGV7VuxxALw9qLi IaxutzYjfHh0sV+hHvfXY00JbOcffBul1GqpOnQs= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [RFC/PATCH 1/3] Documentation: Reorganize the index of the "For Developers" section Date: Mon, 26 Jan 2026 21:01:39 +0200 Message-ID: <20260126190141.2410546-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260126190141.2410546-1-laurent.pinchart@ideasonboard.com> References: <20260126190141.2410546-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" The section of the index aimed at developers starts with the contribution guide, and only lists the libcamera architecture page futher down. Reorganize it to start with the "getting starting" page, which, as its name implies, is meant to be a good entry point, and continue with the architecture and guides before the more specialized documentation. Signed-off-by: Laurent Pinchart --- Documentation/index.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Documentation/index.rst b/Documentation/index.rst index 8109b4295c92..03c3d0b4aff6 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -19,12 +19,12 @@ :maxdepth: 1 :caption: For Developers - Contribute Getting Started - Camera Sensor Model - IPA Writer's guide - libcamera Architecture + Architecture Pipeline Handler Writer's Guide + IPA Writer's guide + Contribute + Camera Sensor Model SoftwareISP Benchmarking Tracing guide Design document: AE From patchwork Mon Jan 26 19:01:40 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 25968 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 E76ACC328D for ; Mon, 26 Jan 2026 19:01:49 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id F28AA61FD1; Mon, 26 Jan 2026 20:01:48 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="fMpuKw5c"; 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 161CE61A35 for ; Mon, 26 Jan 2026 20:01:46 +0100 (CET) Received: from pendragon.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 49B524BB for ; Mon, 26 Jan 2026 20:01:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769454070; bh=onB3JkpCZpW+Z2exkEQuZAW8Ik3nNYenaZQyyUSBVYc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=fMpuKw5ckHMgd+ZDBw9Ru5ZmlRsP0l5eI4ITt/OXSvuRxB6ymxgr5FhRp/qgBC4r9 8eWxpmTyq5CMDhsSJJqGtI+0XXg/3sf4oakQvLhcYkKlj5RF+aiv6NgF78NMsJeaEk YtmT06D3uQqJDlEJUcqs/4TAcydvD/UxyxCzCF+o= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [RFC/PATCH 2/3] Documentation: Move platform support to user documentation Date: Mon, 26 Jan 2026 21:01:40 +0200 Message-ID: <20260126190141.2410546-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260126190141.2410546-1-laurent.pinchart@ideasonboard.com> References: <20260126190141.2410546-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" Platform support is split in three places: a short list in the libcamera architecture document (in the developers section), a page for the ISP feature matrix, and a page for camera sensors. Centralize all this in the users section by moving the short platform support list to a standalone page, and move the other two pages as children in the index. Signed-off-by: Laurent Pinchart --- Documentation/index.rst | 5 +---- Documentation/libcamera_architecture.rst | 18 ----------------- Documentation/meson.build | 1 + Documentation/platform_support.rst | 25 ++++++++++++++++++++++++ 4 files changed, 27 insertions(+), 22 deletions(-) create mode 100644 Documentation/platform_support.rst diff --git a/Documentation/index.rst b/Documentation/index.rst index 03c3d0b4aff6..988feedf8387 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -9,8 +9,7 @@ Introduction Feature Requirements Runtime configuration - ISP feature support matrix - Camera Sensor support + Platform Support Application Writer's Guide Python Bindings Public API @@ -36,5 +35,3 @@ Lens driver requirements Sensor driver requirements - - diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst index ee67102a30a6..73888e499128 100644 --- a/Documentation/libcamera_architecture.rst +++ b/Documentation/libcamera_architecture.rst @@ -141,21 +141,3 @@ Helpers and Support Classes self-contained support classes, even if such code is present only once in the code base, in order to keep the source code clean and easy to read. This should be the case for instance for plugin management. - -Platform Support ----------------- - -The library currently supports the following hardware platforms specifically -with dedicated pipeline handlers: - - - Arm Mali-C55 - - Intel IPU3 (ipu3) - - NXP i.MX8MP (imx8-isi and rkisp1) - - RaspberryPi 3, 4 and zero (rpi/vc4) - - Rockchip RK3399 (rkisp1) - -Furthermore, generic platform support is provided for the following: - - - USB video device class cameras (uvcvideo) - - iMX7, IPU6, Allwinner Sun6i (simple) - - Virtual media controller driver for test use cases (vimc) diff --git a/Documentation/meson.build b/Documentation/meson.build index 51899c19c166..a156bd0b9ca7 100644 --- a/Documentation/meson.build +++ b/Documentation/meson.build @@ -168,6 +168,7 @@ if sphinx.found() 'lens_driver_requirements.rst', 'libcamera_architecture.rst', 'mali-c55.dot', + 'platform_support.rst', 'public-api/index.rst', 'python-bindings.rst', 'runtime_configuration.rst', diff --git a/Documentation/platform_support.rst b/Documentation/platform_support.rst new file mode 100644 index 000000000000..2c3d62cb7e2c --- /dev/null +++ b/Documentation/platform_support.rst @@ -0,0 +1,25 @@ +.. SPDX-License-Identifier: CC-BY-SA-4.0 + +Platform Support +================ + +The library currently supports the following hardware platforms specifically +with dedicated pipeline handlers: + + - Arm Mali-C55 + - Intel IPU3 (ipu3) + - NXP i.MX8MP (imx8-isi and rkisp1) + - RaspberryPi 3, 4 and zero (rpi/vc4) + - Rockchip RK3399 (rkisp1) + +Furthermore, generic platform support is provided for the following: + + - USB video device class cameras (uvcvideo) + - iMX7, IPU6, Allwinner Sun6i (simple) + - Virtual media controller driver for test use cases (vimc) + +.. toctree:: + :hidden: + + ISP feature support matrix + Camera Sensor support From patchwork Mon Jan 26 19:01:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 25969 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 64276C3200 for ; Mon, 26 Jan 2026 19:01:52 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 17C3B61FC9; Mon, 26 Jan 2026 20:01:52 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="wKvy3IMR"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 51F9961A35 for ; Mon, 26 Jan 2026 20:01:47 +0100 (CET) Received: from pendragon.ideasonboard.com (2001-14ba-703d-e500--2a1.rev.dnainternet.fi [IPv6:2001:14ba:703d:e500::2a1]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 94F211AE2 for ; Mon, 26 Jan 2026 20:01:11 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769454071; bh=xC5Ps4nn24E9cC02PUx4CpNFDZy8mobPtSh+0Zpgnbk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=wKvy3IMRA0SKmjn/IijAuNdQQXkBrTEI3twAySRDWnzFDGC3svTT53l0X9CZUVhL/ Jrho+NyDeoSHDSja1BP4HQggQIFWCrveWOcyI0lwmv5h2iUxqIa9sSioR4IvVaEJ49 HpUU3ltNYscn1kRDer0kB+7IiJIwkIrKaPzNjVCw= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Subject: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on dependencies Date: Mon, 26 Jan 2026 21:01:41 +0200 Message-ID: <20260126190141.2410546-4-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260126190141.2410546-1-laurent.pinchart@ideasonboard.com> References: <20260126190141.2410546-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" libcamera has a policy on usage of 3rd party components that has never been documented. Detail it in the architecture documentation page, with an explicit description of the licensing requirements. Signed-off-by: Laurent Pinchart --- Documentation/libcamera_architecture.rst | 41 +++++++++++++++++------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst index 73888e499128..417ecf02c5f3 100644 --- a/Documentation/libcamera_architecture.rst +++ b/Documentation/libcamera_architecture.rst @@ -112,18 +112,19 @@ Image Processing Algorithms and control hardware image processing based on the parameters supplied by upper layers, closing the control loop of the ISP. - IPAs are loaded as external plugins named IPA Modules. IPA Modules can be part - of the libcamera code base or provided externally by camera vendors as - open-source or closed-source components. + IPAs are loaded as external plugins named IPA Modules. IPA Modules can be + part of the libcamera code base or provided externally by camera vendors. + In-tree IPA modules are covered by the same license as the rest of libcamera, + external IPA modules can be open-source or closed-source. - Open source IPA Modules built with libcamera are run in the same process space - as libcamera. External IPA Modules are run in a separate sandboxed process. In - either case, they can only interact with libcamera through the API provided by - the Pipeline Handler. They have a restricted view of the system, with no direct - access to kernel camera devices, no access to networking APIs, and limited - access to file systems. All their accesses to image and metadata are mediated - by dmabuf instances explicitly passed by the Pipeline Handler to the IPA - Module. + IPA Modules built with libcamera are run in the same process space as the + library. External IPA Modules are run in a separate sandboxed process. In + either case, they can only interact with libcamera through the API provided + by the Pipeline Handler. They have a restricted view of the system, with no + direct access to kernel camera devices, no access to networking APIs, and + limited access to file systems. All their accesses to image and metadata are + mediated by dmabuf instances explicitly passed by the Pipeline Handler to the + IPA Module. IPA Modules are only required for platforms and devices with an ISP controlled by the host CPU. Camera sensors which have an integrated ISP are not @@ -141,3 +142,21 @@ Helpers and Support Classes self-contained support classes, even if such code is present only once in the code base, in order to keep the source code clean and easy to read. This should be the case for instance for plugin management. + +Dependencies +------------ + +As a system component, libcamera tries to minimize its dependency on +third-party libraries. New dependencies are evaluated on a case-by-case basis, +to balance the value they bring with the impact on distributions. Dependencies +for optional features must be conditioned by a meson feature option, as usage +of dependencies based only on auto-detection hinders reproducible builds and +dependency management for distributions. All dependencies must be compatible +with the libcamera license. + +Dependencies may not be used to load closed-source components from pipeline +handlers or in-tree IPA modules. This includes GPU shaders or neural network +models. Usage of closed-source components is permitted in external IPA Modules +only. Pipeline handlers and in-tree IPA Modules are allowed to use neural +networks provided that both the model and its training data are available under +an open-source license compatible with libcamera.