[v3,00/21] libcamera: rcar-gen4 + rpp-x1
mbox series

Message ID 20260918120949.191668-1-barnabas.pocze@ideasonboard.com
Headers show
Series
  • libcamera: rcar-gen4 + rpp-x1
Related show

Message

Barnabás Pőcze Sept. 18, 2026, 12:09 p.m. UTC
This is the first prototype implementation of the rppx1 ipa module
based on the new kernel uapi. It is the spiritual continuation of

  * https://patchwork.libcamera.org/cover/26915/
  * https://patchwork.libcamera.org/cover/24304/

But it includes both the pipeline handler and ipa components,
rebased on the current master branch.

The corresponding kernel branch is here: https://git.ideasonboard.com/renesas-v4h-isp/linux/src/branch/pobrn/rppx1

This has been an R-Car V4H Sparrow-Hawk device with the imx708 (and imx219) sensor(s).

Some points:

  * the isp always runs, even when only a raw stream is getting captured;
    this has been like this in previous version, so I did not change it

  * lens shading correction seemingly cannot be turned off,
    but this is most likely unrelated to libcamera

Barnabás Pőcze (10):
  ipa: libipa: fixedpoint: Shift unsigned type for scaling
  ipa: libipa: quantized: Make floating point type customizable
  ipa: libipa: quantized: Use `double` when necessary
  ipa: libipa: awb: Log rgb means immediately
  ipa: libipa: awb_bayes: Fix initial max value
  libcamera: controls: Fix `ColourTemperature` direction
  ipa: libipa: gamma: Static assert lookup node count
  ipa: libipa: gamma: Accept const segment lengths
  ipa: libipa: gamma: Use `std::optional` for segment lengths
  ipa: rppx1: Add uncalibrated tuning file

Jacopo Mondi (9):
  include: linux: Update to Linux 7.3-rc3
  ipa: rppx1: blc: Add
  ipa: rppx1: agc: Add
  ipa: rppx1: awb: Add
  ipa: rppx1: lux: Add
  ipa: rppx1: ccm: Add
  ipa: rppx1: goc: Add
  ipa: rppx1: gsl: Add
  ipa: rppx1: lsc: Add

Jai Luthra (1):
  ipa: rppx1: Add

