From patchwork Thu Jul 17 12:59:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefan Klug X-Patchwork-Id: 23841 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 E93F5C3237 for ; Thu, 17 Jul 2025 12:59:46 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id A872668F8C; Thu, 17 Jul 2025 14:59:46 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="mR7fuQr9"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4A89F68F81 for ; Thu, 17 Jul 2025 14:59:44 +0200 (CEST) Received: from ideasonboard.com (unknown [IPv6:2a00:6020:448c:6c00:7b93:8acd:d82d:248d]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 5153021F2; Thu, 17 Jul 2025 14:59:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1752757150; bh=leYeTMkyXLzD0Qchj+IHROvcS8R27QrAnfZW3CFZN/U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mR7fuQr9mVpDrmfxYvcnDFcnUiX0FCStoBMPhKEOrNoiSkFfQkt2TJ/M9lFxr+KQI 5b/HA/MHgYTv7/HRUZUZB1Rqf/vsMLm6dNBoLcfsp+6Z6MlM0F1n4YB+n3H5DWuzUd RwcvkPp5eq3l8i/HmxA8KvKYUyy++ECkt1+XkDJo= From: Stefan Klug To: libcamera-devel@lists.libcamera.org Cc: Stefan Klug , Kieran Bingham , =?utf-8?q?Sven_P=C3=BCschel?= Subject: [PATCH v3 3/5] pipeline: rkisp1: Limit the maximum number of buffers queued in Date: Thu, 17 Jul 2025 14:59:23 +0200 Message-ID: <20250717125931.2848300-4-stefan.klug@ideasonboard.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250717125931.2848300-1-stefan.klug@ideasonboard.com> References: <20250717125931.2848300-1-stefan.klug@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" To keep the regulation of the algorithms as fast as possible and at the same time allow more buffers to be allocated, limit the amount of buffers that get queued into the device to the pipeline depth plus a tiny margin. Signed-off-by: Stefan Klug Reviewed-by: Kieran Bingham Tested-By: Sven Püschel Reviewed-by: Umang Jain --- Changes in v3: - Collected tags - Renamed kPipelineDepth to kRkISP1MaxQueuedRequests and made it static constexpr - Added comment to kRkISP1MaxQueuedRequests - Improved commit message Changes in v1: - Replaced function overload with constructor param --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 675f0a7490a6..7954ea82fd0d 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -155,6 +155,17 @@ private: Transform combinedTransform_; }; +namespace { + +/* + * Maximum number of requests that shall be queued into the pipeline to keep + * the regulation fast. \todo This needs revisiting as soon as buffers got + * decoupled from requests and/or a fast path for controls was implemented. + */ +static constexpr unsigned int kRkISP1MaxQueuedRequests = 4; + +} // namespace + class PipelineHandlerRkISP1 : public PipelineHandler { public: @@ -684,7 +695,8 @@ CameraConfiguration::Status RkISP1CameraConfiguration::validate() */ PipelineHandlerRkISP1::PipelineHandlerRkISP1(CameraManager *manager) - : PipelineHandler(manager), hasSelfPath_(true), useDewarper_(false) + : PipelineHandler(manager, kRkISP1MaxQueuedRequests), + hasSelfPath_(true), useDewarper_(false) { }