| Message ID | 20260812184912.287894-1-johannes.goede@oss.qualcomm.com |
|---|---|
| Headers | show |
| Series |
|
| Related | show |
Hi all, I'm going to resend this since patches 5-8 did not make it out the first time around. Regards, Hans On 12-Aug-26 20:49, Hans de Goede wrote: > Hi All, > > This is v6 of my / Jacopo's "ipa: Allow IPA creation by name" series, > > This new version switches all pipeline handlers over to creating their > IPA by IPA proxy type rather then by name, with the exception of the > raspberry pi pipeline handlers which are switched to creating the IPA by > explicitly passing the pipeline handler name since the rpi/vc4 and rpi/pisp > IPAs share the same IPA proxy type. > > > Use-cases for this / series blocked by this are: > > 1. Using a differently named IPA with the rcar-gen4 pipeline handler: > https://patchwork.libcamera.org/project/libcamera/list/?series=6003 > > 2. Using the softISP stats + IPA with the atomisp pipeline handler: > https://patchwork.libcamera.org/project/libcamera/list/?series=5169 > > 3. The new camss pipeline handler will use the softISP as a fallback on > platforms where there is no hardware ISP support yet (so most platforms) > the softISP needs to be able to load its IPA from both the "simple" and > "camss" pipeline handlers, requiring something like this series. > https://patchwork.libcamera.org/project/libcamera/list/?series=6070 > > This has been tested by Jacopo on R-Car Gen4 and on Mali-C55 and by me > on Qualcomm Agetti and Hamoa SoCs with both the simple and camss pipeline > handlers. > > I believe that this is ready for merging now. > > Changes in v7: > - Add a comment explaining why pipe()->name() is explicitly passed > for the RPi IPA creation > - Rename the softISP IPA from "simple" to "softisp" instead of "soft" > - Mark PipelineHandler::createIPA() overload with an explicit IPA name > argument as deprecated > - 2 new patches to finish the IPA renaming to softisp / IPASoftIsp > "ipa: softisp: Rename IPASoftSimple to IPASoftIsp" > "ipa: softisp: Rename ipa::soft namespace to ipa::softisp" > - Moved one patch from camss series here, it fits here better since > this is all about making the Software ISP usuable from more places: > "ipa: softisp: Rename setIspParams signal to paramsComputed" > > Changes in v6: > - Drop patch switching softISP to create its IPA by name > - Switch raspberry-pi pipeline-handlers to creating IPA by name > - Switch all other pipeline-handlers to creating IPA by proxy type name > - Rename "simple" softISP IPA to "soft" to match its proxy type name > > Changes in v5: > - Rebase on top of db998e618aaa ("libcamera: pipeline_handler: Add > createIPA() function") which moved the createIPA() wrapper for > pipeline-handlers into the PipelineHandler class > - https://patchwork.libcamera.org/project/libcamera/list/?series=5940 > > Changes in v4: > - Rebase, change author of first patch to my new email address > - https://patchwork.libcamera.org/project/libcamera/list/?series=5876&state=* > > Changes in v3: > - Add "ipa: Allow pipelines to have differently named IPA" patch > - https://lists.libcamera.org/pipermail/libcamera-devel/2025-October/053821.html > > Changes in v2: > - Update tags, fix stray blank line > > Changes in v1 from Hans' original patch: > - Slightly different approach addressing the review comments on Hans' v1 by > creating an overload for IPAManager::createIPA() that allows pipelines to > specify the IPA module name. > > Regards, > > Hans > > > Hans de Goede (6): > libcamera: Create IPA by name > pipeline: rpi: Explictly pass pipe()->name() when creating IPA > libcamera: Create IPA by IPA proxy type name > ipa: softisp: Rename IPASoftSimple to IPASoftIsp > ipa: softisp: Rename ipa::soft namespace to ipa::softisp > ipa: softisp: Rename setIspParams signal to paramsComputed > > Jacopo Mondi (2): > ipa: ipa_module: Remove pipelineName > ipa: Allow pipelines to have differently named IPA > > Documentation/Doxyfile-internal.in | 2 +- > include/libcamera/internal/ipa_manager.h | 6 +- > include/libcamera/internal/ipa_module.h | 4 +- > include/libcamera/internal/pipeline_handler.h | 9 +- > .../internal/software_isp/software_isp.h | 10 +-- > include/libcamera/ipa/ipa_module_info.h | 1 - > include/libcamera/ipa/meson.build | 2 +- > .../ipa/{soft.mojom => softisp.mojom} | 8 +- > meson_options.txt | 4 +- > src/ipa/ipu3/ipu3.cpp | 1 - > src/ipa/mali-c55/mali-c55.cpp | 1 - > src/ipa/meson.build | 40 ++++++--- > src/ipa/rkisp1/rkisp1.cpp | 1 - > src/ipa/rpi/pisp/pisp.cpp | 1 - > src/ipa/rpi/vc4/vc4.cpp | 1 - > .../{simple => softisp}/algorithms/adjust.cpp | 12 +-- > .../{simple => softisp}/algorithms/adjust.h | 4 +- > .../{simple => softisp}/algorithms/agc.cpp | 12 +-- > src/ipa/{simple => softisp}/algorithms/agc.h | 4 +- > .../algorithms/algorithm.h | 4 +- > .../{simple => softisp}/algorithms/awb.cpp | 20 ++--- > src/ipa/{simple => softisp}/algorithms/awb.h | 12 +-- > .../{simple => softisp}/algorithms/blc.cpp | 10 +-- > src/ipa/{simple => softisp}/algorithms/blc.h | 4 +- > .../{simple => softisp}/algorithms/ccm.cpp | 6 +- > src/ipa/{simple => softisp}/algorithms/ccm.h | 4 +- > .../algorithms/meson.build | 2 +- > src/ipa/{simple => softisp}/data/meson.build | 2 +- > .../data/uncalibrated.yaml | 0 > src/ipa/{simple => softisp}/ipa_context.cpp | 4 +- > src/ipa/{simple => softisp}/ipa_context.h | 6 +- > src/ipa/{simple => softisp}/meson.build | 10 +-- > src/ipa/{simple => softisp}/module.h | 6 +- > .../soft_simple.cpp => softisp/softisp.cpp} | 85 +++++++++---------- > src/ipa/vimc/vimc.cpp | 1 - > src/libcamera/ipa_manager.cpp | 8 +- > src/libcamera/ipa_module.cpp | 29 +++---- > .../pipeline/rpi/common/pipeline_base.cpp | 8 +- > src/libcamera/pipeline/simple/simple.cpp | 2 +- > src/libcamera/pipeline_handler.cpp | 27 +++++- > src/libcamera/software_isp/software_isp.cpp | 8 +- > test/ipa/ipa_interface_test.cpp | 2 +- > test/ipa/ipa_module_test.cpp | 3 - > .../module_ipa_proxy.h.tmpl | 2 + > 44 files changed, 216 insertions(+), 172 deletions(-) > rename include/libcamera/ipa/{soft.mojom => softisp.mojom} (88%) > rename src/ipa/{simple => softisp}/algorithms/adjust.cpp (91%) > rename src/ipa/{simple => softisp}/algorithms/adjust.h (93%) > rename src/ipa/{simple => softisp}/algorithms/agc.cpp (95%) > rename src/ipa/{simple => softisp}/algorithms/agc.h (87%) > rename src/ipa/{simple => softisp}/algorithms/algorithm.h (84%) > rename src/ipa/{simple => softisp}/algorithms/awb.cpp (88%) > rename src/ipa/{simple => softisp}/algorithms/awb.h (85%) > rename src/ipa/{simple => softisp}/algorithms/blc.cpp (93%) > rename src/ipa/{simple => softisp}/algorithms/blc.h (91%) > rename src/ipa/{simple => softisp}/algorithms/ccm.cpp (94%) > rename src/ipa/{simple => softisp}/algorithms/ccm.h (93%) > rename src/ipa/{simple => softisp}/algorithms/meson.build (75%) > rename src/ipa/{simple => softisp}/data/meson.build (79%) > rename src/ipa/{simple => softisp}/data/uncalibrated.yaml (100%) > rename src/ipa/{simple => softisp}/ipa_context.cpp (97%) > rename src/ipa/{simple => softisp}/ipa_context.h (95%) > rename src/ipa/{simple => softisp}/meson.build (78%) > rename src/ipa/{simple => softisp}/module.h (82%) > rename src/ipa/{simple/soft_simple.cpp => softisp/softisp.cpp} (81%) >
Hi All, This is v6 of my / Jacopo's "ipa: Allow IPA creation by name" series, This new version switches all pipeline handlers over to creating their IPA by IPA proxy type rather then by name, with the exception of the raspberry pi pipeline handlers which are switched to creating the IPA by explicitly passing the pipeline handler name since the rpi/vc4 and rpi/pisp IPAs share the same IPA proxy type. Use-cases for this / series blocked by this are: 1. Using a differently named IPA with the rcar-gen4 pipeline handler: https://patchwork.libcamera.org/project/libcamera/list/?series=6003 2. Using the softISP stats + IPA with the atomisp pipeline handler: https://patchwork.libcamera.org/project/libcamera/list/?series=5169 3. The new camss pipeline handler will use the softISP as a fallback on platforms where there is no hardware ISP support yet (so most platforms) the softISP needs to be able to load its IPA from both the "simple" and "camss" pipeline handlers, requiring something like this series. https://patchwork.libcamera.org/project/libcamera/list/?series=6070 This has been tested by Jacopo on R-Car Gen4 and on Mali-C55 and by me on Qualcomm Agetti and Hamoa SoCs with both the simple and camss pipeline handlers. I believe that this is ready for merging now. Changes in v7: - Add a comment explaining why pipe()->name() is explicitly passed for the RPi IPA creation - Rename the softISP IPA from "simple" to "softisp" instead of "soft" - Mark PipelineHandler::createIPA() overload with an explicit IPA name argument as deprecated - 2 new patches to finish the IPA renaming to softisp / IPASoftIsp "ipa: softisp: Rename IPASoftSimple to IPASoftIsp" "ipa: softisp: Rename ipa::soft namespace to ipa::softisp" - Moved one patch from camss series here, it fits here better since this is all about making the Software ISP usuable from more places: "ipa: softisp: Rename setIspParams signal to paramsComputed" Changes in v6: - Drop patch switching softISP to create its IPA by name - Switch raspberry-pi pipeline-handlers to creating IPA by name - Switch all other pipeline-handlers to creating IPA by proxy type name - Rename "simple" softISP IPA to "soft" to match its proxy type name Changes in v5: - Rebase on top of db998e618aaa ("libcamera: pipeline_handler: Add createIPA() function") which moved the createIPA() wrapper for pipeline-handlers into the PipelineHandler class - https://patchwork.libcamera.org/project/libcamera/list/?series=5940 Changes in v4: - Rebase, change author of first patch to my new email address - https://patchwork.libcamera.org/project/libcamera/list/?series=5876&state=* Changes in v3: - Add "ipa: Allow pipelines to have differently named IPA" patch - https://lists.libcamera.org/pipermail/libcamera-devel/2025-October/053821.html Changes in v2: - Update tags, fix stray blank line Changes in v1 from Hans' original patch: - Slightly different approach addressing the review comments on Hans' v1 by creating an overload for IPAManager::createIPA() that allows pipelines to specify the IPA module name. Regards, Hans Hans de Goede (6): libcamera: Create IPA by name pipeline: rpi: Explictly pass pipe()->name() when creating IPA libcamera: Create IPA by IPA proxy type name ipa: softisp: Rename IPASoftSimple to IPASoftIsp ipa: softisp: Rename ipa::soft namespace to ipa::softisp ipa: softisp: Rename setIspParams signal to paramsComputed Jacopo Mondi (2): ipa: ipa_module: Remove pipelineName ipa: Allow pipelines to have differently named IPA Documentation/Doxyfile-internal.in | 2 +- include/libcamera/internal/ipa_manager.h | 6 +- include/libcamera/internal/ipa_module.h | 4 +- include/libcamera/internal/pipeline_handler.h | 9 +- .../internal/software_isp/software_isp.h | 10 +-- include/libcamera/ipa/ipa_module_info.h | 1 - include/libcamera/ipa/meson.build | 2 +- .../ipa/{soft.mojom => softisp.mojom} | 8 +- meson_options.txt | 4 +- src/ipa/ipu3/ipu3.cpp | 1 - src/ipa/mali-c55/mali-c55.cpp | 1 - src/ipa/meson.build | 40 ++++++--- src/ipa/rkisp1/rkisp1.cpp | 1 - src/ipa/rpi/pisp/pisp.cpp | 1 - src/ipa/rpi/vc4/vc4.cpp | 1 - .../{simple => softisp}/algorithms/adjust.cpp | 12 +-- .../{simple => softisp}/algorithms/adjust.h | 4 +- .../{simple => softisp}/algorithms/agc.cpp | 12 +-- src/ipa/{simple => softisp}/algorithms/agc.h | 4 +- .../algorithms/algorithm.h | 4 +- .../{simple => softisp}/algorithms/awb.cpp | 20 ++--- src/ipa/{simple => softisp}/algorithms/awb.h | 12 +-- .../{simple => softisp}/algorithms/blc.cpp | 10 +-- src/ipa/{simple => softisp}/algorithms/blc.h | 4 +- .../{simple => softisp}/algorithms/ccm.cpp | 6 +- src/ipa/{simple => softisp}/algorithms/ccm.h | 4 +- .../algorithms/meson.build | 2 +- src/ipa/{simple => softisp}/data/meson.build | 2 +- .../data/uncalibrated.yaml | 0 src/ipa/{simple => softisp}/ipa_context.cpp | 4 +- src/ipa/{simple => softisp}/ipa_context.h | 6 +- src/ipa/{simple => softisp}/meson.build | 10 +-- src/ipa/{simple => softisp}/module.h | 6 +- .../soft_simple.cpp => softisp/softisp.cpp} | 85 +++++++++---------- src/ipa/vimc/vimc.cpp | 1 - src/libcamera/ipa_manager.cpp | 8 +- src/libcamera/ipa_module.cpp | 29 +++---- .../pipeline/rpi/common/pipeline_base.cpp | 8 +- src/libcamera/pipeline/simple/simple.cpp | 2 +- src/libcamera/pipeline_handler.cpp | 27 +++++- src/libcamera/software_isp/software_isp.cpp | 8 +- test/ipa/ipa_interface_test.cpp | 2 +- test/ipa/ipa_module_test.cpp | 3 - .../module_ipa_proxy.h.tmpl | 2 + 44 files changed, 216 insertions(+), 172 deletions(-) rename include/libcamera/ipa/{soft.mojom => softisp.mojom} (88%) rename src/ipa/{simple => softisp}/algorithms/adjust.cpp (91%) rename src/ipa/{simple => softisp}/algorithms/adjust.h (93%) rename src/ipa/{simple => softisp}/algorithms/agc.cpp (95%) rename src/ipa/{simple => softisp}/algorithms/agc.h (87%) rename src/ipa/{simple => softisp}/algorithms/algorithm.h (84%) rename src/ipa/{simple => softisp}/algorithms/awb.cpp (88%) rename src/ipa/{simple => softisp}/algorithms/awb.h (85%) rename src/ipa/{simple => softisp}/algorithms/blc.cpp (93%) rename src/ipa/{simple => softisp}/algorithms/blc.h (91%) rename src/ipa/{simple => softisp}/algorithms/ccm.cpp (94%) rename src/ipa/{simple => softisp}/algorithms/ccm.h (93%) rename src/ipa/{simple => softisp}/algorithms/meson.build (75%) rename src/ipa/{simple => softisp}/data/meson.build (79%) rename src/ipa/{simple => softisp}/data/uncalibrated.yaml (100%) rename src/ipa/{simple => softisp}/ipa_context.cpp (97%) rename src/ipa/{simple => softisp}/ipa_context.h (95%) rename src/ipa/{simple => softisp}/meson.build (78%) rename src/ipa/{simple => softisp}/module.h (82%) rename src/ipa/{simple/soft_simple.cpp => softisp/softisp.cpp} (81%)