From patchwork Thu Feb 4 16:29:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 11150 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 38430BD162 for ; Thu, 4 Feb 2021 16:29:58 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C7F7D61430; Thu, 4 Feb 2021 17:29:57 +0100 (CET) Received: from bin-mail-out-05.binero.net (bin-mail-out-05.binero.net [195.74.38.228]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1C2A46141A for ; Thu, 4 Feb 2021 17:29:57 +0100 (CET) X-Halon-ID: 34bc010f-6706-11eb-b73f-0050569116f7 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p4fca2458.dip0.t-ipconnect.de [79.202.36.88]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id 34bc010f-6706-11eb-b73f-0050569116f7; Thu, 04 Feb 2021 17:29:55 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 4 Feb 2021 17:29:32 +0100 Message-Id: <20210204162943.268517-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 00/11] libcamera: ipu3: Attach to an skeleton IPA 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" Hello, This series adds an IPA skeleton for the IPU3 pipeline. The IPA itself supports mapping of parameter and statistic buffers as well as pushing V4L2 controls to the camera sensor. It does however not read or write anything into the buffers given to it during the capture process. It also adds all the plumbing inside IPU3 pipeline to function with an IPA while of of course retaining all the different capture setups previously supported. The idea is to prepare for adding algorithms in the IPA on-top without having to worry about all the plumbing inside the pipeline handler. This will likely happen in two steps. A first where fake algorithms are added to generate metadata to be used in further development of cam and the Android HAL. Then a follow up step where the fake ones are replaced with real ones. This is tested successfully with cam, the out of tree lc-compliance tool and webcamtests.com on Soraka. The work is tested based on [1] which at the time of writing is two commits behind master as the top two commits bumps meson requirement to v0.55 which is not available in the Soraka build environment. 1. 5b568b7e41e394b5 ("libcamera: v4l2_videodevice: remove confusing memory MMAP assignment before QUERYBUF") Niklas Söderlund (11): include: linux: Add ipu3 kernel header and format definitions libcamera: ipu3: imgu: Configure the stat video device as part of configure() libcamera: ipu3: imgu: Add parameters video device libcamera: ipu3: cio2: Return the FrameBuffer pointer used libcamera: ipu3: cio2: Generate start of frame event libcamera: ipa: ipu3: Add an IPA skeleton for the IPU3 pipeline libcamera: ipu3: Attach to an IPA and allow it to set sensor controls libcamera: ipu3: imgu: Allocate buffers for stats and param libcamera: ipu3: Map buffers in IPA libcamera: ipu3: Add helper for parameter and statistic buffers libcamera: ipu3: Share parameter and statistic buffers with IPA include/libcamera/ipa/ipu3.h | 22 + include/linux/intel-ipu3.h | 2785 +++++++++++++++++++++++ src/ipa/ipu3/ipu3.cpp | 233 ++ src/ipa/ipu3/meson.build | 21 + src/ipa/meson.build | 2 +- src/libcamera/pipeline/ipu3/cio2.cpp | 28 +- src/libcamera/pipeline/ipu3/cio2.h | 5 +- src/libcamera/pipeline/ipu3/frames.cpp | 129 ++ src/libcamera/pipeline/ipu3/frames.h | 61 + src/libcamera/pipeline/ipu3/imgu.cpp | 60 +- src/libcamera/pipeline/ipu3/imgu.h | 13 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 287 ++- src/libcamera/pipeline/ipu3/meson.build | 1 + 13 files changed, 3569 insertions(+), 78 deletions(-) create mode 100644 include/libcamera/ipa/ipu3.h create mode 100644 include/linux/intel-ipu3.h create mode 100644 src/ipa/ipu3/ipu3.cpp create mode 100644 src/ipa/ipu3/meson.build create mode 100644 src/libcamera/pipeline/ipu3/frames.cpp create mode 100644 src/libcamera/pipeline/ipu3/frames.h