From patchwork Wed Aug 12 18:49:04 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: 27759 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 7D8C5C3264 for ; Wed, 12 Aug 2026 18:49:21 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 71F5B682B0; Wed, 12 Aug 2026 20:49:20 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="H4gWcimf"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="axBFRjRd"; dkim-atps=neutral Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A449A6819C for ; Wed, 12 Aug 2026 20:49:18 +0200 (CEST) Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CI8OxX397704 for ; Wed, 12 Aug 2026 18:49:16 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=/Q2BN/TCon6KmHPjZRTSm+ Iwd6hVk/z2U6/lxIxmAPI=; b=H4gWcimfM3/mx8M3WJQnCGJHrcvgCKtroyw74f 8+HGBRBBBnBp6h+6cSkETnrst5TeY354RlqdoBzkZBihyeAXIdeUg+k1CwQ1GL1T E++F8Jrf0i7leaqxVrmFinz2LU7nTcPnefab2MxSeOnf/0xxnnyB3Y+UwnSxfOmV +mgZuWeIfvo+BY4OHqUAEjj1tQm57wfvM/+VqzUJEVtLO1xgIld29Vl1ggcJy4Am IxfGu6xGxAWp+hwD4gNloTzGFK4cB4sT/hYM84wXMnMB18w5ARdHlW5XpDnDJx49 wD9ljA99rVz7480Ebe+m7J006OqEWk778O/JWELuTAebFmYg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0wt8r7ac-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:49:16 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c26012cd0so13130211cf.0 for ; Wed, 12 Aug 2026 11:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560555; x=1787165355; 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=/Q2BN/TCon6KmHPjZRTSm+Iwd6hVk/z2U6/lxIxmAPI=; b=axBFRjRdAB4jMq2uS4wGZnZQ5JIayRwgOaMZS0Julrnqjuugjv6baCa9jS85mV4z4L hcJjSVKz5hiy5TT9M52hmeZ7W3Qu0hSTkD2kkO44m6ONC5/ltbFY8CttQqUA7PVtM1As aTZZENOpjdCM7sBshfcJ5j64R5CzEzsHoKSRyAuZwmC7StZOsLiArz0HDD8LmCgD8d7M eMpT73nyYnrtwQv4WFkPDtufbC3DkHiFYkwL37sBtjc+KsM1MjWOqncfnRHzwW3sJF6Q gnXNQ5pAW7EWB/0r4Bc9Jbn9zPMrkkiJX2IAq9hrHvlTyPvfSdP3TKi8/JMAHUOjaOIa Uccw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560555; x=1787165355; 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=/Q2BN/TCon6KmHPjZRTSm+Iwd6hVk/z2U6/lxIxmAPI=; b=nKiA/8HBYj0L4tZpa55PWusD8N3/i3mUnAatn93B5yzjBijP67fg+8KvnD3amqlZMP 0IFcf9+KP4C/F943mcqpREFtmwTeQAebwKt48AibAKynPDZuw3uSKn+5+m9npNgaNFBi fZG89KFqNTJznPMriaywu0RwyRalxjXD7XpMeNwzn2qDbu5M/aFEipMUght9P1xwN4zH IdyURsV/3Xe5oP/fFFlMPZD9d+N37VDeR4HzObJshCycbVbMKUbD5ucvN3CQJdEm2gTO FEE8fvIduRChyvLRJeL3H2wsiaPsxMJ66A0D4eop+vnE7noqHQFrZKKhiatiHrifvnea Wyaw== X-Gm-Message-State: AOJu0YwZml2d5/AHyxJ/iTwo1HxE4LWh0VcwVJl1+lRQHUU+kOQD8AoD ad4D2ByXh7bvLMm6ulNIF/zspTwGIRp1YzfygBSr4rCLZl6JkRZQ70ANhTcUR2H/0e4HkUXqAV7 aXeeri1ceXrryBSTtqLIbXSHvQpbPDHtRunSkyCjQKU7raPID2j+d8Yc4VeQWmShui9waVaf/ft n5Z56w4LQx X-Gm-Gg: AR+sD12MC7wOhjgZeGqwJ/S4okp9WipqPIXx/iInTI/nqQIGJ1Pd22Te6WmWN3YSzLF kK7+JOPM23x07Lgpc66C/dgu0eCnTmt24k+GKS+xlctA+kh5AKh+tHc7SBA0WDUkKhN/uXZdyGe ItCMCHTpMhgLl+MwQTEw5C6ruX6/FqjfN9I1MyvuWwKsxkW4X5SoL6RoyszTSeYJ8wVF5WuqurI i6ih4emTiyHI0V6oouIuTE1ZslrzITtdJ23bkIOzH4TEvOr0qDGCylpzLboPV8xnk9ZR6eVDayI iUZrJpXBHLUnT8+2TvqPA40f0lTesx9kG4ziccspTgaRbhE0MCjFpdUPZ5e6lkZ2j8yw7gbW7JE nAb7BkBbJWUkhPnouVvm8stXoeu5HxtGJRWEy5npy2cKwEuJmT+ZRr/u2x3cdwkflu4f/4lo7K2 cmgNbty79QvqWjClg= X-Received: by 2002:a05:622a:1a88:b0:50d:900e:c1c1 with SMTP id d75a77b69052e-52d73c26ec4mr2867801cf.7.1786560555221; Wed, 12 Aug 2026 11:49:15 -0700 (PDT) X-Received: by 2002:a05:622a:1a88:b0:50d:900e:c1c1 with SMTP id d75a77b69052e-52d73c26ec4mr2867321cf.7.1786560554657; Wed, 12 Aug 2026 11:49:14 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8a202fsm52348a12.15.2026.08.12.11.49.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:49:13 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede Subject: [PATCH v7 0/8] ipa: Allow IPA creation by name Date: Wed, 12 Aug 2026 20:49:04 +0200 Message-ID: <20260812184912.287894-1-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=YLqvDxGx c=1 sm=1 tr=0 ts=6a7cc02c cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=YAyIRdgMAAAA:8 a=twXoSTnZPK2vLye3lkkA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=o1rO4XtwZBNj6n05oSJ_:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfXxsqNsybzGRno KC2ZFeFpWGkGzJJgjQAhIpEjQA74OQoHf2wRRplMIxtohk+JWQiRbTtm1YO3ZcNo7NDMfHj5FwL YQ8v43JZNzVFvz7E75+mRvLXO9QULiFnyYPIYiyWQeH5HBLGYZ/zhRffIrTpFqU/nJ64Na+iQhU IUkVfy4YH5GLgFYjdSQ1FPvy86vYyQeauAKwvYYJrSeK5a76gZAqSoTq/yS/wQURBStZanwtH0+ 6atfoc7b4aQro1EHM0ylqssvdLmbmSzNP7ei7VOiVjELcFIXUqYLqbMEeEev0lknIBUoXdS16cC uiWOm4AdOCfm5FljVD0FSk9z50DKeA0WfH4zEao4iQ2IHvS7ixS87Z65jflsDynSAnGaBu9SDoS RLMg5Uv6a5isfKNaH0UhmiWNaMNLNquY+2o9WK4QTcGBWASyfb2TvsshztZBNSHkITPHuVVkfpe M6QaKa1phoe+SzZ8whg== X-Proofpoint-ORIG-GUID: pFiTAqRIMOuSHLaMM0LkfiFrwWubP_Az X-Proofpoint-GUID: pFiTAqRIMOuSHLaMM0LkfiFrwWubP_Az X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX43ULRochjX/7 B/H2rk6ewQodypKDnLrC2P1PZlIlnlAst2FdwtvnBCRJJ75QDPshA2ZevHFBxJgqBmu+H7CaPGk 0JUAQUY1KWcYTJPdxrCr+R4QxU8cpDI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 impostorscore=0 spamscore=0 priorityscore=1501 clxscore=1015 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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. I believe that this is ready for merging now. Changes in v7: - Add a comment explaining why pipe()->name() is explicitly passed for the RPi IPA creation - Rename the softISP IPA from "simple" to "softisp" instead of "soft" - Mark PipelineHandler::createIPA() overload with an explicit IPA name argument as deprecated - 2 new patches to finish the IPA renaming to softisp / IPASoftIsp "ipa: softisp: Rename IPASoftSimple to IPASoftIsp" "ipa: softisp: Rename ipa::soft namespace to ipa::softisp" - Moved one patch from camss series here, it fits here better since this is all about making the Software ISP usuable from more places: "ipa: softisp: Rename setIspParams signal to paramsComputed" 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 (6): libcamera: Create IPA by name pipeline: rpi: Explictly pass pipe()->name() when creating IPA libcamera: Create IPA by IPA proxy type name ipa: softisp: Rename IPASoftSimple to IPASoftIsp ipa: softisp: Rename ipa::soft namespace to ipa::softisp ipa: softisp: Rename setIspParams signal to paramsComputed Jacopo Mondi (2): ipa: ipa_module: Remove pipelineName ipa: Allow pipelines to have differently named IPA Documentation/Doxyfile-internal.in | 2 +- include/libcamera/internal/ipa_manager.h | 6 +- include/libcamera/internal/ipa_module.h | 4 +- include/libcamera/internal/pipeline_handler.h | 9 +- .../internal/software_isp/software_isp.h | 10 +-- include/libcamera/ipa/ipa_module_info.h | 1 - include/libcamera/ipa/meson.build | 2 +- .../ipa/{soft.mojom => softisp.mojom} | 8 +- meson_options.txt | 4 +- 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 => softisp}/algorithms/adjust.cpp | 12 +-- .../{simple => softisp}/algorithms/adjust.h | 4 +- .../{simple => softisp}/algorithms/agc.cpp | 12 +-- src/ipa/{simple => softisp}/algorithms/agc.h | 4 +- .../algorithms/algorithm.h | 4 +- .../{simple => softisp}/algorithms/awb.cpp | 20 ++--- src/ipa/{simple => softisp}/algorithms/awb.h | 12 +-- .../{simple => softisp}/algorithms/blc.cpp | 10 +-- src/ipa/{simple => softisp}/algorithms/blc.h | 4 +- .../{simple => softisp}/algorithms/ccm.cpp | 6 +- src/ipa/{simple => softisp}/algorithms/ccm.h | 4 +- .../algorithms/meson.build | 2 +- src/ipa/{simple => softisp}/data/meson.build | 2 +- .../data/uncalibrated.yaml | 0 src/ipa/{simple => softisp}/ipa_context.cpp | 4 +- src/ipa/{simple => softisp}/ipa_context.h | 6 +- src/ipa/{simple => softisp}/meson.build | 10 +-- src/ipa/{simple => softisp}/module.h | 6 +- .../soft_simple.cpp => softisp/softisp.cpp} | 85 +++++++++---------- src/ipa/vimc/vimc.cpp | 1 - src/libcamera/ipa_manager.cpp | 8 +- src/libcamera/ipa_module.cpp | 29 +++---- .../pipeline/rpi/common/pipeline_base.cpp | 8 +- src/libcamera/pipeline/simple/simple.cpp | 2 +- src/libcamera/pipeline_handler.cpp | 27 +++++- src/libcamera/software_isp/software_isp.cpp | 8 +- test/ipa/ipa_interface_test.cpp | 2 +- test/ipa/ipa_module_test.cpp | 3 - .../module_ipa_proxy.h.tmpl | 2 + 44 files changed, 216 insertions(+), 172 deletions(-) rename include/libcamera/ipa/{soft.mojom => softisp.mojom} (88%) rename src/ipa/{simple => softisp}/algorithms/adjust.cpp (91%) rename src/ipa/{simple => softisp}/algorithms/adjust.h (93%) rename src/ipa/{simple => softisp}/algorithms/agc.cpp (95%) rename src/ipa/{simple => softisp}/algorithms/agc.h (87%) rename src/ipa/{simple => softisp}/algorithms/algorithm.h (84%) rename src/ipa/{simple => softisp}/algorithms/awb.cpp (88%) rename src/ipa/{simple => softisp}/algorithms/awb.h (85%) rename src/ipa/{simple => softisp}/algorithms/blc.cpp (93%) rename src/ipa/{simple => softisp}/algorithms/blc.h (91%) rename src/ipa/{simple => softisp}/algorithms/ccm.cpp (94%) rename src/ipa/{simple => softisp}/algorithms/ccm.h (93%) rename src/ipa/{simple => softisp}/algorithms/meson.build (75%) rename src/ipa/{simple => softisp}/data/meson.build (79%) rename src/ipa/{simple => softisp}/data/uncalibrated.yaml (100%) rename src/ipa/{simple => softisp}/ipa_context.cpp (97%) rename src/ipa/{simple => softisp}/ipa_context.h (95%) rename src/ipa/{simple => softisp}/meson.build (78%) rename src/ipa/{simple => softisp}/module.h (82%) rename src/ipa/{simple/soft_simple.cpp => softisp/softisp.cpp} (81%)