Message ID | 20250715081921.5522-8-mzamazal@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi 2025. 07. 15. 10:19 keltezéssel, Milan Zamazal írta: > This patch allows enabling or disabling software ISP in runtime in > addition to compile time. This can be useful for software ISP testing > on various platforms as well as for overriding the defaults in case the > defaults don't work well (e.g. hardware ISP may or may not work on > i.MX8MP depending on the kernel and libcamera patches present in the > given system). > > The configuration is specified as follows: > > configuration: > pipelines: > simple: > supported_devices: > - driver: DRIVER-NAME > software_isp: BOOLEAN > - ... > > For example: > > configuration: > pipelines: > simple: > supported_devices: > - driver: mxc-isi > software_isp: true > > The overall configuration of enabling or disabling software ISP may get > dropped in future but this patch is still useful in the meantime. Do you foresee that the configuration file will completely replace the `simple.cpp:supportedDevices` array at some point? Regards, Barnabás Pőcze > > Signed-off-by: Milan Zamazal <mzamazal@redhat.com> > --- > src/libcamera/pipeline/simple/simple.cpp | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp > index efb07051b..45d7a5c4a 100644 > --- a/src/libcamera/pipeline/simple/simple.cpp > +++ b/src/libcamera/pipeline/simple/simple.cpp > @@ -30,11 +30,13 @@ > #include <libcamera/stream.h> > > #include "libcamera/internal/camera.h" > +#include "libcamera/internal/camera_manager.h" > #include "libcamera/internal/camera_sensor.h" > #include "libcamera/internal/camera_sensor_properties.h" > #include "libcamera/internal/converter.h" > #include "libcamera/internal/delayed_controls.h" > #include "libcamera/internal/device_enumerator.h" > +#include "libcamera/internal/global_configuration.h" > #include "libcamera/internal/media_device.h" > #include "libcamera/internal/pipeline_handler.h" > #include "libcamera/internal/software_isp/software_isp.h" > @@ -1688,6 +1690,17 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator) > } > > swIspEnabled_ = info->swIspEnabled; > + const GlobalConfiguration &configuration = cameraManager()->_d()->configuration(); > + for (GlobalConfiguration::Configuration entry : > + configuration.configuration()["pipelines"]["simple"]["supported_devices"] > + .asList()) { > + auto name = entry["driver"].get<std::string>(); > + if (name == info->driver) { > + swIspEnabled_ = entry["software_isp"].get<bool>().value_or(swIspEnabled_); > + LOG(SimplePipeline, Debug) << "Overriding software ISP to " << swIspEnabled_; > + break; > + } > + } > > /* Locate the sensors. */ > std::vector<MediaEntity *> sensors = locateSensors(media);
Hi Barnabás, Barnabás Pőcze <barnabas.pocze@ideasonboard.com> writes: > Hi > > 2025. 07. 15. 10:19 keltezéssel, Milan Zamazal írta: >> This patch allows enabling or disabling software ISP in runtime in >> addition to compile time. This can be useful for software ISP testing >> on various platforms as well as for overriding the defaults in case the >> defaults don't work well (e.g. hardware ISP may or may not work on >> i.MX8MP depending on the kernel and libcamera patches present in the >> given system). >> The configuration is specified as follows: >> configuration: >> pipelines: >> simple: >> supported_devices: >> - driver: DRIVER-NAME >> software_isp: BOOLEAN >> - ... >> For example: >> configuration: >> pipelines: >> simple: >> supported_devices: >> - driver: mxc-isi >> software_isp: true >> The overall configuration of enabling or disabling software ISP may get >> dropped in future but this patch is still useful in the meantime. > > Do you foresee that the configuration file will completely replace the > `simple.cpp:supportedDevices` array at some point? I don't think so. supportedDevices should define the standard defaults, while the configuration file setting serves to override it in special cases like testing/development or a broken driver etc. > Regards, > Barnabás Pőcze > > >> Signed-off-by: Milan Zamazal <mzamazal@redhat.com> >> --- >> src/libcamera/pipeline/simple/simple.cpp | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp >> index efb07051b..45d7a5c4a 100644 >> --- a/src/libcamera/pipeline/simple/simple.cpp >> +++ b/src/libcamera/pipeline/simple/simple.cpp >> @@ -30,11 +30,13 @@ >> #include <libcamera/stream.h> >> #include "libcamera/internal/camera.h" >> +#include "libcamera/internal/camera_manager.h" >> #include "libcamera/internal/camera_sensor.h" >> #include "libcamera/internal/camera_sensor_properties.h" >> #include "libcamera/internal/converter.h" >> #include "libcamera/internal/delayed_controls.h" >> #include "libcamera/internal/device_enumerator.h" >> +#include "libcamera/internal/global_configuration.h" >> #include "libcamera/internal/media_device.h" >> #include "libcamera/internal/pipeline_handler.h" >> #include "libcamera/internal/software_isp/software_isp.h" >> @@ -1688,6 +1690,17 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator) >> } >> swIspEnabled_ = info->swIspEnabled; >> + const GlobalConfiguration &configuration = cameraManager()->_d()->configuration(); >> + for (GlobalConfiguration::Configuration entry : >> + configuration.configuration()["pipelines"]["simple"]["supported_devices"] >> + .asList()) { >> + auto name = entry["driver"].get<std::string>(); >> + if (name == info->driver) { >> + swIspEnabled_ = entry["software_isp"].get<bool>().value_or(swIspEnabled_); >> + LOG(SimplePipeline, Debug) << "Overriding software ISP to " << swIspEnabled_; >> + break; >> + } >> + } >> /* Locate the sensors. */ >> std::vector<MediaEntity *> sensors = locateSensors(media);
diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index efb07051b..45d7a5c4a 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -30,11 +30,13 @@ #include <libcamera/stream.h> #include "libcamera/internal/camera.h" +#include "libcamera/internal/camera_manager.h" #include "libcamera/internal/camera_sensor.h" #include "libcamera/internal/camera_sensor_properties.h" #include "libcamera/internal/converter.h" #include "libcamera/internal/delayed_controls.h" #include "libcamera/internal/device_enumerator.h" +#include "libcamera/internal/global_configuration.h" #include "libcamera/internal/media_device.h" #include "libcamera/internal/pipeline_handler.h" #include "libcamera/internal/software_isp/software_isp.h" @@ -1688,6 +1690,17 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator) } swIspEnabled_ = info->swIspEnabled; + const GlobalConfiguration &configuration = cameraManager()->_d()->configuration(); + for (GlobalConfiguration::Configuration entry : + configuration.configuration()["pipelines"]["simple"]["supported_devices"] + .asList()) { + auto name = entry["driver"].get<std::string>(); + if (name == info->driver) { + swIspEnabled_ = entry["software_isp"].get<bool>().value_or(swIspEnabled_); + LOG(SimplePipeline, Debug) << "Overriding software ISP to " << swIspEnabled_; + break; + } + } /* Locate the sensors. */ std::vector<MediaEntity *> sensors = locateSensors(media);
This patch allows enabling or disabling software ISP in runtime in addition to compile time. This can be useful for software ISP testing on various platforms as well as for overriding the defaults in case the defaults don't work well (e.g. hardware ISP may or may not work on i.MX8MP depending on the kernel and libcamera patches present in the given system). The configuration is specified as follows: configuration: pipelines: simple: supported_devices: - driver: DRIVER-NAME software_isp: BOOLEAN - ... For example: configuration: pipelines: simple: supported_devices: - driver: mxc-isi software_isp: true The overall configuration of enabling or disabling software ISP may get dropped in future but this patch is still useful in the meantime. Signed-off-by: Milan Zamazal <mzamazal@redhat.com> --- src/libcamera/pipeline/simple/simple.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+)