From patchwork Thu Jan 22 17:48:28 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 25944 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 ABEA9BDCBF for ; Thu, 22 Jan 2026 17:48:43 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 321B461FC5; Thu, 22 Jan 2026 18:48:41 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="rnwXiCfK"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5EAB461FC3 for ; Thu, 22 Jan 2026 18:48:39 +0100 (CET) Received: from [192.168.1.105] (mob-5-90-62-9.net.vodafone.it [5.90.62.9]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7F04063B; Thu, 22 Jan 2026 18:48:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769104086; bh=w+Mc17C0QWwpzUKD6yQdZd0NzEjKBuR6eG69HEmNjmg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rnwXiCfKPM+qlUMY5JovFT9OvViW2HxXpt72rUmhVLes/qT0R05EYNGBKkQKs6AV4 3cZNNf3Uig8HYaJJvemofIXNNjjoCT4tE4VLZWhh8TdKlSKGBRf4GfPdAQg8jMOZ/5 Kj4jSWikmva4Leg7nB8vXAOtAMJIZ5EAKl8w72PM= From: Jacopo Mondi Date: Thu, 22 Jan 2026 18:48:28 +0100 Subject: [PATCH 1/2] ipa: mali-c55: Retain Camera::controls() after ipa->configure() MIME-Version: 1.0 Message-Id: <20260122-ipa-controls-v1-1-b8c4c345f7ae@ideasonboard.com> References: <20260122-ipa-controls-v1-0-b8c4c345f7ae@ideasonboard.com> In-Reply-To: <20260122-ipa-controls-v1-0-b8c4c345f7ae@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1360; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=w+Mc17C0QWwpzUKD6yQdZd0NzEjKBuR6eG69HEmNjmg=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBpcmL1DEhw/9Rch/hu4VAngGnSVgxFbq6jLj2qo 7Lg4VLuozaJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaXJi9QAKCRByNAaPFqFW PBujD/wPnMvjjGYZQDxtm6LZR05f+BjKb2cm/bRL/1ch733IIRRE3rra30uo7IGaBdxpYWpuQgq 6isOl2U8obNbn1E0YPpQrY0EykxrQul7oraWteR1/eaQhg51labIfkFZlu2liuI/lMR5WYJxSQJ Mn30FfOpDFqS27ZZi9xGYCtAOWrUfyo2/8vJ2bdE6FN9ApTa+B1DES2/yWxj7XmwBa7UNNGh7bn r9EFgz/Jw8GEEMr1WoExDsHcn3KaCNOGESskzc0IiLBfi5nCsDLV1YeaNdZnSiuxTDwNNkdiHZa eZ4c0ZWjvQYxu3JCAuyJYe1kznGIGhXCdcgiYU3cFJF5N+ALPos2T4xe9aiHI0OlSpNOfko6d+w QbgFj7oa7k7xTe3pV7Z4x7hG1+T52yoludYq5tp6Ybr4l/gtEpHei2CM2Fh+HUO+82j5NuOA5kK FmGochVgzBK4x6PSBGZsKlCFVeRFOX6nqW26ialKBKV+nfTM5MWwiXs0UrO5cJDTDd9P3z34776 h/06+s98DfCPBERJpXZTODygNkLab6aFooFt6uIE/kOu1HleCIs1NxW+IQo3ryINeiCq0mzo7ZP pNnVYuDi37pTJkMz+CRxJH1MuqKof27nGwZAtBYnemtfb9XmrrdPdSByzE5skNS4gf6Z9W9K0ye 2rncv1EPb8PLFOg== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B 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" Similar to what commit acfd60276763 ("ipa: rkisp1: Fix algorithm controls vanish after configure") did for the RkISP1 IPA, replace the usage of unordered_map::merge() at updateControls() time with unordered_map::insert(). As unordered_map::merge moves items from the source map, it deletes controls registered at algorithms initialization time in the ipaContext.ctrlMap. As at configure() time updateControls() is called again and the list of Camera controls is refreshed, the controls registered at algorithms initialization time are lost. Fixes: fe989ee51498 ("ipa: mali-c55: Add Mali-C55 ISP IPA module") Signed-off-by: Jacopo Mondi --- src/ipa/mali-c55/mali-c55.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp index 1d2a4f75cf8c..c626e246643b 100644 --- a/src/ipa/mali-c55/mali-c55.cpp +++ b/src/ipa/mali-c55/mali-c55.cpp @@ -264,7 +264,7 @@ void IPAMaliC55::updateControls(const IPACameraSensorInfo &sensorInfo, * Merge in any controls that we support either statically or from the * algorithms. */ - ctrlMap.merge(context_.ctrlMap); + ctrlMap.insert(context_.ctrlMap.begin(), context_.ctrlMap.end()); *ipaControls = ControlInfoMap(std::move(ctrlMap), controls::controls); } From patchwork Thu Jan 22 17:48:29 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 25945 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 873E6C327D for ; Thu, 22 Jan 2026 17:48:44 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7681261FD2; Thu, 22 Jan 2026 18:48:42 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="JTulK7PB"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9C29B61F84 for ; Thu, 22 Jan 2026 18:48:39 +0100 (CET) Received: from [192.168.1.105] (mob-5-90-62-9.net.vodafone.it [5.90.62.9]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id CEB30460; Thu, 22 Jan 2026 18:48:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769104087; bh=WSIAacn6eRPQZbx30ePkZevsUgUYGs4r0J5B4l5BEy4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JTulK7PBt4YyISfXxXDT2N/EmjqW1UVEFCWGZNQkWI8T9qCgZhZ0rjAAtvfdnkFgR o3Gtur0ZzJHC7uTztdzjGub670BMWlqx98lcR2IvkSZkHUwwlj5erL1GtYJFCwmvpQ 9Df1/kK+0xvg+adopdgJz8FyzlPU4hYmtzWuq7Zo= From: Jacopo Mondi Date: Thu, 22 Jan 2026 18:48:29 +0100 Subject: [PATCH 2/2] ipa: ipu3: Retain Camera::controls() after ipa->configure() MIME-Version: 1.0 Message-Id: <20260122-ipa-controls-v1-2-b8c4c345f7ae@ideasonboard.com> References: <20260122-ipa-controls-v1-0-b8c4c345f7ae@ideasonboard.com> In-Reply-To: <20260122-ipa-controls-v1-0-b8c4c345f7ae@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1363; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=WSIAacn6eRPQZbx30ePkZevsUgUYGs4r0J5B4l5BEy4=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBpcmL2k2YjGdO3O5xnhJC6DGienMyQapOhGgzxH 6itvl1Rq++JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaXJi9gAKCRByNAaPFqFW PARwD/49dobtPR3KNoYu5boP+kkqRSkYtPk1gvQLvs/4D0yVWVMAATI9KeF2r92CexZ1uG2br2Y au9oQtG0DnLJ8H66Nzn2QR/qS+8AMM2WTmTAe3UYTlBii7T6+bTgzNljumlKV7hv9Xx2YpRoYfL nbiF2bbgZKP/ccm+ulW0+7jnKRDeqjQbdGqTmnmEkhZ7fTnECR0Kw2h8uAV8J8BqNP/uoHVg8u4 qNZy7MxcuZfKrGa6FWxvs2IZIfcWZSc7rFwgujxVzCdYbGEZor6jkYVsiIh5nFnoO972XjSlIg7 uoOzVPtbKUaCe8KfR0QxRajz5Ncq/wIgf44hh3dK8j05/r3n+wMnE0rH45okf5/hDm+60i/I553 g9vk0tqm9zYnKLqylTBdZuT3vYWsp8a9DG9PQEJHJa+U0bRmzCPeTkvFijnDLYATuuOiLnCO+oK YJy8cgovfc0juc17FB9P6C7u93Byaa0oQyVg/Bab33TDEwUdAqL0snlclQ6zgfBuKyyQEU8LhmL jn9zHop0jSPzKfXd4JqRDSm7lMRducusSIO6sNaCuvFsSN6cbsHuHv5OdbO99H1l+cGWXwdiCqn WG0xPcNmeF5pfQDUDyqUXw00aL+5UQg9EYbUGJV7HgqjSwaBlkyOyrUkaZRrNJ82fHh0oML4oCt fRx6QNo5wtqKy5Q== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B 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" Similar to what commit acfd60276763 ("ipa: rkisp1: Fix algorithm controls vanish after configure") did for the RkISP1 IPA, replace the usage of unordered_map::merge() at updateControls() time with unordered_map::insert(). As unordered_map::merge moves items from the source map, it deletes controls registered at algorithms initialization time in the ipaContext.ctrlMap. As at configure() time updateControls() is called again and the list of Camera controls is refreshed, the controls registered at algorithms initialization time are lost. Fixes: 87353f2bba28 ("ipa: ipu3: Derive ipu3::algorithms::Agc from AgcMeanLuminance") Signed-off-by: Jacopo Mondi --- src/ipa/ipu3/ipu3.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index b926f579a9a3..03d873f2c74f 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -285,7 +285,7 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo, frameDurations[1], Span{ { frameDurations[2], frameDurations[2] } }); - controls.merge(context_.ctrlMap); + controls.insert(context_.ctrlMap.begin(), context_.ctrlMap.end()); *ipaControls = ControlInfoMap(std::move(controls), controls::controls); }