[v3,00/11] Add Mali-C55 IPA Module and Algorithms
mbox series

Message ID 20241107114819.57599-1-dan.scally@ideasonboard.com
Headers show
Series
  • Add Mali-C55 IPA Module and Algorithms
Related show

Message

Dan Scally Nov. 7, 2024, 11:48 a.m. UTC
Hello all

This series adds an IPA Module to go with the Mali-C55 ISP's pipeline handler.
Algorithms are included for Black Level Correction, Auto-Exposure and Gain, Auto
White Balance and Lens Shading Correction. A tuning file for the IXM415 sensor
is also included.

The series is based on the "Miscellaneous Mali-C55 Pipeline Fixes" set and the
"Centralise common functions in IPA modules​" set.

The pipeline handler / IPA module implemented following application of this
patchset is developed using version 8 of the Mali-C55 ISP driver currently on
the linux-media mailing list [1]

Thanks
Dan

Series level changes:

	- A new patch adds the unsigned Q format helpers

[1] https://lore.kernel.org/linux-media/20241106100534.768400-1-dan.scally@ideasonboard.com/T/#t

Daniel Scally (9):
  ipa: helpers: Add Unsigned Q(m, n) helpers
  include: linux: Add mali-c55-config.h
  include: linux: Add Mali-C55 Stats and Params V4L2 format
  libcamera: mali-c55: Acquire and plumb in 3a params and stats
  ipa: mali-c55: Add Mali-C55 ISP IPA module
  ipa: mali-c55: Add Agc algorithm
  ipa: mali-c55: Add AWB Algorithm
  ipa: mali-c55: Add Lens Shading Correction algorithm
  ipa: mali-c55: Add IMX415 tuning data file

Jacopo Mondi (2):
  mali-c55: Plumb the IPA module in
  ipa: mali-c55: Add BLC Algorithm

 Documentation/Doxyfile-common.in             |   1 +
 include/libcamera/ipa/mali-c55.mojom         |  34 +
 include/libcamera/ipa/meson.build            |   1 +
 include/linux/mali-c55-config.h              | 909 +++++++++++++++++++
 include/linux/videodev2.h                    |   3 +
 meson_options.txt                            |   2 +-
 src/ipa/libipa/helpers.cpp                   |  29 +
 src/ipa/libipa/helpers.h                     |   2 +
 src/ipa/mali-c55/algorithms/agc.cpp          | 409 +++++++++
 src/ipa/mali-c55/algorithms/agc.h            |  81 ++
 src/ipa/mali-c55/algorithms/algorithm.h      |  39 +
 src/ipa/mali-c55/algorithms/awb.cpp          | 230 +++++
 src/ipa/mali-c55/algorithms/awb.h            |  40 +
 src/ipa/mali-c55/algorithms/blc.cpp          | 140 +++
 src/ipa/mali-c55/algorithms/blc.h            |  42 +
 src/ipa/mali-c55/algorithms/lsc.cpp          | 216 +++++
 src/ipa/mali-c55/algorithms/lsc.h            |  45 +
 src/ipa/mali-c55/algorithms/meson.build      |   8 +
 src/ipa/mali-c55/data/imx415.yaml            | 325 +++++++
 src/ipa/mali-c55/data/meson.build            |   9 +
 src/ipa/mali-c55/data/uncalibrated.yaml      |   7 +
 src/ipa/mali-c55/ipa_context.cpp             | 101 +++
 src/ipa/mali-c55/ipa_context.h               |  85 ++
 src/ipa/mali-c55/mali-c55.cpp                | 399 ++++++++
 src/ipa/mali-c55/meson.build                 |  33 +
 src/ipa/mali-c55/module.h                    |  27 +
 src/libcamera/pipeline/mali-c55/mali-c55.cpp | 541 ++++++++++-
 27 files changed, 3728 insertions(+), 30 deletions(-)
 create mode 100644 include/libcamera/ipa/mali-c55.mojom
 create mode 100644 include/linux/mali-c55-config.h
 create mode 100644 src/ipa/mali-c55/algorithms/agc.cpp
 create mode 100644 src/ipa/mali-c55/algorithms/agc.h
 create mode 100644 src/ipa/mali-c55/algorithms/algorithm.h
 create mode 100644 src/ipa/mali-c55/algorithms/awb.cpp
 create mode 100644 src/ipa/mali-c55/algorithms/awb.h
 create mode 100644 src/ipa/mali-c55/algorithms/blc.cpp
 create mode 100644 src/ipa/mali-c55/algorithms/blc.h
 create mode 100644 src/ipa/mali-c55/algorithms/lsc.cpp
 create mode 100644 src/ipa/mali-c55/algorithms/lsc.h
 create mode 100644 src/ipa/mali-c55/algorithms/meson.build
 create mode 100644 src/ipa/mali-c55/data/imx415.yaml
 create mode 100644 src/ipa/mali-c55/data/meson.build
 create mode 100644 src/ipa/mali-c55/data/uncalibrated.yaml
 create mode 100644 src/ipa/mali-c55/ipa_context.cpp
 create mode 100644 src/ipa/mali-c55/ipa_context.h
 create mode 100644 src/ipa/mali-c55/mali-c55.cpp
 create mode 100644 src/ipa/mali-c55/meson.build
 create mode 100644 src/ipa/mali-c55/module.h

Comments

Jacopo Mondi Nov. 11, 2024, 11:04 a.m. UTC | #1
Hi Dan

