From patchwork Thu Nov 5 00:15:35 2020 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: 10337 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 75C3DBDB89 for ; Thu, 5 Nov 2020 00:16:13 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E1FF862C8E; Thu, 5 Nov 2020 01:16:12 +0100 (CET) Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C3CB362067 for ; Thu, 5 Nov 2020 01:16:10 +0100 (CET) X-Halon-ID: 5f815b4c-1efa-11eb-8a9c-005056917a89 Authorized-sender: niklas.soderlund@fsdn.se Received: from bismarck.berto.se (p4fca2458.dip0.t-ipconnect.de [79.202.36.88]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id 5f815b4c-1efa-11eb-8a9c-005056917a89; Thu, 05 Nov 2020 01:03:53 +0100 (CET) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 5 Nov 2020 01:15:35 +0100 Message-Id: <20201105001546.1690179-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 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 series depends on [1]. 1. [PATCH 0/9] libcamera: Add helper for controls that take effect with a delay Niklas Söderlund (11): libcamera: pipeline_handler: Remove Camera argument from request handling 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: Add helper for parameter and statistic buffers libcamera: ipu3: imgu: Allocate buffers for stats and param libcamera: ipu3: Share parameter and statistic buffers with IPA include/libcamera/internal/pipeline_handler.h | 7 +- include/libcamera/ipa/ipu3.h | 22 + include/linux/intel-ipu3.h | 2785 +++++++++++++++++ src/ipa/ipu3/ipu3.cpp | 237 ++ src/ipa/ipu3/meson.build | 21 + src/ipa/meson.build | 2 +- src/libcamera/camera.cpp | 2 +- src/libcamera/pipeline/ipu3/cio2.cpp | 28 +- src/libcamera/pipeline/ipu3/cio2.h | 5 +- src/libcamera/pipeline/ipu3/frames.cpp | 164 + src/libcamera/pipeline/ipu3/frames.h | 68 + src/libcamera/pipeline/ipu3/imgu.cpp | 57 +- src/libcamera/pipeline/ipu3/imgu.h | 13 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 208 +- src/libcamera/pipeline/ipu3/meson.build | 1 + .../pipeline/raspberrypi/raspberrypi.cpp | 8 +- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 5 +- src/libcamera/pipeline/simple/simple.cpp | 12 +- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 4 +- src/libcamera/pipeline/vimc/vimc.cpp | 4 +- src/libcamera/pipeline_handler.cpp | 14 +- 21 files changed, 3589 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