From patchwork Tue Jul 28 17:24:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27513 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id AD66FBE080 for ; Tue, 28 Jul 2026 17:24:55 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 42E9967F9D; Tue, 28 Jul 2026 19:24:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="IbhpdOkr"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="g/dE5NFv"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BBAD967E44 for ; Tue, 28 Jul 2026 19:24:52 +0200 (CEST) Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66SEcesP3063320 for ; Tue, 28 Jul 2026 17:24:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=22ln3QFFKzaEkIn50C6/R0 /sJOfsgsSwnR24e2WggCw=; b=IbhpdOkrYGAyfXIhp8NLucghH9ywlixf5l0y3G 2SvY8124wmC7e8FGISGpC3VFGGr68awBEdlRfl8GFr/obI6r6peJTebqyWsgfGCk zsmu0CQz3Udhuoz399pJ1yHdvUK2SLkLvDOBHaNnuBWSGVE62BvyMA2PHIwzAiXx yO+TiBfuSsxBlKy2c8XdpEY0JAYH6F1iCluKH6G65iNih/YRHbWlD4aiy45EqFNq r/1Ua3YBUAWpv3NIhNS0srgHLsXMgeldqOq7BG17NYBAIgDM00Q7ALoITq0VIH70 hmDs9tm+V7du9SZvaroKgaFkZPZHIbPoH+cD2pgO6DTLb9dw== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fpuyg9x4s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 28 Jul 2026 17:24:50 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c20762d21so1025751cf.0 for ; Tue, 28 Jul 2026 10:24:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785259490; x=1785864290; darn=lists.libcamera.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=22ln3QFFKzaEkIn50C6/R0/sJOfsgsSwnR24e2WggCw=; b=g/dE5NFvwkmUb6BWIzfrXH/WAdQnWSKeZpFYoPOkj9hXwaJV3zbIMHdXYXjf8SSRn3 p+k+wCOsdc6Q7sRGlFXM5/T46/5CtH3kOK2bHgRB4FMOcmhkl4+KeHS7qfT4WeZQvvfq EOojpCXe/AbOR756Dr2OhLyHolBP5NV29ZwZ6oge+WoZ68+04uQkc9q9Zllo/sv01q5K RhOLvBmJqeik9+wgz2jHZC0cDLBSfqkS683zovC/odp2fOPtiFiH/HEP9L2cRmSd/uez 8qSDrybTDbGewtxumDpRAZvjPQTKzHrqxsamFW8p0s5EO7OzsyNoOS0OH3EEmOS4Edhv aQfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785259490; x=1785864290; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=22ln3QFFKzaEkIn50C6/R0/sJOfsgsSwnR24e2WggCw=; b=a9z/ZZ4PP4nI5Gl0oK1DSu0o8jac30yO+eO+v6gLuN6xwwPoUBtTv/2jIJB0XksW8u 1YRRXN1lVKw9rVXB/cP+cv2q/wVzkX8MZsL4s9cylRmzyKiuEizg7LggYBx1+JrIIgI4 gjG6ohaSdB/xf/JZjSeuLTdEpy5LR5Ia4+PEUgtu8SU3vtoB7gmp3lj6vIm0P+x7pvEr ZN0dv5pRRba/9r8NPAJg4yewM4vCw2rRAO4Y/I4yobEdhutUmUpOUSMaGifooPYXv6yJ QdklaCSQ0qc9LwoaJuw74BR/xmjNB1mZRc7bR6GEkKAksljGCNcpYD1phvSCklxZ1HPd XAsg== X-Gm-Message-State: AOJu0YyeYs6B4vuvSTaiM0J/xU+G7X4PvD8vuC+HkOl52gucygtswLuQ tIP4V7N2Uiy/ZvLvIKG0BaJwZhNgYtKvK9truG61EGV+XkeTW+kFz1GcUoKJ1m8zJkGrTo2fzjZ JotMSb1DRdEiJjI/fh97+cUVXgW6RAxipiQuF6FjaYAYDHUONHvFWyv1XoWYaxeBL81YGVOyzXf AYG8+MrZ4T X-Gm-Gg: AR+sD11oVUjan8MO1g8UnvnRMcF7OFj9BxKopHuRMwNLSkCGQb0ZdMET7VGEHOf4Sy6 1nDJpbmvM7BZdA2FAILQUu+QJDpjmyEYOy7XV37R9CcF+DQw1w5k7oBmWUpNbufOgWXk6W+yr+d 9tWHBFXAREM6NsmrNW97qE/63m+ypVxR04klhDIX/WLGyljxeHPI3M/DPsz7WVguqPiEq6VETcZ wqkXKQRut6vuoZ/fNCcRp1fhrnWci68MwQskJTpFZuub/8SSiyw/bxw3uH9XSbIJyP37bFi1eot UX19Uizz9vqT2ceDVHsXu0iEhUo/BqIFprGor7BXld+QOWnPoMfe75WrlaArnM57XRDZd6iU9Uh pF0nDfuouw55uO2asKpZADodpZymZJ8O8P0wOfPz2UD7E5E4aHI6pUEHsG/owl4sQXF74vqlqUk DGdHV2dHK69UM= X-Received: by 2002:a05:622a:1f94:b0:51c:555:7dea with SMTP id d75a77b69052e-529d711316emr32346771cf.30.1785259489709; Tue, 28 Jul 2026 10:24:49 -0700 (PDT) X-Received: by 2002:a05:622a:1f94:b0:51c:555:7dea with SMTP id d75a77b69052e-529d711316emr32346461cf.30.1785259489099; Tue, 28 Jul 2026 10:24:49 -0700 (PDT) Received: from t14s (2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:7d4:cca3:ec08:7ac7]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c1f83fabcdasm11136466b.48.2026.07.28.10.24.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Jul 2026 10:24:48 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede 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 X-Proofpoint-GUID: 3JhXzpIdOx9UQUUw7wS1e7UzSFKajGS9 X-Proofpoint-ORIG-GUID: 3JhXzpIdOx9UQUUw7wS1e7UzSFKajGS9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX61oFQhtvvwFz P/zvBHtvInHglvB/KxD/vx720EuHnnTPDbXF2N/HpuQNCtgBeSgQYHeWFBdP8zwV1+J7nYVdDcj k5wgrkLOUG1dCsRETmGFZ8V8y7qA//O2lTTWn+CR3JorlDdcDUlo0t0ZQrY0vdLet3bOaOZzlxn P6U+qtQgCqPlRlK+HwQfhNhJgONvr/YV2ESa8LUaIyIyzclkwabQLVkRg/gbN/bCLQnsmffMxxX OT8pqaAo55eUqYXDkSJaUEAAb4qMeO7YrHgPlUPljIAD6jF+7fmo/BxTKJWXlh/TRHZpRrsFwCx KcdYJvM/nREyNR5rsKOgegFLEqeVBHwo0U6h0fEOx3b2yA26ttOP2qMPKVXaWONxfzSgPNS7NbF meN/ZA+WQ7O4FnHmtrhArK/r4zIRWhPnHdZXVf10+OhN+ks9tzlqksELjVD8U/PypsF9EUrmxE+ hRb7Ae8SY3URO1BwnMg== X-Authority-Analysis: v=2.4 cv=aoWCzyZV c=1 sm=1 tr=0 ts=6a68e5e2 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=YAyIRdgMAAAA:8 a=RxCMVEpQfz8bXD466YwA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 a=o1rO4XtwZBNj6n05oSJ_:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzI4MDE1MyBTYWx0ZWRfX7+uzoFgx/KX7 yU4o8Y3KM0p1SsCMVZia+tpTzQIJtcqqGmort2tisO94tFBrAnTi+X2SvobXgHzEnVH5eVf8qK2 JXxhmv0XUoRgIYPk5ZktonXciVOLxDQ= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-07-28_04,2026-07-28_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 spamscore=0 bulkscore=0 adultscore=0 malwarescore=0 impostorscore=0 phishscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607280153 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hi All, This is v6 of my / Jacopo's "ipa: Allow IPA creation by name" series, This new version switches all pipeline handlers over to creating their IPA by IPA proxy type rather then by name, with the exception of the raspberry pi pipeline handlers which are switched to creating the IPA by explicitly passing the pipeline handler name since the rpi/vc4 and rpi/pisp IPAs share the same IPA proxy type. Use-cases for this / series blocked by this are: 1. Using a differently named IPA with the rcar-gen4 pipeline handler: https://patchwork.libcamera.org/project/libcamera/list/?series=6003 2. Using the softISP stats + IPA with the atomisp pipeline handler: https://patchwork.libcamera.org/project/libcamera/list/?series=5169 3. The new camss pipeline handler will use the softISP as a fallback on platforms where there is no hardware ISP support yet (so most platforms) the softISP needs to be able to load its IPA from both the "simple" and "camss" pipeline handlers, requiring something like this series. https://patchwork.libcamera.org/project/libcamera/list/?series=6070 This has been tested by Jacopo on R-Car Gen4 and on Mali-C55 and by me on Qualcomm Agetti and Hamoa SoCs with both the simple and camss pipeline handlers. Changes in v6: - Drop patch switching softISP to create its IPA by name - Switch raspberry-pi pipeline-handlers to creating IPA by name - Switch all other pipeline-handlers to creating IPA by proxy type name - Rename "simple" softISP IPA to "soft" to match its proxy type name Changes in v5: - Rebase on top of db998e618aaa ("libcamera: pipeline_handler: Add createIPA() function") which moved the createIPA() wrapper for pipeline-handlers into the PipelineHandler class - https://patchwork.libcamera.org/project/libcamera/list/?series=5940 Changes in v4: - Rebase, change author of first patch to my new email address - https://patchwork.libcamera.org/project/libcamera/list/?series=5876&state=* Changes in v3: - Add "ipa: Allow pipelines to have differently named IPA" patch - https://lists.libcamera.org/pipermail/libcamera-devel/2025-October/053821.html Changes in v2: - Update tags, fix stray blank line Changes in v1 from Hans' original patch: - Slightly different approach addressing the review comments on Hans' v1 by creating an overload for IPAManager::createIPA() that allows pipelines to specify the IPA module name. Regards, Hans Hans de Goede (3): libcamera: Create IPA by name pipeline: rpi: Explictly pass pipe()->name() when creating IPA libcamera: Create IPA by IPA proxy type name Jacopo Mondi (2): ipa: ipa_module: Remove pipelineName ipa: Allow pipelines to have differently named IPA include/libcamera/internal/ipa_manager.h | 6 +-- include/libcamera/internal/ipa_module.h | 4 +- include/libcamera/internal/pipeline_handler.h | 9 ++++- include/libcamera/ipa/ipa_module_info.h | 1 - meson_options.txt | 2 +- src/ipa/ipu3/ipu3.cpp | 1 - src/ipa/mali-c55/mali-c55.cpp | 1 - src/ipa/meson.build | 40 ++++++++++++++----- src/ipa/rkisp1/rkisp1.cpp | 1 - src/ipa/rpi/pisp/pisp.cpp | 1 - src/ipa/rpi/vc4/vc4.cpp | 1 - .../{simple => soft}/algorithms/adjust.cpp | 0 src/ipa/{simple => soft}/algorithms/adjust.h | 0 src/ipa/{simple => soft}/algorithms/agc.cpp | 0 src/ipa/{simple => soft}/algorithms/agc.h | 0 .../{simple => soft}/algorithms/algorithm.h | 0 src/ipa/{simple => soft}/algorithms/awb.cpp | 2 +- src/ipa/{simple => soft}/algorithms/awb.h | 0 src/ipa/{simple => soft}/algorithms/blc.cpp | 0 src/ipa/{simple => soft}/algorithms/blc.h | 0 src/ipa/{simple => soft}/algorithms/ccm.cpp | 0 src/ipa/{simple => soft}/algorithms/ccm.h | 0 .../{simple => soft}/algorithms/meson.build | 0 src/ipa/{simple => soft}/data/meson.build | 2 +- .../{simple => soft}/data/uncalibrated.yaml | 0 src/ipa/{simple => soft}/ipa_context.cpp | 0 src/ipa/{simple => soft}/ipa_context.h | 0 src/ipa/{simple => soft}/meson.build | 0 src/ipa/{simple => soft}/module.h | 0 src/ipa/{simple => soft}/soft_simple.cpp | 3 +- src/ipa/vimc/vimc.cpp | 1 - src/libcamera/ipa_manager.cpp | 8 ++-- src/libcamera/ipa_module.cpp | 29 ++++++-------- .../pipeline/rpi/common/pipeline_base.cpp | 2 +- src/libcamera/pipeline_handler.cpp | 25 +++++++++++- test/ipa/ipa_interface_test.cpp | 2 +- test/ipa/ipa_module_test.cpp | 3 -- .../module_ipa_proxy.h.tmpl | 2 + 38 files changed, 91 insertions(+), 55 deletions(-) rename src/ipa/{simple => soft}/algorithms/adjust.cpp (100%) rename src/ipa/{simple => soft}/algorithms/adjust.h (100%) rename src/ipa/{simple => soft}/algorithms/agc.cpp (100%) rename src/ipa/{simple => soft}/algorithms/agc.h (100%) rename src/ipa/{simple => soft}/algorithms/algorithm.h (100%) rename src/ipa/{simple => soft}/algorithms/awb.cpp (98%) rename src/ipa/{simple => soft}/algorithms/awb.h (100%) rename src/ipa/{simple => soft}/algorithms/blc.cpp (100%) rename src/ipa/{simple => soft}/algorithms/blc.h (100%) rename src/ipa/{simple => soft}/algorithms/ccm.cpp (100%) rename src/ipa/{simple => soft}/algorithms/ccm.h (100%) rename src/ipa/{simple => soft}/algorithms/meson.build (100%) rename src/ipa/{simple => soft}/data/meson.build (80%) rename src/ipa/{simple => soft}/data/uncalibrated.yaml (100%) rename src/ipa/{simple => soft}/ipa_context.cpp (100%) rename src/ipa/{simple => soft}/ipa_context.h (100%) rename src/ipa/{simple => soft}/meson.build (100%) rename src/ipa/{simple => soft}/module.h (100%) rename src/ipa/{simple => soft}/soft_simple.cpp (99%)