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); }