{"id":24686,"url":"https://patchwork.libcamera.org/api/covers/24686/?format=json","web_url":"https://patchwork.libcamera.org/cover/24686/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20251015-ipa-match-by-name-v3-0-11f9c774c7fc@ideasonboard.com>","date":"2025-10-15T15:55:23","name":"[v3,0/4] ipa: Allow IPA creation by name","submitter":{"id":143,"url":"https://patchwork.libcamera.org/api/people/143/?format=json","name":"Jacopo Mondi","email":"jacopo.mondi@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/24686/mbox/","series":[{"id":5505,"url":"https://patchwork.libcamera.org/api/series/5505/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5505","date":"2025-10-15T15:55:23","name":"ipa: Allow IPA creation by name","version":3,"mbox":"https://patchwork.libcamera.org/series/5505/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/24686/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 9241BBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 15:55:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6B2FF60622;\n\tWed, 15 Oct 2025 17:55:36 +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 114F260462\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Oct 2025 17:55:35 +0200 (CEST)","from [192.168.1.106] (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1F0A4E7C;\n\tWed, 15 Oct 2025 17:53:55 +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=\"dmkH0QpM\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760543635;\n\tbh=HsmTyy8NZIYWU1dX5tn80IQKS2hSjtL8aNj5Ca71J8E=;\n\th=From:Subject:Date:To:Cc:From;\n\tb=dmkH0QpMwNw3Dk+TPcvHRXFTCrstCgL7Lq9GwVzS4FqqkzQtFLrOHj94jsNXHobH7\n\twZo/WY/mmxYGeoHBAU/0PiukjOsp3aSnHaNAKB0zpUhqioRD2TS3gA/lyCd5IMknaZ\n\tsMu+Qel5seKXRt2ZTMYSLytcbv65OkQcUEU99taw=","From":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","Subject":"[PATCH v3 0/4] ipa: Allow IPA creation by name","Date":"Wed, 15 Oct 2025 17:55:23 +0200","Message-Id":"<20251015-ipa-match-by-name-v3-0-11f9c774c7fc@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","X-B4-Tracking":"v=1; b=H4sIAOvD72gC/4XNywqDMBCF4VcpWTclTrx21fcoXeQy1lmYSCKhI\n\tr57o9Cd0OV/YL5ZWcRAGNn9srKAiSJ5l0NeL8wMyr2Rk83NQEBVCAGcJsVHNZuB64U7NSJvAWs\n\ttSwUSO5bvpoA9fQ7z+co9UJx9WI4XqdjXnyZPtFRwwUWjm65uoCsLeJBFFb3TXgV7M35kO5rgL\n\twQZqspeGttCa609gbZt+wKsN0O1AgEAAA==","X-Change-ID":"20251002-ipa-match-by-name-82e6b34a23e9","To":"libcamera-devel@lists.libcamera.org, =?utf-8?q?Niklas_S=C3=B6derlund?=\n\t<niklas.soderlund+renesas@ragnatech.se>, Hans de Goede\n\t<hansg@kernel.org>, Milan Zamazal <mzamazal@redhat.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?=\n\t<barnabas.pocze@ideasonboard.com>","X-Mailer":"b4 0.14.2","X-Developer-Signature":"v=1; a=openpgp-sha256; l=2918;\n\ti=jacopo.mondi@ideasonboard.com; h=from:subject:message-id;\n\tbh=HsmTyy8NZIYWU1dX5tn80IQKS2hSjtL8aNj5Ca71J8E=;\n\tb=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBo78Pzgpgxj92DmXcxJdMY8hBuqTumK3+T2hL0Z\n\tHQ0N3tHLk+JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaO/D8wAKCRByNAaPFqFW\n\tPFDEEACKJptjhN1yW/H9n6yuHhu5o42wxGB+GNOK32GoWlqiSZJXwzwPpyH6eKIyq2EblORze6d\n\t7YZxq+R7jqIbF1YJyennkoFlK3mfyYoToOfLA8Z6kyo3gPwKPffnWY2H8nP/kNqWRDABNvL0Cei\n\tfWtrwyvjnMZIkRsBjBc3HkqgdYzC4XSqCLL7dl0FFb2SzrKz+FPa6lhb0Osc0skekYJzpYbunFA\n\tg7mkqHf4GXkROGFnzXlNIEzz0sc80Id9dEmhe5jX2t7u6XvRC83x1/7PqeD3uL4iNQssSq9jApp\n\tWLPNjyzd1SYwFvDW3scskSYpv0fT+I7qdm0WbKah6PMJdN0RxlUOR/Bpj5Qn33oX9s1xeXdOoK9\n\t1t1XlSCAbwz+dSrDWtKAkJD088BLA5j5hfk+EaMTkwH00tQ/A+VEbQkpbAY5rLmY98xcd035J+6\n\t4seWDFkAV38dTmZAvQbuun8aFVOtPUW+waHouAAesedCBcZ4YjHSg6nLcpgPZ1abdt3iiMV9TCh\n\tmFOsTvB5zs1RnqpGLesjatGbubLsRyzO/rJgAXMoaXU5/2u+5obZMuEsGeNj+nQbFEfr5upn3H+\n\ttbLXU4MHDOvYBJYvmMZbMvJ28f8KypR1S1tA97g33AgFf3aVwDVEiVLwIYhMCsoJyQHC9MhCHE+\n\tQPEDlwRGIv5Vj+A==","X-Developer-Key":"i=jacopo.mondi@ideasonboard.com; a=openpgp;\n\tfpr=72392EDC88144A65C701EA9BA5826A2587AD026B","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":"It is getting more and more common for different pipeline handlers to\nuse the same IPA modules whose name differs from the pipeline's one.\n\nThe first case has been the softISP, and now the in-review Renesas R-Car\nV4H pipeline handler will re-use the RkISP1 IPA.\n\nStarting from Hans' patch https://patchwork.libcamera.org/patch/23359/\n\"libcamera: ipa_manager: createIPA: Allow matching by IPA name instead\nof by pipeline\" I here took a slightly different approach and addressed\nthe review comments on Hans' v1 by creating an overload for\nIPAManager::createIPA() that allows pipelines to specify the IPA module\nname. If they don't provide a name, the pipeline handler's name is used.\n\nAs the next step, to further decouple IPAs from pipelines, remove the\npipelineName field from IPAModuleInfo that in all cases is identical to\nthe IPA name itself.\n\nFinaly, in v3, allow to build IPA modules whose name differs from the\npipeline. This is required for R-Car Gen4 which would otherwise require\nto build the rkisp1 pipeline in to get the IPA.\n\nI have considered more complex approaches that do not require a map in\nsrc/ipa/meson.build, like defining an 'auto' option for ipas, but it\nwould have required to\n\n\t-Dpipelines=rcar-gen4 -Dipas=rkisp1\n\nwhile a simple\n\n\t-Dpipelines=rcar-gen4\n\nwhich ropes in rkisp1 IPA I think it's preferrable for users.\n\nTested on R-Car Gen4 and on Mali-C55.\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n---\nChanges in v3:\n- Add patches 3 and 4\n\nChanges in v2:\n- Changed Hans authorship to different email address\n- Removed stray blank line\n- Collect tags\n\n---\nHans de Goede (1):\n      libcamera: ipa_manager: Create IPA by name\n\nJacopo Mondi (3):\n      ipa: ipa_module: Remove pipelineName\n      ipa: meson.build: Remove duplicated variable\n      ipa: Allow pipelines to have differently named IPA\n\n include/libcamera/internal/ipa_manager.h | 13 +++++++++--\n include/libcamera/internal/ipa_module.h  |  4 ++--\n include/libcamera/ipa/ipa_module_info.h  |  1 -\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 src/ipa/simple/soft_simple.cpp           |  1 -\n src/ipa/vimc/vimc.cpp                    |  1 -\n src/libcamera/ipa_manager.cpp            | 34 ++++++++++++++++++++++-----\n src/libcamera/ipa_module.cpp             | 27 ++++++++++-----------\n test/ipa/ipa_module_test.cpp             |  3 ---\n 14 files changed, 82 insertions(+), 47 deletions(-)\n---\nbase-commit: 05bfebed2657cc1d032c9796efd9041bfbdc881c\nchange-id: 20251002-ipa-match-by-name-82e6b34a23e9\n\nBest regards,"}