From patchwork Wed Aug 5 16:13:14 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 27655 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 05577C3350 for ; Wed, 5 Aug 2026 16:14:03 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 781C668197; Wed, 5 Aug 2026 18:14:03 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="hsrzULVj"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id AF1416816E for ; Wed, 5 Aug 2026 18:13:45 +0200 (CEST) Received: from [192.168.125.177] (mob-109-113-25-35.net.vodafone.it [109.113.25.35]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id EF3953B23; Wed, 5 Aug 2026 18:12:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1785946355; bh=XBc9Oh6IdqRxVsjpBLv31tO74D62Y2hjOtpHW69RQec=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hsrzULVjf1V8sLdnSYGjYmFuf1sGxIwjJ17Z/FzhbpaBwePyuiV+yTmBYSQreSjzM vOgmHkcpPkmXj5h2eXcX5yRBbknvHSxOhdIswaSv+Ta7erGvL8Wl+E8OfzhjynsQZt /J73A+gda5NUyfhwYpsF66bH/hurMcwUmb2YO5Xs= From: Jacopo Mondi Date: Wed, 05 Aug 2026 18:13:14 +0200 Subject: [PATCH v7 32/32] ipa: libipa: lsc: Specialize Interpolator for uint8_t MIME-Version: 1.0 Message-Id: <20260805-libipa-algorithms-v7-32-7425b5b795d4@ideasonboard.com> References: <20260805-libipa-algorithms-v7-0-7425b5b795d4@ideasonboard.com> In-Reply-To: <20260805-libipa-algorithms-v7-0-7425b5b795d4@ideasonboard.com> To: libcamera-devel@lists.libcamera.org, Stefan Klug , Milan Zamazal Cc: Jacopo Mondi X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=1666; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=XBc9Oh6IdqRxVsjpBLv31tO74D62Y2hjOtpHW69RQec=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBqc2EjKjdqzlqfEzWu+iIXxkK5IEVCWSk3nsxXF lFU7XoUHsSJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCanNhIwAKCRByNAaPFqFW PB3uD/0fRq+cobLRAa2IDEpweinlcEVPdTDZwuSBxm0+2cPb7MabunKk+DFqSfd4QPl1zT2E3pD QHhcBZEh9ldBSiD80Tt/m3MyZJo4dwo8k17Y0aeGuokinCUOnqv8iyjG6lHsYZ1mG+Y4dVX4skk GIb3vqPR1/zHkgJCeGt4FfoI8jvDcT5AU89Z3g/Jwjt8gYDY6agMpfUjIU5PdAmpaBdvUSFE9S5 dF/+1XCWwvCnW+w5KRxbpJpxb4ISB4z+YqgMAI58kzC8PCjLSeboDmrj1YdfEeULeKLUqR0m5HL vsyAnKKekjT28DrwxUQpiNOcW08SA606J1jAMoMN8xMw9C9LzR0mv8eldBEH/NWnnV79OYsCYPx nEtZL7FzLFulXBXZEOTyUeVaFQTnbQH7fqmyli7JyQ69UXPH5mGTJ+J+TXbN7Tp979lpRgiyKgE TVRNZSmdRqPgYdnBDdclOEAm7PuibF6kDB8O2WLLk3n9eObqabpQdfFpYZEt4hUGNrdup0AjLUi IBfORtXLlp+dd7WXU3At1vFBJ+2VxkuQ4qanN3wog1+qwwxc2xrrvlDTw1B6svbYlDhV/p9kLYX oZuVitkTywokz0muijdWlQPCJmwEpPrvfbiHYvB7SvIar4HUaDZAfthaHp5oag0108WfI9YAuB9 VH65fxdftZCYbxw== 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" Specialize Interpolator<>::interpolate() for uint8_t register size. Some platforms (Mali, Simple) use an 8 bit register size. Provide a specialization for the that type of Interpolator<>::interpolate(). Signed-off-by: Jacopo Mondi Reviewed-by: Kieran Bingham --- src/ipa/libipa/lsc.cpp | 11 +++++++++++ src/ipa/libipa/lsc.h | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/src/ipa/libipa/lsc.cpp b/src/ipa/libipa/lsc.cpp index a8b89bcedf57..cf9ea6e68c73 100644 --- a/src/ipa/libipa/lsc.cpp +++ b/src/ipa/libipa/lsc.cpp @@ -102,6 +102,17 @@ void Interpolator>:: for (auto const &[k, v] : a) interpolateVector(v, b.at(k), dest[k], lambda); } + +template<> +void Interpolator>:: + interpolate(const lsc::Components &a, + const lsc::Components &b, + lsc::Components &dest, + double lambda) +{ + for (auto const &[k, v] : a) + interpolateVector(v, b.at(k), dest[k], lambda); +} #endif /** diff --git a/src/ipa/libipa/lsc.h b/src/ipa/libipa/lsc.h index 30330f284013..17d5a4a141c1 100644 --- a/src/ipa/libipa/lsc.h +++ b/src/ipa/libipa/lsc.h @@ -48,6 +48,13 @@ void Interpolator>:: const lsc::Components &b, lsc::Components &dest, double lambda); + +template<> +void Interpolator>:: + interpolate(const lsc::Components &a, + const lsc::Components &b, + lsc::Components &dest, + double lambda); #endif /* __DOXYGEN__ */ class LscAlgorithmBase