{"id":26371,"url":"https://patchwork.libcamera.org/api/1.1/patches/26371/?format=json","web_url":"https://patchwork.libcamera.org/patch/26371/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","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-30-stefan.klug@ideasonboard.com>","date":"2026-03-25T15:14:01","name":"[v2,29/32] pipeline: rkisp1: Pass bufferId to paramsComputed()","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"8733e01ffbab3ef0abd1f2dd7ecfa1ee148bffb7","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/1.1/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/26371/mbox/","series":[{"id":5849,"url":"https://patchwork.libcamera.org/api/1.1/series/5849/?format=json","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/26371/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/26371/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 43F86C330A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 25 Mar 2026 15:16:04 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B804462CE3;\n\tWed, 25 Mar 2026 16:16:03 +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 3A84F62C4E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 25 Mar 2026 16:16:02 +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 3F8D31BCF; \n\tWed, 25 Mar 2026 16:14:44 +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=\"g/SQqUz0\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1774451684;\n\tbh=s0K8MHWvQEkthFW0dWwiLxTiBHilkSt4GYNaDePO0bo=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=g/SQqUz00HQqzHXyLJWxcFyaRpmXoI2DD75q/rOpqSQQmc26cqHhegiMAhXLK731X\n\tTHEeGdf8DdO74X2jiZj6Z9FjSm1WejjiIwXnCxeDvzG4+1sIMnTNXs1XO95J2Qjdee\n\tx198Z60x9dWwVLe7F6ZmfF5DmvTZIyCFpO3XVG+Y=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>","Subject":"[PATCH v2 29/32] pipeline: rkisp1: Pass bufferId to paramsComputed()","Date":"Wed, 25 Mar 2026 16:14:01 +0100","Message-ID":"<20260325151416.2114564-30-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":"The frame number is not necessarily unique. This should not be the case,\nbut even misbehaving kernel drivers should not be able to interfere with\nthat on the libcamera side. Pass the bufferId, to have a guaranteed\nunique handle.\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\n---\n\nChanges in v2:\n- Added this patch\n---\n include/libcamera/ipa/rkisp1.mojom       | 2 +-\n src/ipa/rkisp1/rkisp1.cpp                | 2 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 8 ++++----\n 3 files changed, 6 insertions(+), 6 deletions(-)","diff":"diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\nindex 56c9fe8ab92a..e48bdf92c8f8 100644\n--- a/include/libcamera/ipa/rkisp1.mojom\n+++ b/include/libcamera/ipa/rkisp1.mojom\n@@ -45,7 +45,7 @@ interface IPARkISP1Interface {\n };\n \n interface IPARkISP1EventInterface {\n-\tparamsComputed(uint32 frame, uint32 bytesused);\n+\tparamsComputed(uint32 frame, uint32 bufferId, uint32 bytesused);\n \tsetSensorControls(uint32 frame, libcamera.ControlList sensorControls);\n \tmetadataReady(uint32 frame, libcamera.ControlList metadata);\n };\ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 8a657a170b0d..863cea13dfa3 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -381,7 +381,7 @@ void IPARkISP1::computeParams(const uint32_t frame, const uint32_t bufferId)\n \tsetSensorControls.emit(frame, ctrls);\n \n \tif (bufferId != 0)\n-\t\tparamsComputed.emit(frame, size);\n+\t\tparamsComputed.emit(frame, bufferId, size);\n }\n \n void IPARkISP1::processStats(const uint32_t frame, const uint32_t bufferId,\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex b6592e87dcc4..c46515110ffc 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -105,7 +105,7 @@ public:\n \tbool canUseDewarper_;\n \tbool usesDewarper_;\n \n-\tvoid paramsComputed(unsigned int frame, unsigned int bytesused);\n+\tvoid paramsComputed(unsigned int frame, unsigned int bufferId, unsigned int bytesused);\n private:\n \tvoid setSensorControls(unsigned int frame,\n \t\t\t       const ControlList &sensorControls);\n@@ -376,14 +376,14 @@ int RkISP1CameraData::loadTuningFile(const std::string &path)\n \treturn 0;\n }\n \n-void RkISP1CameraData::paramsComputed(unsigned int frame, unsigned int bytesused)\n+void RkISP1CameraData::paramsComputed(unsigned int frame, unsigned int bufferId, unsigned int bytesused)\n {\n \tPipelineHandlerRkISP1 *pipe = RkISP1CameraData::pipe();\n \tParamBufferInfo &pInfo = pipe->computingParamBuffers_.front();\n \tpipe->computingParamBuffers_.pop();\n \n-\tASSERT(pInfo.expectedSequence == frame);\n \tFrameBuffer *buffer = pInfo.buffer;\n+\tASSERT(buffer->cookie() == bufferId);\n \n \tLOG(RkISP1Schedule, Debug) << \"Queue params for \" << frame << \" \" << buffer;\n \n@@ -1225,7 +1225,7 @@ int PipelineHandlerRkISP1::start(Camera *camera, [[maybe_unused]] const ControlL\n \t\tavailableParamBuffers_.pop();\n \t\tcomputingParamBuffers_.push({ paramBuffer, nextParamsSequence_++ });\n \t\tparamsSyncHelper_.pushCorrection(0);\n-\t\tdata->paramsComputed(0, res.paramBufferBytesUsed);\n+\t\tdata->paramsComputed(0, paramBufferId, res.paramBufferBytesUsed);\n \t}\n \n \tactions += [&]() { data->ipa_->stop(); };\n","prefixes":["v2","29/32"]}