Show a cover letter.

GET /api/covers/27513/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 27513,
    "url": "https://patchwork.libcamera.org/api/covers/27513/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/27513/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20260728172447.68551-1-johannes.goede@oss.qualcomm.com>",
    "date": "2026-07-28T17:24:42",
    "name": "[v6,0/5] ipa: Allow IPA creation by name",
    "submitter": {
        "id": 242,
        "url": "https://patchwork.libcamera.org/api/people/242/?format=api",
        "name": "Hans de Goede",
        "email": "johannes.goede@oss.qualcomm.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/27513/mbox/",
    "series": [
        {
            "id": 6088,
            "url": "https://patchwork.libcamera.org/api/series/6088/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6088",
            "date": "2026-07-28T17:24:42",
            "name": "ipa: Allow IPA creation by name",
            "version": 6,
            "mbox": "https://patchwork.libcamera.org/series/6088/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/27513/comments/",
    "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 AD66FBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 28 Jul 2026 17:24:55 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 42E9967F9D;\n\tTue, 28 Jul 2026 19:24:54 +0200 (CEST)",
            "from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com\n\t[205.220.180.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BBAD967E44\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 19:24:52 +0200 (CEST)",
            "from pps.filterd (m0279873.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t66SEcesP3063320 for <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 17:24:51 GMT",
            "from mail-qt1-f198.google.com (mail-qt1-f198.google.com\n\t[209.85.160.198])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fpuyg9x4s-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 17:24:50 +0000 (GMT)",
            "by mail-qt1-f198.google.com with SMTP id\n\td75a77b69052e-51c20762d21so1025751cf.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 10:24:50 -0700 (PDT)",
            "from t14s\n\t(2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:7d4:cca3:ec08:7ac7])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-c1f83fabcdasm11136466b.48.2026.07.28.10.24.47\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 28 Jul 2026 10:24:48 -0700 (PDT)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"IbhpdOkr\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"g/dE5NFv\"; dkim-atps=neutral",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:content-type:date:from:message-id\n\t:mime-version:subject:to; s=qcppdkim1; bh=22ln3QFFKzaEkIn50C6/R0\n\t/sJOfsgsSwnR24e2WggCw=; b=IbhpdOkrYGAyfXIhp8NLucghH9ywlixf5l0y3G\n\t2SvY8124wmC7e8FGISGpC3VFGGr68awBEdlRfl8GFr/obI6r6peJTebqyWsgfGCk\n\tzsmu0CQz3Udhuoz399pJ1yHdvUK2SLkLvDOBHaNnuBWSGVE62BvyMA2PHIwzAiXx\n\tyO+TiBfuSsxBlKy2c8XdpEY0JAYH6F1iCluKH6G65iNih/YRHbWlD4aiy45EqFNq\n\tr/1Ua3YBUAWpv3NIhNS0srgHLsXMgeldqOq7BG17NYBAIgDM00Q7ALoITq0VIH70\n\thmDs9tm+V7du9SZvaroKgaFkZPZHIbPoH+cD2pgO6DTLb9dw==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1785259490; x=1785864290;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:content-type:mime-version:message-id:date\n\t:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to\n\t:content-type; bh=22ln3QFFKzaEkIn50C6/R0/sJOfsgsSwnR24e2WggCw=;\n\tb=g/dE5NFvwkmUb6BWIzfrXH/WAdQnWSKeZpFYoPOkj9hXwaJV3zbIMHdXYXjf8SSRn3\n\tp+k+wCOsdc6Q7sRGlFXM5/T46/5CtH3kOK2bHgRB4FMOcmhkl4+KeHS7qfT4WeZQvvfq\n\tEOojpCXe/AbOR756Dr2OhLyHolBP5NV29ZwZ6oge+WoZ68+04uQkc9q9Zllo/sv01q5K\n\tRhOLvBmJqeik9+wgz2jHZC0cDLBSfqkS683zovC/odp2fOPtiFiH/HEP9L2cRmSd/uez\n\t8qSDrybTDbGewtxumDpRAZvjPQTKzHrqxsamFW8p0s5EO7OzsyNoOS0OH3EEmOS4Edhv\n\taQfA=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1785259490; x=1785864290;\n\th=content-transfer-encoding:content-type:mime-version:message-id:date\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to:content-type;\n\tbh=22ln3QFFKzaEkIn50C6/R0/sJOfsgsSwnR24e2WggCw=;\n\tb=a9z/ZZ4PP4nI5Gl0oK1DSu0o8jac30yO+eO+v6gLuN6xwwPoUBtTv/2jIJB0XksW8u\n\t1YRRXN1lVKw9rVXB/cP+cv2q/wVzkX8MZsL4s9cylRmzyKiuEizg7LggYBx1+JrIIgI4\n\tgjG6ohaSdB/xf/JZjSeuLTdEpy5LR5Ia4+PEUgtu8SU3vtoB7gmp3lj6vIm0P+x7pvEr\n\tZN0dv5pRRba/9r8NPAJg4yewM4vCw2rRAO4Y/I4yobEdhutUmUpOUSMaGifooPYXv6yJ\n\tQdklaCSQ0qc9LwoaJuw74BR/xmjNB1mZRc7bR6GEkKAksljGCNcpYD1phvSCklxZ1HPd\n\tXAsg==",
        "X-Gm-Message-State": "AOJu0YyeYs6B4vuvSTaiM0J/xU+G7X4PvD8vuC+HkOl52gucygtswLuQ\n\ttIP4V7N2Uiy/ZvLvIKG0BaJwZhNgYtKvK9truG61EGV+XkeTW+kFz1GcUoKJ1m8zJkGrTo2fzjZ\n\tJotMSb1DRdEiJjI/fh97+cUVXgW6RAxipiQuF6FjaYAYDHUONHvFWyv1XoWYaxeBL81YGVOyzXf\n\tAYG8+MrZ4T",
        "X-Gm-Gg": "AR+sD11oVUjan8MO1g8UnvnRMcF7OFj9BxKopHuRMwNLSkCGQb0ZdMET7VGEHOf4Sy6\n\t1nDJpbmvM7BZdA2FAILQUu+QJDpjmyEYOy7XV37R9CcF+DQw1w5k7oBmWUpNbufOgWXk6W+yr+d\n\t9tWHBFXAREM6NsmrNW97qE/63m+ypVxR04klhDIX/WLGyljxeHPI3M/DPsz7WVguqPiEq6VETcZ\n\twqkXKQRut6vuoZ/fNCcRp1fhrnWci68MwQskJTpFZuub/8SSiyw/bxw3uH9XSbIJyP37bFi1eot\n\tUX19Uizz9vqT2ceDVHsXu0iEhUo/BqIFprGor7BXld+QOWnPoMfe75WrlaArnM57XRDZd6iU9Uh\n\tpF0nDfuouw55uO2asKpZADodpZymZJ8O8P0wOfPz2UD7E5E4aHI6pUEHsG/owl4sQXF74vqlqUk\n\tDGdHV2dHK69UM=",
        "X-Received": [
            "by 2002:a05:622a:1f94:b0:51c:555:7dea with SMTP id\n\td75a77b69052e-529d711316emr32346771cf.30.1785259489709; \n\tTue, 28 Jul 2026 10:24:49 -0700 (PDT)",
            "by 2002:a05:622a:1f94:b0:51c:555:7dea with SMTP id\n\td75a77b69052e-529d711316emr32346461cf.30.1785259489099; \n\tTue, 28 Jul 2026 10:24:49 -0700 (PDT)"
        ],
        "From": "Hans de Goede <johannes.goede@oss.qualcomm.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>, =?utf-8?q?Niklas_S=C3=B6?=\n\t=?utf-8?q?derlund?= <niklas.soderlund+renesas@ragnatech.se>, Loic Poulain\n\t<loic.poulain@oss.qualcomm.com>, Hans de Goede\n\t<johannes.goede@oss.qualcomm.com>",
        "Subject": "[PATCH v6 0/5] ipa: Allow IPA creation by name",
        "Date": "Tue, 28 Jul 2026 19:24:42 +0200",
        "Message-ID": "<20260728172447.68551-1-johannes.goede@oss.qualcomm.com>",
        "X-Mailer": "git-send-email 2.54.0",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-Proofpoint-GUID": "3JhXzpIdOx9UQUUw7wS1e7UzSFKajGS9",
        "X-Proofpoint-ORIG-GUID": "3JhXzpIdOx9UQUUw7wS1e7UzSFKajGS9",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX61oFQhtvvwFz\n\tP/zvBHtvInHglvB/KxD/vx720EuHnnTPDbXF2N/HpuQNCtgBeSgQYHeWFBdP8zwV1+J7nYVdDcj\n\tk5wgrkLOUG1dCsRETmGFZ8V8y7qA//O2lTTWn+CR3JorlDdcDUlo0t0ZQrY0vdLet3bOaOZzlxn\n\tP6U+qtQgCqPlRlK+HwQfhNhJgONvr/YV2ESa8LUaIyIyzclkwabQLVkRg/gbN/bCLQnsmffMxxX\n\tOT8pqaAo55eUqYXDkSJaUEAAb4qMeO7YrHgPlUPljIAD6jF+7fmo/BxTKJWXlh/TRHZpRrsFwCx\n\tKcdYJvM/nREyNR5rsKOgegFLEqeVBHwo0U6h0fEOx3b2yA26ttOP2qMPKVXaWONxfzSgPNS7NbF\n\tmeN/ZA+WQ7O4FnHmtrhArK/r4zIRWhPnHdZXVf10+OhN+ks9tzlqksELjVD8U/PypsF9EUrmxE+\n\thRb7Ae8SY3URO1BwnMg==",
        "X-Authority-Analysis": "v=2.4 cv=aoWCzyZV c=1 sm=1 tr=0 ts=6a68e5e2 cx=c_pps\n\ta=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10\n\ta=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n\ta=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=YAyIRdgMAAAA:8\n\ta=RxCMVEpQfz8bXD466YwA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22\n\ta=o1rO4XtwZBNj6n05oSJ_:22",
        "X-Proofpoint-Spam-Info": "AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX7+uzoFgx/KX7\n\tyU4o8Y3KM0p1SsCMVZia+tpTzQIJtcqqGmort2tisO94tFBrAnTi+X2SvobXgHzEnVH5eVf8qK2\n\tJXxhmv0XUoRgIYPk5ZktonXciVOLxDQ=",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.134,\n\tFMLib:17.12.100.49\n\tdefinitions=2026-07-28_04,2026-07-28_02,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\tpriorityscore=1501 lowpriorityscore=0 clxscore=1015 spamscore=0\n\tbulkscore=0\n\tadultscore=0 malwarescore=0 impostorscore=0 phishscore=0\n\tsuspectscore=0\n\tclassifier=typeunknown authscore=0 authtc= authcc= route=outbound\n\tadjust=0\n\treason=mlx scancount=1 engine=8.22.0-2606150000\n\tdefinitions=main-2607280153",
        "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": "Hi All,\n\nThis is v6 of my / Jacopo's \"ipa: Allow IPA creation by name\" series,\n\nThis new version switches all pipeline handlers over to creating their\nIPA by IPA proxy type rather then by name, with the exception of the\nraspberry pi pipeline handlers which are switched to creating the IPA by\nexplicitly passing the pipeline handler name since the rpi/vc4 and rpi/pisp\nIPAs share the same IPA proxy type.\n\n\nUse-cases for this / series blocked by this are:\n\n1. Using a differently named IPA with the rcar-gen4 pipeline handler:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=6003\n\n2. Using the softISP stats + IPA with the atomisp pipeline handler:\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=5169\n\n3. The new camss pipeline handler will use the softISP as a fallback on\nplatforms where there is no hardware ISP support yet (so most platforms)\nthe softISP needs to be able to load its IPA from both the \"simple\" and\n\"camss\" pipeline handlers, requiring something like this series.\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=6070\n\nThis has been tested by Jacopo on R-Car Gen4 and on Mali-C55 and by me\non Qualcomm Agetti and Hamoa SoCs with both the simple and camss pipeline\nhandlers.\n\nChanges in v6:\n- Drop patch switching softISP to create its IPA by name\n- Switch raspberry-pi pipeline-handlers to creating IPA by name\n- Switch all other pipeline-handlers to creating IPA by proxy type name\n- Rename \"simple\" softISP IPA to \"soft\" to match its proxy type name\n\nChanges in v5:\n- Rebase on top of db998e618aaa (\"libcamera: pipeline_handler: Add\n  createIPA() function\") which moved the createIPA() wrapper for\n  pipeline-handlers into the PipelineHandler class\n- https://patchwork.libcamera.org/project/libcamera/list/?series=5940\n\nChanges in v4:\n- Rebase, change author of first patch to my new email address\n- https://patchwork.libcamera.org/project/libcamera/list/?series=5876&state=*\n\nChanges in v3:\n- Add \"ipa: Allow pipelines to have differently named IPA\" patch\n- https://lists.libcamera.org/pipermail/libcamera-devel/2025-October/053821.html\n\nChanges in v2:\n- Update tags, fix stray blank line\n\nChanges in v1 from Hans' original patch:\n- Slightly different approach addressing the review comments on Hans' v1 by\n  creating an overload for IPAManager::createIPA() that allows pipelines to\n  specify the IPA module name.\n\nRegards,\n\nHans\n\n\nHans de Goede (3):\n  libcamera: Create IPA by name\n  pipeline: rpi: Explictly pass pipe()->name() when creating IPA\n  libcamera: Create IPA by IPA proxy type name\n\nJacopo Mondi (2):\n  ipa: ipa_module: Remove pipelineName\n  ipa: Allow pipelines to have differently named IPA\n\n include/libcamera/internal/ipa_manager.h      |  6 +--\n include/libcamera/internal/ipa_module.h       |  4 +-\n include/libcamera/internal/pipeline_handler.h |  9 ++++-\n include/libcamera/ipa/ipa_module_info.h       |  1 -\n meson_options.txt                             |  2 +-\n src/ipa/ipu3/ipu3.cpp                         |  1 -\n src/ipa/mali-c55/mali-c55.cpp                 |  1 -\n src/ipa/meson.build                           | 40 ++++++++++++++-----\n src/ipa/rkisp1/rkisp1.cpp                     |  1 -\n src/ipa/rpi/pisp/pisp.cpp                     |  1 -\n src/ipa/rpi/vc4/vc4.cpp                       |  1 -\n .../{simple => soft}/algorithms/adjust.cpp    |  0\n src/ipa/{simple => soft}/algorithms/adjust.h  |  0\n src/ipa/{simple => soft}/algorithms/agc.cpp   |  0\n src/ipa/{simple => soft}/algorithms/agc.h     |  0\n .../{simple => soft}/algorithms/algorithm.h   |  0\n src/ipa/{simple => soft}/algorithms/awb.cpp   |  2 +-\n src/ipa/{simple => soft}/algorithms/awb.h     |  0\n src/ipa/{simple => soft}/algorithms/blc.cpp   |  0\n src/ipa/{simple => soft}/algorithms/blc.h     |  0\n src/ipa/{simple => soft}/algorithms/ccm.cpp   |  0\n src/ipa/{simple => soft}/algorithms/ccm.h     |  0\n .../{simple => soft}/algorithms/meson.build   |  0\n src/ipa/{simple => soft}/data/meson.build     |  2 +-\n .../{simple => soft}/data/uncalibrated.yaml   |  0\n src/ipa/{simple => soft}/ipa_context.cpp      |  0\n src/ipa/{simple => soft}/ipa_context.h        |  0\n src/ipa/{simple => soft}/meson.build          |  0\n src/ipa/{simple => soft}/module.h             |  0\n src/ipa/{simple => soft}/soft_simple.cpp      |  3 +-\n src/ipa/vimc/vimc.cpp                         |  1 -\n src/libcamera/ipa_manager.cpp                 |  8 ++--\n src/libcamera/ipa_module.cpp                  | 29 ++++++--------\n .../pipeline/rpi/common/pipeline_base.cpp     |  2 +-\n src/libcamera/pipeline_handler.cpp            | 25 +++++++++++-\n test/ipa/ipa_interface_test.cpp               |  2 +-\n test/ipa/ipa_module_test.cpp                  |  3 --\n .../module_ipa_proxy.h.tmpl                   |  2 +\n 38 files changed, 91 insertions(+), 55 deletions(-)\n rename src/ipa/{simple => soft}/algorithms/adjust.cpp (100%)\n rename src/ipa/{simple => soft}/algorithms/adjust.h (100%)\n rename src/ipa/{simple => soft}/algorithms/agc.cpp (100%)\n rename src/ipa/{simple => soft}/algorithms/agc.h (100%)\n rename src/ipa/{simple => soft}/algorithms/algorithm.h (100%)\n rename src/ipa/{simple => soft}/algorithms/awb.cpp (98%)\n rename src/ipa/{simple => soft}/algorithms/awb.h (100%)\n rename src/ipa/{simple => soft}/algorithms/blc.cpp (100%)\n rename src/ipa/{simple => soft}/algorithms/blc.h (100%)\n rename src/ipa/{simple => soft}/algorithms/ccm.cpp (100%)\n rename src/ipa/{simple => soft}/algorithms/ccm.h (100%)\n rename src/ipa/{simple => soft}/algorithms/meson.build (100%)\n rename src/ipa/{simple => soft}/data/meson.build (80%)\n rename src/ipa/{simple => soft}/data/uncalibrated.yaml (100%)\n rename src/ipa/{simple => soft}/ipa_context.cpp (100%)\n rename src/ipa/{simple => soft}/ipa_context.h (100%)\n rename src/ipa/{simple => soft}/meson.build (100%)\n rename src/ipa/{simple => soft}/module.h (100%)\n rename src/ipa/{simple => soft}/soft_simple.cpp (99%)"
}