From patchwork Fri Nov 13 16:40:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 28896 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 44A53C3307 for ; Fri, 13 Nov 2026 16:41:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 18B126A836; Fri, 13 Nov 2026 17:41:12 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ebU0rRRr"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 16FCA6A825 for ; Fri, 13 Nov 2026 17:41:01 +0100 (CET) Received: from pb-laptop.local (185.221.140.49.nat.pool.zt.hu [185.221.140.49]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6A6C9C6A for ; Fri, 13 Nov 2026 17:38:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1794587916; bh=Pdp/dyaaLFBpAZ+8nGsI/81xProSdcxNqQVtiqLzlhQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ebU0rRRrCMBhCIA1QsZTycZcqlaJioH8XhWb7a+WxyDj3R34EpDap40yNR+DTIPqt VQM3o9Ps0dL6wzCXqkiSZi+BUEdLZVm9cGfBDk5tb4XdoWMmauTLH6EzYNXN98ZqX+ h/D41ilbYYEc+NYhoa9S94VcON8bKed7bYmlVJsk= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [PATCH v4 09/21] ipa: libipa: ccm: Use 32-bit offsets Date: Fri, 13 Nov 2026 17:40:42 +0100 Message-ID: <20261113164054.267164-10-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.56.1 In-Reply-To: <20261113164054.267164-1-barnabas.pocze@ideasonboard.com> References: <20261113164054.267164-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 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" The currently used 16-bit offsets are not enough for all platforms. Offsets should ideally be defined as normalized numbers instead of effectively "raw" register values. But that requires breaking the tuning files, so it is postponsed, and this temporary solution is used. Link: https://gitlab.freedesktop.org/camera/libcamera/-/work_items/371 Signed-off-by: Barnabás Pőcze Reviewed-by: Kieran Bingham --- src/ipa/ipu3/algorithms/ccm.cpp | 2 +- src/ipa/libipa/ccm.cpp | 2 +- src/ipa/libipa/ccm.h | 4 ++-- src/ipa/rkisp1/algorithms/ccm.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ipa/ipu3/algorithms/ccm.cpp b/src/ipa/ipu3/algorithms/ccm.cpp index 105d815b03..95ba67f8d1 100644 --- a/src/ipa/ipu3/algorithms/ccm.cpp +++ b/src/ipa/ipu3/algorithms/ccm.cpp @@ -57,7 +57,7 @@ void Ccm::queueRequest(IPAContext &context, [[maybe_unused]] const uint32_t fram void Ccm::setParameters(ipu3_uapi_params *params, IPAFrameContext &context) { const Matrix &matrix = context.ccm.ccm; - const Matrix &offsets = context.ccm.offsets; + const Matrix &offsets = context.ccm.offsets; params->use.acc_ccm = 1; diff --git a/src/ipa/libipa/ccm.cpp b/src/ipa/libipa/ccm.cpp index 8f3652f7e3..a19ae9f778 100644 --- a/src/ipa/libipa/ccm.cpp +++ b/src/ipa/libipa/ccm.cpp @@ -83,7 +83,7 @@ int CcmAlgorithmBase::init(const ValueNode &tuningData) << "Failed to parse 'offsets' " << "parameter from tuning file; falling back to zero offsets"; - offsets_.setData({ { 0, Matrix({ 0, 0, 0 }) } }); + offsets_.setData({ { 0, Matrix({ 0, 0, 0 }) } }); } return 0; diff --git a/src/ipa/libipa/ccm.h b/src/ipa/libipa/ccm.h index b72b25e2a3..c17d1ef303 100644 --- a/src/ipa/libipa/ccm.h +++ b/src/ipa/libipa/ccm.h @@ -23,7 +23,7 @@ namespace ccm { struct CcmContext { Matrix ccm; - Matrix offsets; + Matrix offsets; }; struct ActiveState { @@ -50,7 +50,7 @@ public: private: unsigned int ct_; Interpolator> ccm_; - Interpolator> offsets_; + Interpolator> offsets_; }; template diff --git a/src/ipa/rkisp1/algorithms/ccm.cpp b/src/ipa/rkisp1/algorithms/ccm.cpp index 0e54c98710..f54edd44d1 100644 --- a/src/ipa/rkisp1/algorithms/ccm.cpp +++ b/src/ipa/rkisp1/algorithms/ccm.cpp @@ -67,7 +67,7 @@ void Ccm::queueRequest(IPAContext &context, void Ccm::setParameters(RkISP1Params *params, IPAFrameContext &context) { const Matrix &matrix = context.ccm.ccm; - const Matrix &offsets = context.ccm.offsets; + const Matrix &offsets = context.ccm.offsets; auto config = params->block(); config.setEnabled(true);