[00/11] ipa: libipa: Introduce libipa algorithms
mbox series

Message ID 20260615-libipa-algorithms-v1-0-e949c937422e@ideasonboard.com
Headers show
Series
  • ipa: libipa: Introduce libipa algorithms
Related show

Message

Jacopo Mondi June 15, 2026, 2:05 p.m. UTC
This series introduces the first algorithms in libipa: Awb, Lsc and Ccm.

As most of the implementations of the common algorithms derive from
RkISP1 it wasn't possible to separate the algorithm introduction with
the RkISP1 IPA modifications to maintain bisectability.

This series contains:

- Awb (Grey and Bayes)
 - RkISP1
 - Simple
 - Mali-C55

- Ccm
 - RkISP1
 - Simple
 - Mali-C55

- Lsc (grid and polynomial)
 - RkISP1
 - Mali-C55

Tested on RkISP1 with imx219 (Grey world awb and grid-based LSC) and on
Mali-C55 with imx708 (Bayes AWB and grid-based LSC).

More test on Simple and with polynomial LSC would be helpful :)

Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
Jacopo Mondi (8):
      ipa: libipa: awb: Reimplement AwbAlgorithm
      ipa: mali-c55: awb: Port to use libipa AwbAlgorithm
      ipa: libipa: Add CcmAlgorithm to libipa
      ipa: rkisp1: ccm: Port to use CcmAlgorithm
      ipa: mali-c55: Implement Ccm algorithm
      ipa: libipa: Introduce LscAlgorithm
      ipa: mali-c55: Add sensorInfo to IPAContext
      ipa: mali-c55: Port to use LscAlgorithm

Kieran Bingham (3):
      softisp: Split AWB from Combined Matrix
      ipa: simple: awb: Port to use libipa AwbAlgorithm
      ipa: simple: Use libipa CcmAlgorithm

 .../internal/software_isp/debayer_params.h         |   2 +-
 src/ipa/libipa/awb.cpp                             | 562 ++++++++++++++++++---
 src/ipa/libipa/awb.h                               | 123 ++++-
 src/ipa/libipa/awb_bayes.cpp                       |  40 +-
 src/ipa/libipa/awb_bayes.h                         |  11 +-
 src/ipa/libipa/awb_grey.cpp                        |  16 +-
 src/ipa/libipa/awb_grey.h                          |   5 +-
 src/ipa/libipa/ccm.cpp                             | 273 ++++++++++
 src/ipa/libipa/ccm.h                               |  87 ++++
 src/ipa/libipa/lsc.cpp                             | 322 ++++++++++++
 src/ipa/libipa/lsc.h                               | 145 ++++++
 src/ipa/libipa/lsc_base.cpp                        | 152 ++++++
 src/ipa/libipa/lsc_base.h                          |  59 +++
 src/ipa/libipa/lsc_grid.cpp                        |  33 ++
 src/ipa/libipa/lsc_grid.h                          | 113 +++++
 src/ipa/libipa/lsc_polynomial.cpp                  | 133 ++++-
 src/ipa/libipa/lsc_polynomial.h                    | 135 +++--
 src/ipa/libipa/meson.build                         |   7 +
 src/ipa/mali-c55/algorithms/awb.cpp                | 198 ++++----
 src/ipa/mali-c55/algorithms/awb.h                  |  30 +-
 src/ipa/mali-c55/algorithms/ccm.cpp                | 175 +++++++
 src/ipa/mali-c55/algorithms/ccm.h                  |  66 +++
 src/ipa/mali-c55/algorithms/lsc.cpp                | 163 +++---
 src/ipa/mali-c55/algorithms/lsc.h                  |  38 +-
 src/ipa/mali-c55/algorithms/meson.build            |   1 +
 src/ipa/mali-c55/ipa_context.cpp                   |   6 +
 src/ipa/mali-c55/ipa_context.h                     |  30 +-
 src/ipa/mali-c55/mali-c55.cpp                      |  29 +-
 src/ipa/rkisp1/algorithms/awb.cpp                  | 225 ++-------
 src/ipa/rkisp1/algorithms/awb.h                    |  18 +-
 src/ipa/rkisp1/algorithms/ccm.cpp                  |  97 +---
 src/ipa/rkisp1/algorithms/ccm.h                    |  20 +-
 src/ipa/rkisp1/algorithms/lsc.cpp                  | 424 ++--------------
 src/ipa/rkisp1/algorithms/lsc.h                    |  45 +-
 src/ipa/rkisp1/ipa_context.h                       |  48 +-
 src/ipa/simple/algorithms/awb.cpp                  | 122 +++--
 src/ipa/simple/algorithms/awb.h                    |  29 ++
 src/ipa/simple/algorithms/ccm.cpp                  |  69 +--
 src/ipa/simple/algorithms/ccm.h                    |  23 +-
 src/ipa/simple/ipa_context.h                       |  20 +-
 src/libcamera/shaders/bayer_1x_packed.frag         |   4 +
 src/libcamera/shaders/bayer_unpacked.frag          |   4 +
 src/libcamera/software_isp/debayer_cpu.cpp         |   2 +-
 src/libcamera/software_isp/debayer_egl.cpp         |   5 +
 src/libcamera/software_isp/debayer_egl.h           |   3 +
 45 files changed, 2920 insertions(+), 1192 deletions(-)
---
base-commit: ff5cb4f17b0b9989dd853b4d4320ddb2c59a9c0e
change-id: 20260615-libipa-algorithms-59666bca0a2f

Best regards,