[libcamera-devel,v4,00/11] libcamera: ipu3: Attach to an skeleton IPA
mbox series

Message ID 20210204232613.494121-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: ipu3: Attach to an skeleton IPA
Related show

Message

Niklas Söderlund Feb. 4, 2021, 11:26 p.m. UTC
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            |   23 +
 include/linux/intel-ipu3.h              | 2785 +++++++++++++++++++++++
 src/ipa/ipu3/ipu3.cpp                   |  242 ++
 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  |  136 ++
 src/libcamera/pipeline/ipu3/frames.h    |   62 +
 src/libcamera/pipeline/ipu3/imgu.cpp    |   60 +-
 src/libcamera/pipeline/ipu3/imgu.h      |   13 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp    |  294 ++-
 src/libcamera/pipeline/ipu3/meson.build |    1 +
 13 files changed, 3594 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