[00/22] GPUISP precursor series
mbox series

Message ID 20251120232019.3590-1-bryan.odonoghue@linaro.org
Headers show
Series
  • GPUISP precursor series
Related show

Message

Bryan O'Donoghue Nov. 20, 2025, 11:19 p.m. UTC
This series takes all of the already reviewed-by on-list stuff and
parcels it into a more digestable series.

Right at the end are some patches which were about making data available in
the debayer params strcutre and had some reviewed-by and/or comments from
Kiearn and Milan that I didn't apply review-by to because I wasn't 100%
sure that was warranted from the list dicussion - CCM was clear enough, AWB
got dropped.

Adding in blacklevel, gamma and contrast seem to fit-in with these patches
and including in this series reduces the overall size of GPUISP as a series
from 44 ! patches in total to 22. 

CI is passing both of this branch and for the aggregate branch so, I've
opted to start sending out the broken apart series, even though I'm
expecting an IPU6 fix from Hans it shouldn't affect this early code.

Bryan O'Donoghue (17):
  libcamera: shaders: Move GL shader programs to
    src/libcamera/assets/shader
  utils: gen-shader-headers: Add a utility to generate headers from
    shaders
  meson: Automatically generate glsl_shaders.h from specified shader
    programs
  libcamera: software_isp: Move useful items from DebayerCpu to Debayer
    base class
  libcamera: software_isp: Move Bayer params init from DebayerCpu to
    Debayer
  libcamera: software_isp: Move param select code to Debayer base class
  libcamera: software_isp: Move DMA Sync code to Debayer base class
  libcamera: software_isp: Make output DMA sync contingent
  libcamera: software_isp: Move isStandardBayerOrder to base class
  libcamera: software_isp: Start the ISP thread in configure
  libcamera: software_isp: Move configure to worker thread
  libcamera: software_isp: debayer: Introduce a stop() callback to the
    debayer object
  libcamera: software_isp: debayer: Make the debayer_ object of type
    class Debayer not DebayerCpu
  libcamera: software_isp: lut: Make CCM available in debayer params
  libcamera: software_isp: blacklevel: Make black level available in
    debayer params
  libcamera: software_isp: lut: Make gamma from lut.cpp available in
    debayer params
  libcamera: software_isp: lut: Make contrast available in debayer
    params

Hans de Goede (5):
  libcamera: swstats_cpu: Update statsProcessFn() / processLine0()
    documentation
  libcamera: swstats_cpu: Drop patternSize_ documentation
  libcamera: swstats_cpu: Move header to libcamera/internal/software_isp
  libcamera: software_isp: Move benchmark code to its own class
  libcamera: swstats_cpu: Add processFrame() method

 include/libcamera/internal/meson.build        | 10 ++
 .../libcamera/internal/shaders}/RGB.frag      |  0
 .../internal/shaders}/YUV_2_planes.frag       |  0
 .../internal/shaders}/YUV_3_planes.frag       |  0
 .../internal/shaders}/YUV_packed.frag         |  0
 .../internal/shaders}/bayer_1x_packed.frag    |  0
 .../libcamera/internal/shaders}/bayer_8.frag  |  0
 .../libcamera/internal/shaders}/bayer_8.vert  |  0
 .../libcamera/internal/shaders}/identity.vert |  0
 .../libcamera/internal/shaders/meson.build    | 10 ++
 .../internal/software_isp/benchmark.h         | 39 ++++++++
 .../internal/software_isp/debayer_params.h    | 23 +++++
 .../internal/software_isp/meson.build         |  2 +
 .../internal/software_isp/software_isp.h      |  5 +-
 .../internal}/software_isp/swstats_cpu.h      | 15 ++-
 src/apps/qcam/assets/shader/shaders.qrc       | 16 +--
 src/apps/qcam/meson.build                     |  3 +
 src/apps/qcam/viewfinder_gl.cpp               | 70 ++++++-------
 src/ipa/simple/algorithms/blc.cpp             | 13 +++
 src/ipa/simple/algorithms/blc.h               |  4 +
 src/ipa/simple/algorithms/lut.cpp             |  4 +
 src/libcamera/software_isp/benchmark.cpp      | 92 +++++++++++++++++
 src/libcamera/software_isp/debayer.cpp        | 70 +++++++++++++
 src/libcamera/software_isp/debayer.h          | 71 ++++++++++++-
 src/libcamera/software_isp/debayer_cpu.cpp    | 99 ++++---------------
 src/libcamera/software_isp/debayer_cpu.h      | 46 +--------
 src/libcamera/software_isp/meson.build        |  1 +
 src/libcamera/software_isp/software_isp.cpp   | 23 ++++-
 src/libcamera/software_isp/swstats_cpu.cpp    | 88 +++++++++++++++--
 utils/gen-shader-header.py                    | 38 +++++++
 utils/gen-shader-headers.sh                   | 44 +++++++++
 utils/meson.build                             |  2 +
 32 files changed, 600 insertions(+), 188 deletions(-)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/RGB.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_2_planes.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_3_planes.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_packed.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_1x_packed.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.frag (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.vert (100%)
 rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/identity.vert (100%)
 create mode 100644 include/libcamera/internal/shaders/meson.build
 create mode 100644 include/libcamera/internal/software_isp/benchmark.h
 rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (84%)
 create mode 100644 src/libcamera/software_isp/benchmark.cpp
 create mode 100755 utils/gen-shader-header.py
 create mode 100755 utils/gen-shader-headers.sh