Show a patch.

GET /api/1.1/patches/23936/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 23936,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/23936/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/23936/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20250724103834.54611-9-mzamazal@redhat.com>",
    "date": "2025-07-24T10:38:28",
    "name": "[v15,08/12] config: Add global configuration file documentation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "e3309bfb69747e69a2c6f5656c4783344286943a",
    "submitter": {
        "id": 177,
        "url": "https://patchwork.libcamera.org/api/1.1/people/177/?format=api",
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/23936/mbox/",
    "series": [
        {
            "id": 5320,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5320/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5320",
            "date": "2025-07-24T10:38:20",
            "name": "Add global configuration file",
            "version": 15,
            "mbox": "https://patchwork.libcamera.org/series/5320/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/23936/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/23936/checks/",
    "tags": {},
    "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 75DB5BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Jul 2025 10:39:17 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 21EB5690FE;\n\tThu, 24 Jul 2025 12:39:17 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6BE62690F8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Jul 2025 12:39:14 +0200 (CEST)",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-630-FiaZ8qLaPjCVHDEs3Et1YA-1;\n\tThu, 24 Jul 2025 06:39:10 -0400",
            "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.17])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 2E495180048E; Thu, 24 Jul 2025 10:39:09 +0000 (UTC)",
            "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.32.255])\n\tby mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 1BDD4195608D; Thu, 24 Jul 2025 10:39:06 +0000 (UTC)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"XSpKu8gf\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1753353553;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=OkU2Ys2bKGp44/yOokTkDuMNEMTIJPbEqPSo4MiVPpk=;\n\tb=XSpKu8gfMukuvVuSSxg85jdquoxaVp7H8aVkmO47d+EmsPQt4sXkO3zUsl27y+4Y01tCbZ\n\t50c8m65pO+Ik0AGpbnjmo8mT37JNJRc7cM5uSbgQdjXjx2NXX4YGiLRKGTNyoJc4ME0AA2\n\tsm3r1mBpDhSvF1n6bXr4ULH1OwudEB0=",
        "X-MC-Unique": "FiaZ8qLaPjCVHDEs3Et1YA-1",
        "X-Mimecast-MFC-AGG-ID": "FiaZ8qLaPjCVHDEs3Et1YA_1753353549",
        "From": "Milan Zamazal <mzamazal@redhat.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Milan Zamazal <mzamazal@redhat.com>, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<barnabas.pocze@ideasonboard.com>, Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>",
        "Subject": "[PATCH v15 08/12] config: Add global configuration file\n\tdocumentation",
        "Date": "Thu, 24 Jul 2025 12:38:28 +0200",
        "Message-ID": "<20250724103834.54611-9-mzamazal@redhat.com>",
        "In-Reply-To": "<20250724103834.54611-1-mzamazal@redhat.com>",
        "References": "<20250724103834.54611-1-mzamazal@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "06MOzrSNCyCWOvoj_n2ww3sifr1hHmxFB3Z7zskDqgY_1753353549",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "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>"
    },
    "content": "Extend (and rename) the documentation of environment variables with\ninformation about the configuration file.\n\nSigned-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} | 102 ++++++++++++++++--\n 4 files changed, 96 insertions(+), 12 deletions(-)\n rename Documentation/{environment_variables.rst => runtime_configuration.rst} (67%)",
    "diff": "diff --git a/Documentation/documentation-contents.rst b/Documentation/documentation-contents.rst\nindex 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    * :doc:`/api-html/index`\n    * :doc:`/code-of-conduct`\n    * |\ndiff --git a/Documentation/index.rst b/Documentation/index.rst\nindex 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    Sensor driver requirements <sensor_driver_requirements>\n    SoftwareISP Benchmarking <software-isp-benchmarking>\n    Tracing guide <guides/tracing>\ndiff --git a/Documentation/meson.build b/Documentation/meson.build\nindex 3afdcc1a8..4e17c41c0 100644\n--- a/Documentation/meson.build\n+++ b/Documentation/meson.build\n@@ -129,7 +129,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@@ -141,6 +140,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',\ndiff --git a/Documentation/environment_variables.rst b/Documentation/runtime_configuration.rst\nsimilarity index 67%\nrename from Documentation/environment_variables.rst\nrename to Documentation/runtime_configuration.rst\nindex 6f1235587..911203db5 100644\n--- a/Documentation/environment_variables.rst\n+++ b/Documentation/runtime_configuration.rst\n@@ -2,15 +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+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: # pipeline names, separated by commas\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: rkisp1,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\n -----------------\n \n+The corresponding configuration file paths, if available, are listed in parentheses.\n+\n LIBCAMERA_LOG_FILE\n    The custom destination for log output.\n \n@@ -24,27 +104,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 +135,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 to the global configuration file as\n+   outlined above.\n+\n    Example value: ``/usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml``\n \n LIBCAMERA_<NAME>_TUNING_FILE\n@@ -156,7 +240,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 contents of the configuration files is specific to the IPA module. They usually\n contain tuning parameters for the algorithms, in JSON format.\n \n",
    "prefixes": [
        "v15",
        "08/12"
    ]
}