[v2,00/12] libipa: Re-work IPU3 IPA to use libipa algorithms
mbox series

Message ID 20260626-ipu3-libipa-rework-v2-0-41546e23de3e@ideasonboard.com
Headers show
Series
  • libipa: Re-work IPU3 IPA to use libipa algorithms
Related show

Message

Dan Scally June 26, 2026, 1:05 p.m. UTC
Hello all

This series builds on top of Jacopo's recent set [1] adding libipa
implementations of the AWB, LSC and CCM algorithms by adapting the
IPU3 IPA to use them. As CCM and LSC were not present for this IPA
previously, this series adds them.

I also introduce the Gamma Correction algorithm to libipa following
the theme of Jacopo's work and update the IPU3 and RkISP1 IPAs to
use it.

Tested on the IPU3 via the Surface Go2 with OV5693 and on RkISP1 via
the Debix A with and imx708.

Dan

[1] https://patchwork.libcamera.org/project/libcamera/list/?series=6013

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
---
Changes in v2:
- Added a patch converting the AGC from using separate class members
  for each colour channel's gain to a single RGB member
- Added a patch that drops the sensorInfo parameter from
  IPAIPU3::updateControls()
- Link to v1: https://lore.kernel.org/r/20260616-ipu3-libipa-rework-v1-0-d4448b54f1d8@ideasonboard.com

---
Daniel Scally (12):
      ipa: ipu3: Remove ~Awb() from source and header
      ipu3: awb: Remove CCM settings from Awb algorithm
      ipa: ipu3: Convert from separate gains to RGB<double> in AGC
      ipa: ipu3: awb: Port to the new libipa AwbAlgorithm
      ipa: ipu3: ccm: Add a Colour Correction Matrix algorithm
      ipa: libipa: Add GammaAlgorithm class
      ipa: ipu3: ToneMapping: Convert to use GammaAlgorithm
      ipa: ipu3: Add Ccm to uncalibrated.yaml
      ipa: rkisp1: goc: Re-work to use GammaAlgorithm class
      ipa: ipu3: Don't pass sensorInfo to updateControls()
      ipa: ipu3: Add IPACameraSensorInfo to IPAContext
      ipa: ipu3: Add Lens Shading Correction algorithm

 src/ipa/ipu3/algorithms/agc.cpp          |  11 +-
 src/ipa/ipu3/algorithms/agc.h            |   6 +-
 src/ipa/ipu3/algorithms/awb.cpp          | 214 ++++++++++------------
 src/ipa/ipu3/algorithms/awb.h            |  22 ++-
 src/ipa/ipu3/algorithms/ccm.cpp          | 116 ++++++++++++
 src/ipa/ipu3/algorithms/ccm.h            |  48 +++++
 src/ipa/ipu3/algorithms/lsc.cpp          | 296 +++++++++++++++++++++++++++++++
 src/ipa/ipu3/algorithms/lsc.h            |  60 +++++++
 src/ipa/ipu3/algorithms/meson.build      |   2 +
 src/ipa/ipu3/algorithms/tone_mapping.cpp |  73 ++++----
 src/ipa/ipu3/algorithms/tone_mapping.h   |  12 +-
 src/ipa/ipu3/data/uncalibrated.yaml      |   1 +
 src/ipa/ipu3/ipa_context.cpp             |  77 ++++----
 src/ipa/ipu3/ipa_context.h               |  30 ++--
 src/ipa/ipu3/ipu3.cpp                    |  29 ++-
 src/ipa/libipa/gamma.cpp                 | 257 +++++++++++++++++++++++++++
 src/ipa/libipa/gamma.h                   |  94 ++++++++++
 src/ipa/libipa/meson.build               |   2 +
 src/ipa/rkisp1/algorithms/goc.cpp        |  63 ++-----
 src/ipa/rkisp1/algorithms/goc.h          |   7 +-
 src/ipa/rkisp1/ipa_context.h             |  10 +-
 21 files changed, 1137 insertions(+), 293 deletions(-)
---
base-commit: d780e285b593dd12e950777c13f69ce0799981e1
change-id: 20260616-ipu3-libipa-rework-f2364436d42b
prerequisite-change-id: 20260615-libipa-algorithms-59666bca0a2f

Best regards,