Show a patch.

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

{
    "id": 27518,
    "url": "https://patchwork.libcamera.org/api/patches/27518/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/27518/",
    "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-6-johannes.goede@oss.qualcomm.com>",
    "date": "2026-07-28T17:24:47",
    "name": "[v6,5/5] libcamera: Create IPA by IPA proxy type name",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "d8022d9796814195e0bcd02520d6facc929317c7",
    "submitter": {
        "id": 242,
        "url": "https://patchwork.libcamera.org/api/people/242/?format=api",
        "name": "Hans de Goede",
        "email": "johannes.goede@oss.qualcomm.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/27518/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/patches/27518/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/27518/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 3ABF0C32FE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 28 Jul 2026 17:25:04 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D2CE167FAA;\n\tTue, 28 Jul 2026 19:25:02 +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 0300167FB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 19:24:58 +0200 (CEST)",
            "from pps.filterd (m0279868.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t66SGJXlu3327954 for <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 17:24:57 GMT",
            "from mail-qt1-f197.google.com (mail-qt1-f197.google.com\n\t[209.85.160.197])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fpyukracs-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:57 +0000 (GMT)",
            "by mail-qt1-f197.google.com with SMTP id\n\td75a77b69052e-51c20762d21so1028231cf.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 28 Jul 2026 10:24:57 -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.54\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 28 Jul 2026 10:24:55 -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=\"eV62rF3p\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"PEY0EegU\"; dkim-atps=neutral",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:date:from:in-reply-to:message-id\n\t:mime-version:references:subject:to; s=qcppdkim1; bh=c+O9A6RXZNT\n\t/7ALRGO815PqHixx+14el9z+DkMtGVRs=; b=eV62rF3pzQU+HH+SvrvJT6cTL/l\n\tHIwcwZNFhYPfLHnkIR/9j6BYdZFr72XmjxUIqtUqWE/xw/UE/yt8Ttn+1JX1tA2b\n\t64/9heRmj3nSIaJMeXOsTVJnOI1xX/JweQyHL+XstZjuv9X3vEpq7aWhsdPyBpkh\n\teqzVy2cFYYJIAjK8hPqm3REe1vCNhkY331yujwv4Cl4NNnq62AfJ5PRFcTpQd0qE\n\tclBIbs508gVsJ1TVXZNLxeA9byEHtCCwf3eeNPOObzkvQAkFomxsxPGq+de79F87\n\tljjIRkWtapgII/HC+B/iA/vK8EkuwBtModZ4SxCq93Ma6vAPrB+zdXBLwtg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1785259497; x=1785864297;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to:content-type;\n\tbh=c+O9A6RXZNT/7ALRGO815PqHixx+14el9z+DkMtGVRs=;\n\tb=PEY0EegUtptCLzxXYe+09f2L3ZOXYMxEsZYORJKQFdWqVnr+4MJgnWBondz2z2ysnq\n\tadh7v4mxy3huL6oPJLQLJ/ch65nGFL41JiYUzDVCXiHEwFcirjkM/01tgwGOGhy5MVJ9\n\tQZb1d51psvf4aeBdTrx+HiH1G+UP0rc1ahdAqb2Qe6uv0FV4vFI7OlGGR+8UqRikaGgH\n\tfT3UM/2JN/Q4F8WG79JSCOBK+nMHEFAMh4Aa/SSIzZv3aVJACCqHIl59rL3YKAYsJNEr\n\toM4spKqdBZdRCy2UGNelxpicR7sLMLoH4y2M4MEZetODazqc3nQ7viq/dRD1L4Bv1BPJ\n\toEZw=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1785259497; x=1785864297;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to:content-type;\n\tbh=c+O9A6RXZNT/7ALRGO815PqHixx+14el9z+DkMtGVRs=;\n\tb=DNoL68m3uhwfQDajQv6/Xkg2FOTEGyqhtRUffSU3yl83CBwOqEE2wmsJG3I43RNoN0\n\tpemMgORXHvQIbSjdFVtESns0fKf0vO44BQj0mwOmVeXAskW3HwBtot/UcqI8ZqkbrVQ5\n\tlTNxdzQHAecm7Ul9MzEuaMksyyWkfOu7ZfgujImj7f5qLzYXGelUI7jVl2iQF+vFPUVI\n\tloIORhyJDdgmpgftRIKPyT/niNRCeBnQ/R7rnzelDuWkoYLsYoue/3DwUrlMYYInmC46\n\tp/ZLvC6X56CJn9Pl7Wgh/9ddRY+PHR2pXiBbhrTXDzC2iKF+pAqrX6zpllE5qfOYL9P7\n\t+Fsw==",
        "X-Gm-Message-State": "AOJu0YyAGpEHix7m6dADySWPo3AfjEPUdwUtUOTJK+A45KyD8F6Syuy2\n\tTxnvFxQGK290lyHVgFAAEOZwJNrHzvqksq4Wh40kEzUQu+MZjoPcJrkS+EEtct+PAmUP6yzoV1N\n\tWwukSxZ56b8KFHEIfNS7E073XruYsxWS5ekYTw7kFMshzptAgUqTExjvtSrxOY3GPXKw+ryl5Sp\n\tNHlEhIRLkw",
        "X-Gm-Gg": "AR+sD13JTL5O2JQEvKueCcuVgfMnjVv2ArE7Ipgi4qPYTz5x18J3FjQH2eyyOP4ju88\n\taAMClDsEJHaFfGnXcwzmPtCeullqK/f3KvVRYZHysBvXXj5eezhWQYRggemBbEpXqyzJendd/Dm\n\tl/9G3cbRabVsSjELtG+/Up8R47CkP1VjDqKGj2E10yhmfIBOFvBd3ZZB4ScPI74PuyeMXVeT9KU\n\t4TGgnxScUA/VilNRHf4qp1Sk1yeyIRzY5uSuWk7H/IjuhvbgAbmmLuexr6icwTOnfLrtf8hZbMQ\n\tX1B4ypJqMPHzG1N+C4vaMoBbAx1weTToB4H1Wijg9flCjorghQ7XB9pBGalQu0MgWAswpfl8Yfg\n\tuusrvZGfgpr0iu6UXiNsi2qP2fiMmZB12GUyPK6X7rg55NHJODbCPeScZM5wqNhrBT4vXuv/oR/\n\tLTgDzewMsjwU8=",
        "X-Received": [
            "by 2002:ac8:5981:0:b0:51a:8c99:1f18 with SMTP id\n\td75a77b69052e-529d7234c58mr27050811cf.71.1785259496882; \n\tTue, 28 Jul 2026 10:24:56 -0700 (PDT)",
            "by 2002:ac8:5981:0:b0:51a:8c99:1f18 with SMTP id\n\td75a77b69052e-529d7234c58mr27050361cf.71.1785259496199; \n\tTue, 28 Jul 2026 10:24:56 -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 5/5] libcamera: Create IPA by IPA proxy type name",
        "Date": "Tue, 28 Jul 2026 19:24:47 +0200",
        "Message-ID": "<20260728172447.68551-6-johannes.goede@oss.qualcomm.com>",
        "X-Mailer": "git-send-email 2.54.0",
        "In-Reply-To": "<20260728172447.68551-1-johannes.goede@oss.qualcomm.com>",
        "References": "<20260728172447.68551-1-johannes.goede@oss.qualcomm.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Authority-Analysis": "v=2.4 cv=O/kJeh9W c=1 sm=1 tr=0 ts=6a68e5e9 cx=c_pps\n\ta=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=RAioF0-LDSMA:10\n\ta=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n\ta=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=_0kJXWGtG4qjkoVi4RIA:9\n\ta=a_PwQJl-kcHnX1M80qC6:22",
        "X-Proofpoint-GUID": "uFsMVbeS3DN5sSI8b-ZAYeeCFTF4Rio3",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX3s6Y7vfl3TD+\n\tEHQxQwc3B6KdlJFzbKvuYUuAiclIdQGadUpAPsGJNTePuSLowvVCq6ERKmDGOUo9GyUq+5+TsK5\n\t+CntMfROYkGJ4HRbSBfckyqejhGUXgtrM2eW0EQDnAdc4ViKe/eee+YH5BidRjQHaUwj7D2TaGX\n\tWrW0NHvyWK7kQomFaMW2PEh6p7TgTK58Wha0sJZ28qg4kO3uYrt8L8hppQevB2CNu2UERdHGUiJ\n\tN1Xjw7vE6uF9ysmUMylgEYEERrdNq8sZxfuhQNvE/ysW+pfOebjFEYBPPTYP7P2ldlUQ9EXsjIL\n\tFWEZKbGse6c4NPMK07mQltzzonyLC1ntDs7czorUO/JEtJRUkYED3Cs3gRO1CRakJE4c1N6rKc5\n\tOdD32H580WdilNAJ5F/YEQgl90GwEM4zsxDuhQQDy/wFKyyCW1raktnpQynDBU5tNr626w41BW5\n\tTS2IVaYEJwL3stfEglg==",
        "X-Proofpoint-ORIG-GUID": "uFsMVbeS3DN5sSI8b-ZAYeeCFTF4Rio3",
        "X-Proofpoint-Spam-Info": "AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX3u6ZUVkj34V4\n\tukd87mifpo3RXiGOiP89dBxAaVWPqT8Qye9KG1hW69GASG6N9T4y1zPb7/iG6gF/n+lzRYE2v6p\n\tOki4+biibO32eiNbcBkjuqDSbYHGuV4=",
        "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\tmalwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0\n\timpostorscore=0\n\tsuspectscore=0 phishscore=0 clxscore=1015 spamscore=0\n\tlowpriorityscore=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": "Currently createIPA() / IPAManager::module() assume that there is a 1:1\nrelationship between pipeline handlers and IPAs and IPA matching is done\nbased on matching the pipe's name to ipaModuleInfo.name[].\n\nThis coupling between pipeline name and which IPA to create is undesirable\nand makes it impossible to for example use the softISP as a fallback in\nother pipeline handlers then the simple pipeline handler.\n\nThe actual API contract between the IPA and the pipeline handler is given\nby the IPA proxy type. Add a static IPAProxyXXX::name() to the generated\nIPAProxyXXX classes and use this in PipelineHandler::createIPA() instead\nof using PipelineHandler::name().\n\nThis requires changing the name, as well as the subdirectory of the softISP\nIPA from \"simple\" to \"soft\", which is the more sensible name anyway.\n\nNote: this means that softISP IPA config files will now be looked for under\n/usr/share/libcamera/ipa/soft instead of /usr/share/libcamera/ipa/simple!\n\nSigned-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>\n---\n include/libcamera/internal/pipeline_handler.h               | 2 +-\n meson_options.txt                                           | 2 +-\n src/ipa/meson.build                                         | 2 +-\n src/ipa/{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 src/ipa/{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 src/ipa/{simple => soft}/algorithms/meson.build             | 0\n src/ipa/{simple => soft}/data/meson.build                   | 2 +-\n src/ipa/{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                    | 2 +-\n src/libcamera/pipeline_handler.cpp                          | 6 +++---\n .../generators/libcamera_templates/module_ipa_proxy.h.tmpl  | 2 ++\n 24 files changed, 11 insertions(+), 9 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%)",
    "diff": "diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h\nindex b60c07b13..2a2ba95a4 100644\n--- a/include/libcamera/internal/pipeline_handler.h\n+++ b/include/libcamera/internal/pipeline_handler.h\n@@ -76,7 +76,7 @@ public:\n \tstd::unique_ptr<T> createIPA(uint32_t minVersion, uint32_t maxVersion)\n \t{\n \t\tIPAManager *ipaManager = manager_->_d()->ipaManager();\n-\t\treturn ipaManager->createIPA<T>(name_, minVersion, maxVersion);\n+\t\treturn ipaManager->createIPA<T>(T::name(), minVersion, maxVersion);\n \t}\n \n \ttemplate<typename T>\ndiff --git a/meson_options.txt b/meson_options.txt\nindex 20baacc4f..953b093e3 100644\n--- a/meson_options.txt\n+++ b/meson_options.txt\n@@ -48,7 +48,7 @@ option('gstreamer',\n \n option('ipas',\n         type : 'array',\n-        choices : ['ipu3', 'mali-c55', 'rkisp1', 'rpi/pisp', 'rpi/vc4', 'simple',\n+        choices : ['ipu3', 'mali-c55', 'rkisp1', 'rpi/pisp', 'rpi/vc4', 'soft',\n                    'vimc'],\n         description : 'Select which IPA modules to build')\n \ndiff --git a/src/ipa/meson.build b/src/ipa/meson.build\nindex c583c7efd..2ec9d7c4b 100644\n--- a/src/ipa/meson.build\n+++ b/src/ipa/meson.build\n@@ -30,7 +30,7 @@ supported_ipas = {\n     'rkisp1':     'rkisp1',\n     'rpi/pisp':   'rpi/pisp',\n     'rpi/vc4':    'rpi/vc4',\n-    'simple':     'simple',\n+    'simple':     'soft',\n     'vimc':       'vimc'\n }\n \ndiff --git a/src/ipa/simple/algorithms/adjust.cpp b/src/ipa/soft/algorithms/adjust.cpp\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/adjust.cpp\nrename to src/ipa/soft/algorithms/adjust.cpp\ndiff --git a/src/ipa/simple/algorithms/adjust.h b/src/ipa/soft/algorithms/adjust.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/adjust.h\nrename to src/ipa/soft/algorithms/adjust.h\ndiff --git a/src/ipa/simple/algorithms/agc.cpp b/src/ipa/soft/algorithms/agc.cpp\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/agc.cpp\nrename to src/ipa/soft/algorithms/agc.cpp\ndiff --git a/src/ipa/simple/algorithms/agc.h b/src/ipa/soft/algorithms/agc.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/agc.h\nrename to src/ipa/soft/algorithms/agc.h\ndiff --git a/src/ipa/simple/algorithms/algorithm.h b/src/ipa/soft/algorithms/algorithm.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/algorithm.h\nrename to src/ipa/soft/algorithms/algorithm.h\ndiff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/soft/algorithms/awb.cpp\nsimilarity index 98%\nrename from src/ipa/simple/algorithms/awb.cpp\nrename to src/ipa/soft/algorithms/awb.cpp\nindex 05155c83d..35b6e28f1 100644\n--- a/src/ipa/simple/algorithms/awb.cpp\n+++ b/src/ipa/soft/algorithms/awb.cpp\n@@ -15,7 +15,7 @@\n #include <libcamera/control_ids.h>\n \n #include \"libipa/colours.h\"\n-#include \"simple/ipa_context.h\"\n+#include \"soft/ipa_context.h\"\n \n namespace libcamera {\n \ndiff --git a/src/ipa/simple/algorithms/awb.h b/src/ipa/soft/algorithms/awb.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/awb.h\nrename to src/ipa/soft/algorithms/awb.h\ndiff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/soft/algorithms/blc.cpp\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/blc.cpp\nrename to src/ipa/soft/algorithms/blc.cpp\ndiff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/soft/algorithms/blc.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/blc.h\nrename to src/ipa/soft/algorithms/blc.h\ndiff --git a/src/ipa/simple/algorithms/ccm.cpp b/src/ipa/soft/algorithms/ccm.cpp\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/ccm.cpp\nrename to src/ipa/soft/algorithms/ccm.cpp\ndiff --git a/src/ipa/simple/algorithms/ccm.h b/src/ipa/soft/algorithms/ccm.h\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/ccm.h\nrename to src/ipa/soft/algorithms/ccm.h\ndiff --git a/src/ipa/simple/algorithms/meson.build b/src/ipa/soft/algorithms/meson.build\nsimilarity index 100%\nrename from src/ipa/simple/algorithms/meson.build\nrename to src/ipa/soft/algorithms/meson.build\ndiff --git a/src/ipa/simple/data/meson.build b/src/ipa/soft/data/meson.build\nsimilarity index 80%\nrename from src/ipa/simple/data/meson.build\nrename to src/ipa/soft/data/meson.build\nindex 92795ee4c..f4b806083 100644\n--- a/src/ipa/simple/data/meson.build\n+++ b/src/ipa/soft/data/meson.build\n@@ -6,5 +6,5 @@ conf_files = files([\n \n # The install_dir must match the name from the IPAModuleInfo\n install_data(conf_files,\n-             install_dir : ipa_data_dir / 'simple',\n+             install_dir : ipa_data_dir / 'soft',\n              install_tag : 'runtime')\ndiff --git a/src/ipa/simple/data/uncalibrated.yaml b/src/ipa/soft/data/uncalibrated.yaml\nsimilarity index 100%\nrename from src/ipa/simple/data/uncalibrated.yaml\nrename to src/ipa/soft/data/uncalibrated.yaml\ndiff --git a/src/ipa/simple/ipa_context.cpp b/src/ipa/soft/ipa_context.cpp\nsimilarity index 100%\nrename from src/ipa/simple/ipa_context.cpp\nrename to src/ipa/soft/ipa_context.cpp\ndiff --git a/src/ipa/simple/ipa_context.h b/src/ipa/soft/ipa_context.h\nsimilarity index 100%\nrename from src/ipa/simple/ipa_context.h\nrename to src/ipa/soft/ipa_context.h\ndiff --git a/src/ipa/simple/meson.build b/src/ipa/soft/meson.build\nsimilarity index 100%\nrename from src/ipa/simple/meson.build\nrename to src/ipa/soft/meson.build\ndiff --git a/src/ipa/simple/module.h b/src/ipa/soft/module.h\nsimilarity index 100%\nrename from src/ipa/simple/module.h\nrename to src/ipa/soft/module.h\ndiff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/soft/soft_simple.cpp\nsimilarity index 99%\nrename from src/ipa/simple/soft_simple.cpp\nrename to src/ipa/soft/soft_simple.cpp\nindex d4ab91e30..887a1586e 100644\n--- a/src/ipa/simple/soft_simple.cpp\n+++ b/src/ipa/soft/soft_simple.cpp\n@@ -342,7 +342,7 @@ extern \"C\" {\n const struct IPAModuleInfo ipaModuleInfo = {\n \tIPA_MODULE_API_VERSION,\n \t0,\n-\t\"simple\",\n+\t\"soft\",\n };\n \n IPAInterface *ipaCreate()\ndiff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp\nindex 25fc11989..d92cb5347 100644\n--- a/src/libcamera/pipeline_handler.cpp\n+++ b/src/libcamera/pipeline_handler.cpp\n@@ -844,8 +844,8 @@ void PipelineHandler::disconnect()\n  *\n  * Create an IPA module using \\a ipaName as the matching identifier. This\n  * overload allows pipeline handlers to create an IPA module by specifying its\n- * name instead of relying on the fact that the IPA module matches the pipeline\n- * handler's one.\n+ * name instead of relying on the fact that the IPA module matches the IPA\n+ * proxy's type name.\n  *\n  * \\return A newly created IPA proxy, or nullptr if no matching IPA module is\n  * found or if the IPA proxy fails to initialize\n@@ -858,7 +858,7 @@ void PipelineHandler::disconnect()\n  * \\param[in] minVersion Minimum acceptable version of IPA module\n  * \\param[in] maxVersion Maximum acceptable version of IPA module\n  *\n- * Create an IPA module using the pipeline handler name as the matching\n+ * Create an IPA module using the IPA proxy's type name as the matching\n  * identifier. This overload allows pipeline handler to create an IPA module\n  * whose name matches the pipeline handler one.\n  *\ndiff --git a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\nindex d48b90dcf..c18c94c2c 100644\n--- a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n+++ b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl\n@@ -40,6 +40,8 @@ class {{proxy_name}}Isolated;\n class {{proxy_name}} : public IPAProxy, public {{interface_name}}, public Object\n {\n public:\n+\tstatic constexpr const char *name() { return \"{{module_name}}\"; };\n+\n \tusing Threaded = {{proxy_name}}Threaded;\n \tusing Isolated = {{proxy_name}}Isolated;\n \n",
    "prefixes": [
        "v6",
        "5/5"
    ]
}