On Thu, Nov 07, 2024 at 11:48:08AM +0000, Daniel Scally wrote:
> Hello all
>
> This series adds an IPA Module to go with the Mali-C55 ISP's pipeline handler.
> Algorithms are included for Black Level Correction, Auto-Exposure and Gain, Auto
> White Balance and Lens Shading Correction. A tuning file for the IXM415 sensor
> is also included.
>
> The series is based on the "Miscellaneous Mali-C55 Pipeline Fixes" set and the
> "Centralise common functions in IPA modules​" set.
>
> The pipeline handler / IPA module implemented following application of this
> patchset is developed using version 8 of the Mali-C55 ISP driver currently on
> the linux-media mailing list [1]
>
> Thanks
> Dan
>
> Series level changes:
>
> 	- A new patch adds the unsigned Q format helpers

Apart from the small comment on this patch, the rest looks pretty
standard and we've been testing and running this since 6 months, so I
would really like to see it in

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

We're adding yet another IPA that implements the current Request-based
loop, so it's one more to convert in future, but it doesn't make
sense to hold this one back waiting for a new structure.

So yeah, from my side: go ahead and merge

>
> [1] https://lore.kernel.org/linux-media/20241106100534.768400-1-dan.scally@ideasonboard.com/T/#t
>
> Daniel Scally (9):
>   ipa: helpers: Add Unsigned Q(m, n) helpers
>   include: linux: Add mali-c55-config.h
>   include: linux: Add Mali-C55 Stats and Params V4L2 format
>   libcamera: mali-c55: Acquire and plumb in 3a params and stats
>   ipa: mali-c55: Add Mali-C55 ISP IPA module
>   ipa: mali-c55: Add Agc algorithm
>   ipa: mali-c55: Add AWB Algorithm
>   ipa: mali-c55: Add Lens Shading Correction algorithm
>   ipa: mali-c55: Add IMX415 tuning data file
>
> Jacopo Mondi (2):
>   mali-c55: Plumb the IPA module in
>   ipa: mali-c55: Add BLC Algorithm
>
>  Documentation/Doxyfile-common.in             |   1 +
>  include/libcamera/ipa/mali-c55.mojom         |  34 +
>  include/libcamera/ipa/meson.build            |   1 +
>  include/linux/mali-c55-config.h              | 909 +++++++++++++++++++
>  include/linux/videodev2.h                    |   3 +
>  meson_options.txt                            |   2 +-
>  src/ipa/libipa/helpers.cpp                   |  29 +
>  src/ipa/libipa/helpers.h                     |   2 +
>  src/ipa/mali-c55/algorithms/agc.cpp          | 409 +++++++++
>  src/ipa/mali-c55/algorithms/agc.h            |  81 ++
>  src/ipa/mali-c55/algorithms/algorithm.h      |  39 +
>  src/ipa/mali-c55/algorithms/awb.cpp          | 230 +++++
>  src/ipa/mali-c55/algorithms/awb.h            |  40 +
>  src/ipa/mali-c55/algorithms/blc.cpp          | 140 +++
>  src/ipa/mali-c55/algorithms/blc.h            |  42 +
>  src/ipa/mali-c55/algorithms/lsc.cpp          | 216 +++++
>  src/ipa/mali-c55/algorithms/lsc.h            |  45 +
>  src/ipa/mali-c55/algorithms/meson.build      |   8 +
>  src/ipa/mali-c55/data/imx415.yaml            | 325 +++++++
>  src/ipa/mali-c55/data/meson.build            |   9 +
>  src/ipa/mali-c55/data/uncalibrated.yaml      |   7 +
>  src/ipa/mali-c55/ipa_context.cpp             | 101 +++
>  src/ipa/mali-c55/ipa_context.h               |  85 ++
>  src/ipa/mali-c55/mali-c55.cpp                | 399 ++++++++
>  src/ipa/mali-c55/meson.build                 |  33 +
>  src/ipa/mali-c55/module.h                    |  27 +
>  src/libcamera/pipeline/mali-c55/mali-c55.cpp | 541 ++++++++++-
>  27 files changed, 3728 insertions(+), 30 deletions(-)
>  create mode 100644 include/libcamera/ipa/mali-c55.mojom
>  create mode 100644 include/linux/mali-c55-config.h
>  create mode 100644 src/ipa/mali-c55/algorithms/agc.cpp
>  create mode 100644 src/ipa/mali-c55/algorithms/agc.h
>  create mode 100644 src/ipa/mali-c55/algorithms/algorithm.h
>  create mode 100644 src/ipa/mali-c55/algorithms/awb.cpp
>  create mode 100644 src/ipa/mali-c55/algorithms/awb.h
>  create mode 100644 src/ipa/mali-c55/algorithms/blc.cpp
>  create mode 100644 src/ipa/mali-c55/algorithms/blc.h
>  create mode 100644 src/ipa/mali-c55/algorithms/lsc.cpp
>  create mode 100644 src/ipa/mali-c55/algorithms/lsc.h
>  create mode 100644 src/ipa/mali-c55/algorithms/meson.build
>  create mode 100644 src/ipa/mali-c55/data/imx415.yaml
>  create mode 100644 src/ipa/mali-c55/data/meson.build
>  create mode 100644 src/ipa/mali-c55/data/uncalibrated.yaml
>  create mode 100644 src/ipa/mali-c55/ipa_context.cpp
>  create mode 100644 src/ipa/mali-c55/ipa_context.h
>  create mode 100644 src/ipa/mali-c55/mali-c55.cpp
>  create mode 100644 src/ipa/mali-c55/meson.build
>  create mode 100644 src/ipa/mali-c55/module.h
>
> --
> 2.30.2
>