Patch Detail
Show a patch.
GET /api/1.1/patches/26354/?format=api
{ "id": 26354, "url": "https://patchwork.libcamera.org/api/1.1/patches/26354/?format=api", "web_url": "https://patchwork.libcamera.org/patch/26354/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260325151416.2114564-13-stefan.klug@ideasonboard.com>", "date": "2026-03-25T15:13:44", "name": "[v2,12/32] pipeline: rkisp1: Fix controls in raw mode", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "970899235c19f56ca31cf9072cb1e520e7431127", "submitter": { "id": 184, "url": "https://patchwork.libcamera.org/api/1.1/people/184/?format=api", "name": "Stefan Klug", "email": "stefan.klug@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/26354/mbox/", "series": [ { "id": 5849, "url": "https://patchwork.libcamera.org/api/1.1/series/5849/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5849", "date": "2026-03-25T15:13:32", "name": "rkisp1: pipeline rework for PFC", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5849/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/26354/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/26354/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id B11EBC32FC\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Mar 2026 15:15:16 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1127762882;\n\tWed, 25 Mar 2026 16:15:16 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E1E8C62857\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Mar 2026 16:15:14 +0100 (CET)", "from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:b16a:5ed9:4ada:a95a])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id ED8321943; \n\tWed, 25 Mar 2026 16:13:56 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"GIc2qa0t\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774451637;\n\tbh=X6yvf1PwwFd+CBeirPNd09zNmApLC+ULARtP3wJL9iA=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=GIc2qa0tRC1fv6oH+dOu/LQmuYz2ehhY7Qb9743sTEiSlwszdqCUvD96f/doseK+a\n\t7t0IGhLobafESVvgDDTa4/ev53OuZqCDS8+A1bcQAusQtIQhvBoTdaNUQsJHdwhIEf\n\tU7zSEvqrITorqF28pjkImKs5VaeR9gujAZBdu3DY=", "From": "Stefan Klug <stefan.klug@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Stefan Klug <stefan.klug@ideasonboard.com>", "Subject": "[PATCH v2 12/32] pipeline: rkisp1: Fix controls in raw mode", "Date": "Wed, 25 Mar 2026 16:13:44 +0100", "Message-ID": "<20260325151416.2114564-13-stefan.klug@ideasonboard.com>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20260325151416.2114564-1-stefan.klug@ideasonboard.com>", "References": "<20260325151416.2114564-1-stefan.klug@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "After the pipeline restructuring setSensorControls is no longer emitted\nwithin process() but within computeParams(). In raw mode computeParams\nis not called and therefore setSensorControls is never emitted. Fix that\nby allowing computeParams to be called with an empty bufferId. This\nstrategy is also used for processStats() to ensure that metadata gets\nfilled in raw mode. Then call computeParams within frameStart() when in\nraw mode.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Call computeParams() within queueRequestDevice for now to make the\n patch easier to follow. Moving computeParams to frameStart() will\nhappen in a later patch.\n---\n src/ipa/rkisp1/rkisp1.cpp | 12 ++++++++++++\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 6 ++++++\n 2 files changed, 18 insertions(+)", "diff": "diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 81430d6532ac..e06238a7abe9 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -343,6 +343,18 @@ void IPARkISP1::computeParams(const uint32_t frame, const uint32_t bufferId)\n {\n \tIPAFrameContext &frameContext = context_.frameContexts.get(frame);\n \n+\t/*\n+\t * \\todo: This needs discussion. In raw mode, computeParams is\n+\t * called without a params buffer, to trigger the setSensorControls\n+\t * signal. Currently our algorithms don't support prepare calls with\n+\t * a nullptr. Do we need that or can we safely skip it?\n+\t */\n+\tif (bufferId == 0) {\n+\t\tControlList ctrls = getSensorControls(frameContext);\n+\t\tsetSensorControls.emit(frame, ctrls);\n+\t\treturn;\n+\t}\n+\n \tRkISP1Params params(context_.configuration.paramFormat,\n \t\t\t mappedBuffers_.at(bufferId).planes()[0]);\n \ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex a3b78bf4dc6b..7352237dbb86 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -1350,6 +1350,12 @@ int PipelineHandlerRkISP1::queueRequestDevice(Camera *camera, Request *request)\n \n \t\tif (data->selfPath_ && info->selfPathBuffer)\n \t\t\tdata->selfPath_->queueBuffer(info->selfPathBuffer);\n+\n+\t\t/*\n+\t\t * Call computeParams with an empty param buffer to trigger the\n+\t\t * setSensorControls signal.\n+\t\t */\n+\t\tdata->ipa_->computeParams(data->frame_, 0);\n \t} else {\n \t\tdata->ipa_->computeParams(data->frame_,\n \t\t\t\t\t info->paramBuffer->cookie());\n", "prefixes": [ "v2", "12/32" ] }