[{"id":35935,"web_url":"https://patchwork.libcamera.org/comment/35935/","msgid":"<20250921033855.GC30137@pendragon.ideasonboard.com>","date":"2025-09-21T03:38:55","subject":"Re: [PATCH v18 08/12] Documentation: Add global configuration file\n\tdocumentation","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Milan,\n\nThank you for the patch.\n\nDavid, Naush, there's a question for you below.\n\nOn Fri, Sep 12, 2025 at 04:29:10PM +0200, Milan Zamazal wrote:\n> Extend (and rename) the documentation of environment variables with\n> information about the configuration file.\n> \n> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>  Documentation/documentation-contents.rst      |   2 +-\n>  Documentation/index.rst                       |   2 +-\n>  Documentation/meson.build                     |   2 +-\n>  ...ariables.rst => runtime_configuration.rst} | 116 ++++++++++++++++--\n>  4 files changed, 107 insertions(+), 15 deletions(-)\n>  rename Documentation/{environment_variables.rst => runtime_configuration.rst} (65%)\n> \n> diff --git a/Documentation/documentation-contents.rst b/Documentation/documentation-contents.rst\n> index 5c1118493..4be3729cf 100644\n> --- a/Documentation/documentation-contents.rst\n> +++ b/Documentation/documentation-contents.rst\n> @@ -7,7 +7,7 @@\n>     * :doc:`/feature_requirements`\n>     * :doc:`/guides/application-developer`\n>     * :doc:`/python-bindings`\n> -   * :doc:`/environment_variables`\n> +   * :doc:`/runtime_configuration`\n\nI like grouping both the configuration file and environment variables in\na single document, it's a good idea.\n\n>     * :doc:`/api-html/index`\n>     * :doc:`/code-of-conduct`\n>     * |\n> diff --git a/Documentation/index.rst b/Documentation/index.rst\n> index 251112fbd..200de6f67 100644\n> --- a/Documentation/index.rst\n> +++ b/Documentation/index.rst\n> @@ -12,13 +12,13 @@\n>  \n>     Application Writer's Guide <guides/application-developer>\n>     Camera Sensor Model <camera-sensor-model>\n> -   Environment variables <environment_variables>\n>     Feature Requirements <feature_requirements>\n>     IPA Writer's guide <guides/ipa>\n>     Lens driver requirements <lens_driver_requirements>\n>     libcamera Architecture <libcamera_architecture>\n>     Pipeline Handler Writer's Guide <guides/pipeline-handler>\n>     Python Bindings <python-bindings>\n> +   Runtime configuration <runtime_configuration>\n\nThis conflicts with patches recently merged, I'll handle the rebase.\n\n>     Sensor driver requirements <sensor_driver_requirements>\n>     SoftwareISP Benchmarking <software-isp-benchmarking>\n>     Tracing guide <guides/tracing>\n> diff --git a/Documentation/meson.build b/Documentation/meson.build\n> index a8d4afc01..b47b16e97 100644\n> --- a/Documentation/meson.build\n> +++ b/Documentation/meson.build\n> @@ -157,7 +157,6 @@ if sphinx.found()\n>          'contributing.rst',\n>          'design/ae.rst',\n>          'documentation-contents.rst',\n> -        'environment_variables.rst',\n>          'feature_requirements.rst',\n>          'guides/application-developer.rst',\n>          'guides/ipa.rst',\n> @@ -169,6 +168,7 @@ if sphinx.found()\n>          'libcamera_architecture.rst',\n>          'mali-c55.dot',\n>          'python-bindings.rst',\n> +        'runtime_configuration.rst',\n>          'sensor_driver_requirements.rst',\n>          'software-isp-benchmarking.rst',\n>         '../README.rst',\n> diff --git a/Documentation/environment_variables.rst b/Documentation/runtime_configuration.rst\n> similarity index 65%\n> rename from Documentation/environment_variables.rst\n> rename to Documentation/runtime_configuration.rst\n> index 0cb4e27cd..8792232d7 100644\n> --- a/Documentation/environment_variables.rst\n> +++ b/Documentation/runtime_configuration.rst\n> @@ -2,14 +2,95 @@\n>  \n>  .. include:: documentation-contents.rst\n>  \n> -Environment variables\n> +Runtime configuration\n>  =====================\n>  \n> -The libcamera behaviour can be tuned through environment variables. This\n> -document lists all the available variables and describes their usage.\n> -\n> -List of variables\n> ------------------\n> +The libcamera behaviour can be tuned through a configuration file or\n> +environment variables. This document lists all the configuration options\n> +and describes their usage.\n> +\n> +General rules\n> +-------------\n> +\n> +The configuration file is looked up in the following locations, in this\n> +order:\n> +\n> +- $XDG_CONFIG_HOME/libcamera/configuration.yaml\n> +- LIBCAMERA_SYSCONF_DIR/configuration.yaml\n> +- LIBCAMERA_DATA_DIR/libcamera/configuration.yaml\n> +\n> +The first configuration file found wins, configuration files in other\n> +locations are ignored.\n> +\n> +Settings in environment variables take precedence over settings in\n> +configuration files. This allows overriding behaviour temporarily\n> +without the need to modify configuration files.\n> +\n> +Configuration options\n> +---------------------\n> +\n> +Here is an overview of the available configuration options, in the YAML\n> +file structure:\n> +\n> +::\n> +\n> +  configuration:\n> +    ipa:\n> +      force_isolation: # true/false\n> +      config_paths:\n> +      - ... # full path to a directory\n> +      module_paths:\n> +      - ... # full path to a directory\n> +    pipelines_match_list:\n> +    - ... # pipeline name\n> +    pipelines:\n> +      rpi:\n> +        bcm2835:\n> +          pipeline_handler:\n> +            ...\n> +        pisp:\n> +          pipeline_handler:\n> +            ...\n> +      simple:\n> +        supported_devices:\n> +        - driver: # driver name, e.g. `mxc-isi`\n> +          software_isp: # true/false\n> +\n> +Configuration file example\n> +--------------------------\n> +\n> +::\n> +\n> +   ---\n> +   version: 1\n> +   configuration:\n> +     ipa:\n> +       config_paths:\n> +       - /home/user/.libcamera/share/ipa\n> +       - /opt/libcamera/vendor/share/ipa\n> +       module_paths:\n> +       - /home/user/.libcamera/lib\n> +       - /opt/libcamera/vendor/lib\n> +       proxy_paths:\n> +       - /home/user/.libcamera/proxy/worker\n> +       - /opt/libcamera/vendor/proxy/worker\n> +       force_isolation: true\n> +     pipelines_match_list:\n> +     - rkisp1\n> +     - simple\n> +     pipelines:\n> +       rpi:\n> +         bcm2835:\n> +           pipeline_handler:\n> +             min_unicam_buffers: 2\n> +             min_total_unicam_buffers: 2\n> +       simple:\n> +         supported_devices:\n> +         - driver: mxc-isi\n> +           software_isp: true\n> +\n> +List of variables and configuration options\n> +-------------------------------------------\n>  \n>  LIBCAMERA_LOG_FILE\n>     The custom destination for log output.\n> @@ -24,27 +105,27 @@ LIBCAMERA_LOG_LEVELS\n>  LIBCAMERA_LOG_NO_COLOR\n>     Disable coloring of log messages (`more <Notes about debugging_>`__).\n>  \n> -LIBCAMERA_IPA_CONFIG_PATH\n> +LIBCAMERA_IPA_CONFIG_PATH, ipa.config_paths\n>     Define custom search locations for IPA configurations (`more <IPA configuration_>`__).\n>  \n>     Example value: ``${HOME}/.libcamera/share/ipa:/opt/libcamera/vendor/share/ipa``\n>  \n> -LIBCAMERA_IPA_FORCE_ISOLATION\n> +LIBCAMERA_IPA_FORCE_ISOLATION, ipa.force_isolation\n>     When set to a non-empty string, force process isolation of all IPA modules.\n>  \n>     Example value: ``1``\n>  \n> -LIBCAMERA_IPA_MODULE_PATH\n> +LIBCAMERA_IPA_MODULE_PATH, ipa.module_paths\n>     Define custom search locations for IPA modules (`more <IPA module_>`__).\n>  \n>     Example value: ``${HOME}/.libcamera/lib:/opt/libcamera/vendor/lib``\n>  \n> -LIBCAMERA_IPA_PROXY_PATH\n> +LIBCAMERA_IPA_PROXY_PATH, ipa.proxy_paths\n>     Define custom full path for a proxy worker for a given executable name.\n>  \n>     Example value: ``${HOME}/.libcamera/proxy/worker:/opt/libcamera/vendor/proxy/worker``\n>  \n> -LIBCAMERA_PIPELINES_MATCH_LIST\n> +LIBCAMERA_PIPELINES_MATCH_LIST, pipelines_match_list\n>     Define an ordered list of pipeline names to be used to match the media\n>     devices in the system. The pipeline handler names used to populate the\n>     variable are the ones passed to the REGISTER_PIPELINE_HANDLER() macro in the\n> @@ -55,6 +136,10 @@ LIBCAMERA_PIPELINES_MATCH_LIST\n>  LIBCAMERA_RPI_CONFIG_FILE\n>     Define a custom configuration file to use in the Raspberry Pi pipeline handler.\n>  \n> +   Instead of using a separate configuration file, the whole\n> +   configuration can be put directly into the global configuration file as\n> +   outlined above.\n\nDavid, Naush, what's your opinion on deprecating usage of\nLIBCAMERA_RPI_CONFIG_FILE in favour of using the global configuration\nfile ?\n\n> +\n>     Example value: ``/usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml``\n>  \n>  LIBCAMERA_<NAME>_TUNING_FILE\n> @@ -62,6 +147,13 @@ LIBCAMERA_<NAME>_TUNING_FILE\n>  \n>     Example value: ``/usr/local/share/libcamera/ipa/rpi/vc4/custom_sensor.json``\n>  \n> +pipelines.simple.supported_devices.driver, pipelines.simple.supported_devices.software_isp\n> +   Override whether software ISP is enabled for the given driver.\n> +\n> +   Example `driver` value: ``mxc-isi``\n> +\n> +   Example `software_isp` value: ``true``\n> +\n>  Further details\n>  ---------------\n>  \n> @@ -156,7 +248,7 @@ code.\n>  IPA configuration\n>  ~~~~~~~~~~~~~~~~~\n>  \n> -IPA modules use configuration files to store parameters. The format and\n> +IPA modules use their own configuration files to store parameters. The format and\n\nI'll reflow the paragraph to 80 columns.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  contents of the configuration files is specific to the IPA module. They usually\n>  contain tuning parameters for the algorithms, in JSON format.\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 2ABF8C328C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 21 Sep 2025 03:39:29 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CCCFF6B59C;\n\tSun, 21 Sep 2025 05:39:27 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7473862C35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 21 Sep 2025 05:39:26 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 82532EA0;\n\tSun, 21 Sep 2025 05:38:04 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qacrtjGC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1758425884;\n\tbh=OAxWqc4PhfEGiXor18D3CzoUBwSEg9er3EcAv1iaII0=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=qacrtjGCEfmNipkkbXAHgpi9uSxjRPaKSc7IqRACvfTqrWkharFR4XLBLGbfggD9y\n\tkW6ajKaPifV24noGefxbSGlw9TmZuB+S2GsSOpOjI0ZwLP3P985lWQnXbST9HRIfvh\n\tjb2OTF9Dy93bKd8B0+ofws1O9HRzgn7rHSEp/koY=","Date":"Sun, 21 Sep 2025 06:38:55 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<barnabas.pocze@ideasonboard.com>, Paul Elder\n\t<paul.elder@ideasonboard.com>,  Naushir Patuck <naush@raspberrypi.com>,\n\tDavid Plowman <david.plowman@raspberrypi.com>","Subject":"Re: [PATCH v18 08/12] Documentation: Add global configuration file\n\tdocumentation","Message-ID":"<20250921033855.GC30137@pendragon.ideasonboard.com>","References":"<20250912142915.53949-1-mzamazal@redhat.com>\n\t<20250912142915.53949-10-mzamazal@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20250912142915.53949-10-mzamazal@redhat.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":35946,"web_url":"https://patchwork.libcamera.org/comment/35946/","msgid":"<CAEmqJPrBNj5oavSWEJjn_DgAzc8gstcOo+9Bw_iW4Nmnr8-b2w@mail.gmail.com>","date":"2025-09-22T08:46:23","subject":"Re: [PATCH v18 08/12] Documentation: Add global configuration file\n\tdocumentation","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent and Milan,\n\nOn Sun, 21 Sept 2025 at 04:39, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Milan,\n>\n> Thank you for the patch.\n>\n> David, Naush, there's a question for you below.\n>\n> On Fri, Sep 12, 2025 at 04:29:10PM +0200, Milan Zamazal wrote:\n> > Extend (and rename) the documentation of environment variables with\n> > information about the configuration file.\n> >\n> > Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n> > Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> > ---\n> >  Documentation/documentation-contents.rst      |   2 +-\n> >  Documentation/index.rst                       |   2 +-\n> >  Documentation/meson.build                     |   2 +-\n> >  ...ariables.rst => runtime_configuration.rst} | 116 ++++++++++++++++--\n> >  4 files changed, 107 insertions(+), 15 deletions(-)\n> >  rename Documentation/{environment_variables.rst =>\n> runtime_configuration.rst} (65%)\n> >\n> > diff --git a/Documentation/documentation-contents.rst\n> b/Documentation/documentation-contents.rst\n> > index 5c1118493..4be3729cf 100644\n> > --- a/Documentation/documentation-contents.rst\n> > +++ b/Documentation/documentation-contents.rst\n> > @@ -7,7 +7,7 @@\n> >     * :doc:`/feature_requirements`\n> >     * :doc:`/guides/application-developer`\n> >     * :doc:`/python-bindings`\n> > -   * :doc:`/environment_variables`\n> > +   * :doc:`/runtime_configuration`\n>\n> I like grouping both the configuration file and environment variables in\n> a single document, it's a good idea.\n>\n> >     * :doc:`/api-html/index`\n> >     * :doc:`/code-of-conduct`\n> >     * |\n> > diff --git a/Documentation/index.rst b/Documentation/index.rst\n> > index 251112fbd..200de6f67 100644\n> > --- a/Documentation/index.rst\n> > +++ b/Documentation/index.rst\n> > @@ -12,13 +12,13 @@\n> >\n> >     Application Writer's Guide <guides/application-developer>\n> >     Camera Sensor Model <camera-sensor-model>\n> > -   Environment variables <environment_variables>\n> >     Feature Requirements <feature_requirements>\n> >     IPA Writer's guide <guides/ipa>\n> >     Lens driver requirements <lens_driver_requirements>\n> >     libcamera Architecture <libcamera_architecture>\n> >     Pipeline Handler Writer's Guide <guides/pipeline-handler>\n> >     Python Bindings <python-bindings>\n> > +   Runtime configuration <runtime_configuration>\n>\n> This conflicts with patches recently merged, I'll handle the rebase.\n>\n> >     Sensor driver requirements <sensor_driver_requirements>\n> >     SoftwareISP Benchmarking <software-isp-benchmarking>\n> >     Tracing guide <guides/tracing>\n> > diff --git a/Documentation/meson.build b/Documentation/meson.build\n> > index a8d4afc01..b47b16e97 100644\n> > --- a/Documentation/meson.build\n> > +++ b/Documentation/meson.build\n> > @@ -157,7 +157,6 @@ if sphinx.found()\n> >          'contributing.rst',\n> >          'design/ae.rst',\n> >          'documentation-contents.rst',\n> > -        'environment_variables.rst',\n> >          'feature_requirements.rst',\n> >          'guides/application-developer.rst',\n> >          'guides/ipa.rst',\n> > @@ -169,6 +168,7 @@ if sphinx.found()\n> >          'libcamera_architecture.rst',\n> >          'mali-c55.dot',\n> >          'python-bindings.rst',\n> > +        'runtime_configuration.rst',\n> >          'sensor_driver_requirements.rst',\n> >          'software-isp-benchmarking.rst',\n> >         '../README.rst',\n> > diff --git a/Documentation/environment_variables.rst\n> b/Documentation/runtime_configuration.rst\n> > similarity index 65%\n> > rename from Documentation/environment_variables.rst\n> > rename to Documentation/runtime_configuration.rst\n> > index 0cb4e27cd..8792232d7 100644\n> > --- a/Documentation/environment_variables.rst\n> > +++ b/Documentation/runtime_configuration.rst\n> > @@ -2,14 +2,95 @@\n> >\n> >  .. include:: documentation-contents.rst\n> >\n> > -Environment variables\n> > +Runtime configuration\n> >  =====================\n> >\n> > -The libcamera behaviour can be tuned through environment variables. This\n> > -document lists all the available variables and describes their usage.\n> > -\n> > -List of variables\n> > ------------------\n> > +The libcamera behaviour can be tuned through a configuration file or\n> > +environment variables. This document lists all the configuration options\n> > +and describes their usage.\n> > +\n> > +General rules\n> > +-------------\n> > +\n> > +The configuration file is looked up in the following locations, in this\n> > +order:\n> > +\n> > +- $XDG_CONFIG_HOME/libcamera/configuration.yaml\n> > +- LIBCAMERA_SYSCONF_DIR/configuration.yaml\n> > +- LIBCAMERA_DATA_DIR/libcamera/configuration.yaml\n> > +\n> > +The first configuration file found wins, configuration files in other\n> > +locations are ignored.\n> > +\n> > +Settings in environment variables take precedence over settings in\n> > +configuration files. This allows overriding behaviour temporarily\n> > +without the need to modify configuration files.\n> > +\n> > +Configuration options\n> > +---------------------\n> > +\n> > +Here is an overview of the available configuration options, in the YAML\n> > +file structure:\n> > +\n> > +::\n> > +\n> > +  configuration:\n> > +    ipa:\n> > +      force_isolation: # true/false\n> > +      config_paths:\n> > +      - ... # full path to a directory\n> > +      module_paths:\n> > +      - ... # full path to a directory\n> > +    pipelines_match_list:\n> > +    - ... # pipeline name\n> > +    pipelines:\n> > +      rpi:\n> > +        bcm2835:\n> > +          pipeline_handler:\n> > +            ...\n> > +        pisp:\n> > +          pipeline_handler:\n> > +            ...\n> > +      simple:\n> > +        supported_devices:\n> > +        - driver: # driver name, e.g. `mxc-isi`\n> > +          software_isp: # true/false\n> > +\n> > +Configuration file example\n> > +--------------------------\n> > +\n> > +::\n> > +\n> > +   ---\n> > +   version: 1\n> > +   configuration:\n> > +     ipa:\n> > +       config_paths:\n> > +       - /home/user/.libcamera/share/ipa\n> > +       - /opt/libcamera/vendor/share/ipa\n> > +       module_paths:\n> > +       - /home/user/.libcamera/lib\n> > +       - /opt/libcamera/vendor/lib\n> > +       proxy_paths:\n> > +       - /home/user/.libcamera/proxy/worker\n> > +       - /opt/libcamera/vendor/proxy/worker\n> > +       force_isolation: true\n> > +     pipelines_match_list:\n> > +     - rkisp1\n> > +     - simple\n> > +     pipelines:\n> > +       rpi:\n> > +         bcm2835:\n> > +           pipeline_handler:\n> > +             min_unicam_buffers: 2\n> > +             min_total_unicam_buffers: 2\n> > +       simple:\n> > +         supported_devices:\n> > +         - driver: mxc-isi\n> > +           software_isp: true\n> > +\n> > +List of variables and configuration options\n> > +-------------------------------------------\n> >\n> >  LIBCAMERA_LOG_FILE\n> >     The custom destination for log output.\n> > @@ -24,27 +105,27 @@ LIBCAMERA_LOG_LEVELS\n> >  LIBCAMERA_LOG_NO_COLOR\n> >     Disable coloring of log messages (`more <Notes about debugging_>`__).\n> >\n> > -LIBCAMERA_IPA_CONFIG_PATH\n> > +LIBCAMERA_IPA_CONFIG_PATH, ipa.config_paths\n> >     Define custom search locations for IPA configurations (`more <IPA\n> configuration_>`__).\n> >\n> >     Example value:\n> ``${HOME}/.libcamera/share/ipa:/opt/libcamera/vendor/share/ipa``\n> >\n> > -LIBCAMERA_IPA_FORCE_ISOLATION\n> > +LIBCAMERA_IPA_FORCE_ISOLATION, ipa.force_isolation\n> >     When set to a non-empty string, force process isolation of all IPA\n> modules.\n> >\n> >     Example value: ``1``\n> >\n> > -LIBCAMERA_IPA_MODULE_PATH\n> > +LIBCAMERA_IPA_MODULE_PATH, ipa.module_paths\n> >     Define custom search locations for IPA modules (`more <IPA\n> module_>`__).\n> >\n> >     Example value: ``${HOME}/.libcamera/lib:/opt/libcamera/vendor/lib``\n> >\n> > -LIBCAMERA_IPA_PROXY_PATH\n> > +LIBCAMERA_IPA_PROXY_PATH, ipa.proxy_paths\n> >     Define custom full path for a proxy worker for a given executable\n> name.\n> >\n> >     Example value:\n> ``${HOME}/.libcamera/proxy/worker:/opt/libcamera/vendor/proxy/worker``\n> >\n> > -LIBCAMERA_PIPELINES_MATCH_LIST\n> > +LIBCAMERA_PIPELINES_MATCH_LIST, pipelines_match_list\n> >     Define an ordered list of pipeline names to be used to match the\n> media\n> >     devices in the system. The pipeline handler names used to populate\n> the\n> >     variable are the ones passed to the REGISTER_PIPELINE_HANDLER()\n> macro in the\n> > @@ -55,6 +136,10 @@ LIBCAMERA_PIPELINES_MATCH_LIST\n> >  LIBCAMERA_RPI_CONFIG_FILE\n> >     Define a custom configuration file to use in the Raspberry Pi\n> pipeline handler.\n> >\n> > +   Instead of using a separate configuration file, the whole\n> > +   configuration can be put directly into the global configuration file\n> as\n> > +   outlined above.\n>\n> David, Naush, what's your opinion on deprecating usage of\n> LIBCAMERA_RPI_CONFIG_FILE in favour of using the global configuration\n> file ?\n>\n\nI like this approach, we remove the need for 2 different config files with\na single file.  Once this is all in, I'll attempt to get this consolidated.\n\nRegards,\nNaush\n\n\n\n>\n> > +\n> >     Example value:\n> ``/usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml``\n> >\n> >  LIBCAMERA_<NAME>_TUNING_FILE\n> > @@ -62,6 +147,13 @@ LIBCAMERA_<NAME>_TUNING_FILE\n> >\n> >     Example value:\n> ``/usr/local/share/libcamera/ipa/rpi/vc4/custom_sensor.json``\n> >\n> > +pipelines.simple.supported_devices.driver,\n> pipelines.simple.supported_devices.software_isp\n> > +   Override whether software ISP is enabled for the given driver.\n> > +\n> > +   Example `driver` value: ``mxc-isi``\n> > +\n> > +   Example `software_isp` value: ``true``\n> > +\n> >  Further details\n> >  ---------------\n> >\n> > @@ -156,7 +248,7 @@ code.\n> >  IPA configuration\n> >  ~~~~~~~~~~~~~~~~~\n> >\n> > -IPA modules use configuration files to store parameters. The format and\n> > +IPA modules use their own configuration files to store parameters. The\n> format and\n>\n> I'll reflow the paragraph to 80 columns.\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n> >  contents of the configuration files is specific to the IPA module. They\n> usually\n> >  contain tuning parameters for the algorithms, in JSON format.\n> >\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7721FBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Sep 2025 08:47:01 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 988966B5F9;\n\tMon, 22 Sep 2025 10:46:59 +0200 (CEST)","from mail-ua1-x92d.google.com (mail-ua1-x92d.google.com\n\t[IPv6:2607:f8b0:4864:20::92d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 005B46B58E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Sep 2025 10:46:56 +0200 (CEST)","by mail-ua1-x92d.google.com with SMTP id\n\ta1e0cc1a2514c-8ee8b044dfaso109037241.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Sep 2025 01:46:56 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"FMDX1tc5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1758530816; x=1759135616;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=m3lbZKBR6MxF9MuBGWyg5Cofx6AOXG/FfYudM0trlrQ=;\n\tb=FMDX1tc57hhKmKlPR3mMB/00vh1HCf3riv9S6/BpRoEQ+bo49DUDeN39jfCtkXHmBT\n\tlCmngmCBTpOBoIIaoQpNpxuTkyY23dJ05wGIX9EY6YaQKxNPeDvoYfgw5EBw+okIiOyM\n\tDk2qfx8CGIPccvjxbZJbnWivBWmPAODyInNDeaijBEY8U7Bp0O7XugH5jPanSWjvJtI0\n\tt7pqARDA47zYziprbBWHxjxW7rmXT0qtBu68ntp9xIfFBlroBWJOjnE3AgUAZeNdBpSv\n\tZxA4rNoP1+zzkV354FbuXdGQglDp+cG7VheNQmIBc+PqNuUryVT+3UJLA3HN5vEVGGD8\n\tHSpA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1758530816; x=1759135616;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=m3lbZKBR6MxF9MuBGWyg5Cofx6AOXG/FfYudM0trlrQ=;\n\tb=PJwCawA0P+Du201rqBJBszu+1q4374uLT+6/kcEOYcrKRCHSlZSqVtOqCjfLRy/ZSl\n\t+T5wGD18l6nMF/5UHK922CtpoROrf4b5uSDdGi7KMbIjUAnJ/20pfeKMQi5tRPd2qMgA\n\tP/BuyYpdbWBL3eKcGeb+hOL2LPXEcx+GhFgA7rbLM4WH2TKM2IjwwgFqaGY5kRDWdPkX\n\tt4f6vaMdLsFxhZ3iYoULixTXja/vlrHdyMgu/2vAVojMlZVHhYJu5gVFGz6qdEMLJbbN\n\teB0JqqV/HWdFxGsbCmyHeKpx60HLO4Yhneows57cFcSGrDaFgAjmpUXaEH6hwRjYo6aQ\n\t2zxg==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCVZv00zHGLbCeexBTY+UcvZSPCH4ME1mFzP0bRt7AhWRE1thRFyBkxmvVXcQKNck+80mWUe3rTrmEHgKpSxiD0=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YzGEkVomwnRWK8/zQZmGz+QAmsChGiHT+3JWqjiwGwJEeAK5Fg6\n\tjghgn781x4EZM0AbiwPzSYWbcQL4JKqE8sAWpJYz8XNSCfMmmNqBELd9LC9igNXxVRC1vSRGXYK\n\tbOZd2jWXrFbyIZ2DOrUqgOZjylvwl978wP9bx4MFKQg==","X-Gm-Gg":"ASbGnctvFW7qwULCDzyeaRCTEJUDwTK/+QKFtQVGiDw4W8VgYqGfLz1i2fgI5MxuUxp\n\tFz5/WJ6fTr4BN/0iITQYtj02KcLDx1rPhX2wet+FYQCyGb1JH7ebPxVI2Kwiq7tJ3eMkJQ0zYF4\n\tBm4TmCG9Z8+e/VAxuJftM5DtJLRv25l1rakVPTNMZVPansf3oOZHM+/p4KJVmBKW0aqaaq98WIR\n\tVhdnxGJRA0FTmTR6jkqOgOoGwWm9ih5guTc3BI=","X-Google-Smtp-Source":"AGHT+IF7V03Xs6na7HTomvUG98Btm4v+EG0PK7xGoUZA8VAqndBbx8ex0bVODR36ljVJQ37wL8ucBono2woMQitsZtU=","X-Received":"by 2002:a05:6102:30d8:20b0:5a0:baac:bf99 with SMTP id\n\tada2fe7eead31-5a0baacc0b3mr283361137.3.1758530815702; Mon, 22 Sep 2025\n\t01:46:55 -0700 (PDT)","MIME-Version":"1.0","References":"<20250912142915.53949-1-mzamazal@redhat.com>\n\t<20250912142915.53949-10-mzamazal@redhat.com>\n\t<20250921033855.GC30137@pendragon.ideasonboard.com>","In-Reply-To":"<20250921033855.GC30137@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Mon, 22 Sep 2025 09:46:23 +0100","X-Gm-Features":"AS18NWDGYjo2CNdURS1p0IFOA_9YAVET0XVmoZEdZzVaGS58mQntktAN-RLNduA","Message-ID":"<CAEmqJPrBNj5oavSWEJjn_DgAzc8gstcOo+9Bw_iW4Nmnr8-b2w@mail.gmail.com>","Subject":"Re: [PATCH v18 08/12] Documentation: Add global configuration file\n\tdocumentation","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab?=\n\t=?utf-8?b?w6FzIFDFkWN6ZQ==?= <barnabas.pocze@ideasonboard.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>, David Plowman\n\t<david.plowman@raspberrypi.com>","Content-Type":"multipart/alternative; boundary=\"00000000000098c67d063f5fdc03\"","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]