{"id":15601,"url":"https://patchwork.libcamera.org/api/patches/15601/?format=json","web_url":"https://patchwork.libcamera.org/patch/15601/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20220331165725.188364-2-umang.jain@ideasonboard.com>","date":"2022-03-31T16:57:24","name":"[libcamera-devel,1/2] ipa: rkisp1: Split queuing of request and parameter filling","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"a683f7c6bdc4f46fdc054b2e48c45dff860468f8","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/?format=json","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"delegate":{"id":12,"url":"https://patchwork.libcamera.org/api/users/12/?format=json","username":"uajain","first_name":"Umang","last_name":"Jain","email":"umang.jain@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/patch/15601/mbox/","series":[{"id":3021,"url":"https://patchwork.libcamera.org/api/series/3021/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3021","date":"2022-03-31T16:57:23","name":"Synchronise IPA interfaces","version":1,"mbox":"https://patchwork.libcamera.org/series/3021/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/15601/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/15601/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 95CA6C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 31 Mar 2022 16:57:50 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5E59965632;\n\tThu, 31 Mar 2022 18:57:50 +0200 (CEST)","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 364CD65634\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 31 Mar 2022 18:57:48 +0200 (CEST)","from perceval.ideasonboard.com (unknown [103.74.73.150])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 595708E6;\n\tThu, 31 Mar 2022 18:57:45 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1648745870;\n\tbh=L7xHZmTfDdpJRrWwW0+r1bNt9u+KMb8rF+ZeFiIrg5w=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=vwbSaJ3Mv3j/UTWpsCUBqAI9P6OwOuFXN17dj551ZQtUHNv+zt2oD7ORhFo3uqnoM\n\tsYo1Pfb4fo7tcyjFU7+uSK0dAPfCofnevSow/wfInuaTGkWmroR4tzJR4JnQAAo672\n\tNzphHUfiAFMFPuHmnpvtkWCTJrjxrUS5HY7t9wHJsDIQdGVp56apUFCYx1FOKpcmfl\n\tsSZz/dY8kRJevp1tAMhvo4RwcQ2sEqzw4pyisAjAAqAKgrYiBVZ+plX7jDV8g/x4Su\n\tg16EEyeBrvEuc41PTKNqyCOQy1mXZ5aETCD93SLNMY4VnAk4LgXqN/XmpwIg+ggE/h\n\t9Tqz68oBwaTvw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1648745867;\n\tbh=L7xHZmTfDdpJRrWwW0+r1bNt9u+KMb8rF+ZeFiIrg5w=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=qwCkW/qfFH1eiu/URvtYiAaIPxxis5M77UEaqAgCNGgbQqM12Zqo+a2/agb4SYtE6\n\trwJ3Pkb4IfS4fEKJEmg56yV/TmIuxnRzIjqUUHYC1o33+7fB2Rl8ay6Y0yn9nKh2G8\n\tgGEnolwN6y0PMqBeaLg6OVcHkCbs7jeZkIs4xqR4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"qwCkW/qf\"; dkim-atps=neutral","To":"libcamera-devel@lists.libcamera.org","Date":"Thu, 31 Mar 2022 22:27:24 +0530","Message-Id":"<20220331165725.188364-2-umang.jain@ideasonboard.com>","X-Mailer":"git-send-email 2.31.1","In-Reply-To":"<20220331165725.188364-1-umang.jain@ideasonboard.com>","References":"<20220331165725.188364-1-umang.jain@ideasonboard.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH 1/2] ipa: rkisp1: Split queuing of request\n\tand parameter filling","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>","From":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"Queuing of request (i.e. passing of controls to the IPA)\nand filling of the parameters buffer are two separate operations.\nTreat them as such by splitting them into two functions in\nthe rkisp1 IPA interface.\n\nSigned-off-by: Umang Jain <umang.jain@ideasonboard.com>\n---\n include/libcamera/ipa/rkisp1.mojom       |  4 ++--\n src/ipa/rkisp1/rkisp1.cpp                | 11 ++++++++---\n src/libcamera/pipeline/rkisp1/rkisp1.cpp |  5 +++--\n 3 files changed, 13 insertions(+), 7 deletions(-)","diff":"diff --git a/include/libcamera/ipa/rkisp1.mojom b/include/libcamera/ipa/rkisp1.mojom\nindex f50f1e11..e3537385 100644\n--- a/include/libcamera/ipa/rkisp1.mojom\n+++ b/include/libcamera/ipa/rkisp1.mojom\n@@ -23,8 +23,8 @@ interface IPARkISP1Interface {\n \tmapBuffers(array<libcamera.IPABuffer> buffers);\n \tunmapBuffers(array<uint32> ids);\n \n-\t[async] queueRequest(uint32 frame, uint32 bufferId,\n-\t\t\t     libcamera.ControlList reqControls);\n+\t[async] queueRequest(uint32 frame, libcamera.ControlList reqControls);\n+\t[async] fillParamsBuffer(uint32 frame, uint32 bufferId);\n \t[async] processStatsBuffer(uint32 frame, uint32 bufferId,\n \t\t\t\t   libcamera.ControlList sensorControls);\n };\ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 13ab1cdc..ef1f0d56 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -54,8 +54,8 @@ public:\n \tvoid mapBuffers(const std::vector<IPABuffer> &buffers) override;\n \tvoid unmapBuffers(const std::vector<unsigned int> &ids) override;\n \n-\tvoid queueRequest(const uint32_t frame, const uint32_t bufferId,\n-\t\t\t  const ControlList &controls) override;\n+\tvoid queueRequest(const uint32_t frame, const ControlList &controls) override;\n+\tvoid fillParamsBuffer(const uint32_t frame, const uint32_t bufferId) override;\n \tvoid processStatsBuffer(const uint32_t frame, const uint32_t bufferId,\n \t\t\t\tconst ControlList &sensorControls) override;\n private:\n@@ -235,8 +235,13 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)\n \t}\n }\n \n-void IPARkISP1::queueRequest(const uint32_t frame, const uint32_t bufferId,\n+void IPARkISP1::queueRequest([[maybe_unused]] const uint32_t frame,\n \t\t\t     [[maybe_unused]] const ControlList &controls)\n+{\n+\t/* \\todo Start processing for 'frame' based on 'controls'. */\n+}\n+\n+void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)\n {\n \trkisp1_params_cfg *params =\n \t\treinterpret_cast<rkisp1_params_cfg *>(\ndiff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\nindex e6fc582b..1624e2ec 100644\n--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp\n@@ -855,8 +855,9 @@ int PipelineHandlerRkISP1::queueRequestDevice(Camera *camera, Request *request)\n \tif (!info)\n \t\treturn -ENOENT;\n \n-\tdata->ipa_->queueRequest(data->frame_, info->paramBuffer->cookie(),\n-\t\t\t\t request->controls());\n+\tdata->ipa_->queueRequest(data->frame_, request->controls());\n+\tdata->ipa_->fillParamsBuffer(data->frame_, info->paramBuffer->cookie());\n+\n \tdata->frame_++;\n \n \treturn 0;\n","prefixes":["libcamera-devel","1/2"]}