Niklas Söderlund (1):
  libcamera: pipeline: Add R-Car Gen4 ISP pipeline

 Documentation/Doxyfile-common.in              |   1 +
 include/libcamera/ipa/meson.build             |   1 +
 include/libcamera/ipa/rppx1.mojom             |  40 +
 include/linux/README                          |   2 +-
 include/linux/drm.h                           |   7 +
 include/linux/drm_fourcc.h                    | 244 ++++-
 include/linux/drm_mode.h                      |   1 +
 include/linux/media/dreamchip/rppx1-config.h  | 730 +++++++++++++++
 include/linux/rkisp1-config.h                 | 113 ++-
 include/linux/v4l2-controls.h                 |   2 +
 include/linux/videodev2.h                     |   4 +
 meson.build                                   |   1 +
 meson_options.txt                             |   3 +-
 src/ipa/libipa/awb.cpp                        |  12 +-
 src/ipa/libipa/awb_bayes.cpp                  |   2 +-
 src/ipa/libipa/fixedpoint.cpp                 |   7 +-
 src/ipa/libipa/fixedpoint.h                   |  28 +-
 src/ipa/libipa/gamma.cpp                      |  95 +-
 src/ipa/libipa/gamma.h                        |  15 +-
 src/ipa/libipa/quantized.cpp                  |  10 +-
 src/ipa/libipa/quantized.h                    |  14 +-
 src/ipa/meson.build                           |   1 +
 src/ipa/rkisp1/algorithms/goc.cpp             |   2 +-
 src/ipa/rppx1/algorithms/agc.cpp              | 392 ++++++++
 src/ipa/rppx1/algorithms/agc.h                |  47 +
 src/ipa/rppx1/algorithms/algorithm.h          |  22 +
 src/ipa/rppx1/algorithms/awb.cpp              | 272 ++++++
 src/ipa/rppx1/algorithms/awb.h                |  48 +
 src/ipa/rppx1/algorithms/blc.cpp              | 111 +++
 src/ipa/rppx1/algorithms/blc.h                |  41 +
 src/ipa/rppx1/algorithms/ccm.cpp              | 110 +++
 src/ipa/rppx1/algorithms/ccm.h                |  45 +
 src/ipa/rppx1/algorithms/goc.cpp              |  86 ++
 src/ipa/rppx1/algorithms/goc.h                |  43 +
 src/ipa/rppx1/algorithms/gsl.cpp              | 151 +++
 src/ipa/rppx1/algorithms/gsl.h                |  35 +
 src/ipa/rppx1/algorithms/lsc.cpp              | 272 ++++++
 src/ipa/rppx1/algorithms/lsc.h                |  58 ++
 src/ipa/rppx1/algorithms/lux.cpp              |  76 ++
 src/ipa/rppx1/algorithms/lux.h                |  36 +
 src/ipa/rppx1/algorithms/meson.build          |  12 +
 src/ipa/rppx1/data/meson.build                |   9 +
 src/ipa/rppx1/data/uncalibrated.yaml          |  11 +
 src/ipa/rppx1/ipa_context.cpp                 |  37 +
 src/ipa/rppx1/ipa_context.h                   | 106 +++
 src/ipa/rppx1/meson.build                     |  31 +
 src/ipa/rppx1/module.h                        |  29 +
 src/ipa/rppx1/params.h                        | 112 +++
 src/ipa/rppx1/rppx1.cpp                       | 293 ++++++
 src/ipa/rppx1/stats.h                         |  62 ++
 src/libcamera/control_ids_core.yaml           |   2 +-
 src/libcamera/pipeline/rcar-gen4/frames.cpp   | 270 ++++++
 src/libcamera/pipeline/rcar-gen4/frames.h     |  84 ++
 src/libcamera/pipeline/rcar-gen4/isp.cpp      | 193 ++++
 src/libcamera/pipeline/rcar-gen4/isp.h        |  39 +
 src/libcamera/pipeline/rcar-gen4/meson.build  |   8 +
 .../pipeline/rcar-gen4/rcar-gen4.cpp          | 870 ++++++++++++++++++
 src/libcamera/pipeline/rcar-gen4/vin.cpp      | 173 ++++
 src/libcamera/pipeline/rcar-gen4/vin.h        |  60 ++
 test/ipa/libipa/quantized.cpp                 |   8 +-
 utils/update-kernel-headers.sh                |   1 +
 61 files changed, 5491 insertions(+), 99 deletions(-)
 create mode 100644 include/libcamera/ipa/rppx1.mojom
 create mode 100644 include/linux/media/dreamchip/rppx1-config.h
 create mode 100644 src/ipa/rppx1/algorithms/agc.cpp
 create mode 100644 src/ipa/rppx1/algorithms/agc.h
 create mode 100644 src/ipa/rppx1/algorithms/algorithm.h
 create mode 100644 src/ipa/rppx1/algorithms/awb.cpp
 create mode 100644 src/ipa/rppx1/algorithms/awb.h
 create mode 100644 src/ipa/rppx1/algorithms/blc.cpp
 create mode 100644 src/ipa/rppx1/algorithms/blc.h
 create mode 100644 src/ipa/rppx1/algorithms/ccm.cpp
 create mode 100644 src/ipa/rppx1/algorithms/ccm.h
 create mode 100644 src/ipa/rppx1/algorithms/goc.cpp
 create mode 100644 src/ipa/rppx1/algorithms/goc.h
 create mode 100644 src/ipa/rppx1/algorithms/gsl.cpp
 create mode 100644 src/ipa/rppx1/algorithms/gsl.h
 create mode 100644 src/ipa/rppx1/algorithms/lsc.cpp
 create mode 100644 src/ipa/rppx1/algorithms/lsc.h
 create mode 100644 src/ipa/rppx1/algorithms/lux.cpp
 create mode 100644 src/ipa/rppx1/algorithms/lux.h
 create mode 100644 src/ipa/rppx1/algorithms/meson.build
 create mode 100644 src/ipa/rppx1/data/meson.build
 create mode 100644 src/ipa/rppx1/data/uncalibrated.yaml
 create mode 100644 src/ipa/rppx1/ipa_context.cpp
 create mode 100644 src/ipa/rppx1/ipa_context.h
 create mode 100644 src/ipa/rppx1/meson.build
 create mode 100644 src/ipa/rppx1/module.h
 create mode 100644 src/ipa/rppx1/params.h
 create mode 100644 src/ipa/rppx1/rppx1.cpp
 create mode 100644 src/ipa/rppx1/stats.h
 create mode 100644 src/libcamera/pipeline/rcar-gen4/frames.cpp
 create mode 100644 src/libcamera/pipeline/rcar-gen4/frames.h
 create mode 100644 src/libcamera/pipeline/rcar-gen4/isp.cpp
 create mode 100644 src/libcamera/pipeline/rcar-gen4/isp.h
 create mode 100644 src/libcamera/pipeline/rcar-gen4/meson.build
 create mode 100644 src/libcamera/pipeline/rcar-gen4/rcar-gen4.cpp
 create mode 100644 src/libcamera/pipeline/rcar-gen4/vin.cpp
 create mode 100644 src/libcamera/pipeline/rcar-gen4/vin.h

--
2.55.0