Patch Detail
Show a patch.
GET /api/1.1/patches/11154/?format=api
{ "id": 11154, "url": "https://patchwork.libcamera.org/api/1.1/patches/11154/?format=api", "web_url": "https://patchwork.libcamera.org/patch/11154/", "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": "<20210204162943.268517-5-niklas.soderlund@ragnatech.se>", "date": "2021-02-04T16:29:36", "name": "[libcamera-devel,v3,04/11] libcamera: ipu3: cio2: Return the FrameBuffer pointer used", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "2c8cff5c3d5e1a890b2f4c8918ba02bdd040d7aa", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/11154/mbox/", "series": [ { "id": 1655, "url": "https://patchwork.libcamera.org/api/1.1/series/1655/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1655", "date": "2021-02-04T16:29:32", "name": "libcamera: ipu3: Attach to an skeleton IPA", "version": 3, "mbox": "https://patchwork.libcamera.org/series/1655/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/11154/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/11154/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 D4D33BD162\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 4 Feb 2021 16:30:09 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B5D6161442;\n\tThu, 4 Feb 2021 17:30:08 +0100 (CET)", "from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net\n\t[195.74.38.229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 838C361437\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 4 Feb 2021 17:30:07 +0100 (CET)", "from bismarck.berto.se (p4fca2458.dip0.t-ipconnect.de\n\t[79.202.36.88])\n\tby bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA\n\tid 3d660bfa-6706-11eb-b73f-0050569116f7;\n\tThu, 04 Feb 2021 17:30:06 +0100 (CET)" ], "X-Halon-ID": "3d660bfa-6706-11eb-b73f-0050569116f7", "Authorized-sender": "niklas.soderlund@fsdn.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Thu, 4 Feb 2021 17:29:36 +0100", "Message-Id": "<20210204162943.268517-5-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.30.0", "In-Reply-To": "<20210204162943.268517-1-niklas.soderlund@ragnatech.se>", "References": "<20210204162943.268517-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v3 04/11] libcamera: ipu3: cio2: Return\n\tthe FrameBuffer pointer used", "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>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "When adding IPA plumbing to the IPU3 pipeline handler it will be needed\nto track which raw buffer was queued to the CIO2 for a specific request.\nCurrently if using an internally allocated raw buffer the FrameBuffer is\nnot exposed outside the CIO2Device as it was not needed. Prepare for the\nIPA by exposing which internal raw buffer is picked for each request,\nlater changes will associate this with a Request.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n* Changes since v1\n- Update commit message.\n---\n src/libcamera/pipeline/ipu3/cio2.cpp | 10 +++++++---\n src/libcamera/pipeline/ipu3/cio2.h | 2 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 8 ++++----\n 3 files changed, 12 insertions(+), 8 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp\nindex 72e88067f55f29c6..c7fabb98cd6b3438 100644\n--- a/src/libcamera/pipeline/ipu3/cio2.cpp\n+++ b/src/libcamera/pipeline/ipu3/cio2.cpp\n@@ -253,7 +253,7 @@ int CIO2Device::stop()\n \treturn ret;\n }\n \n-int CIO2Device::queueBuffer(Request *request, FrameBuffer *rawBuffer)\n+FrameBuffer *CIO2Device::queueBuffer(Request *request, FrameBuffer *rawBuffer)\n {\n \tFrameBuffer *buffer = rawBuffer;\n \n@@ -261,7 +261,7 @@ int CIO2Device::queueBuffer(Request *request, FrameBuffer *rawBuffer)\n \tif (!buffer) {\n \t\tif (availableBuffers_.empty()) {\n \t\t\tLOG(IPU3, Error) << \"CIO2 buffer underrun\";\n-\t\t\treturn -EINVAL;\n+\t\t\treturn nullptr;\n \t\t}\n \n \t\tbuffer = availableBuffers_.front();\n@@ -270,7 +270,11 @@ int CIO2Device::queueBuffer(Request *request, FrameBuffer *rawBuffer)\n \n \tbuffer->setRequest(request);\n \n-\treturn output_->queueBuffer(buffer);\n+\tint ret = output_->queueBuffer(buffer);\n+\tif (ret)\n+\t\treturn nullptr;\n+\n+\treturn buffer;\n }\n \n void CIO2Device::tryReturnBuffer(FrameBuffer *buffer)\ndiff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h\nindex 236ad287354a0bf6..dca4d40e4c32e8b2 100644\n--- a/src/libcamera/pipeline/ipu3/cio2.h\n+++ b/src/libcamera/pipeline/ipu3/cio2.h\n@@ -51,7 +51,7 @@ public:\n \tCameraSensor *sensor() { return sensor_.get(); }\n \tconst CameraSensor *sensor() const { return sensor_.get(); }\n \n-\tint queueBuffer(Request *request, FrameBuffer *rawBuffer);\n+\tFrameBuffer *queueBuffer(Request *request, FrameBuffer *rawBuffer);\n \tvoid tryReturnBuffer(FrameBuffer *buffer);\n \tSignal<FrameBuffer *> &bufferReady() { return output_->bufferReady; }\n \ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 23845ff3dee5f8b0..184986fc648b541a 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -646,10 +646,10 @@ int PipelineHandlerIPU3::queueRequestDevice(Camera *camera, Request *request)\n \t * Queue a buffer on the CIO2, using the raw stream buffer provided in\n \t * the request, if any, or a CIO2 internal buffer otherwise.\n \t */\n-\tFrameBuffer *rawBuffer = request->findBuffer(&data->rawStream_);\n-\terror = data->cio2_.queueBuffer(request, rawBuffer);\n-\tif (error)\n-\t\treturn error;\n+\tFrameBuffer *reqRawBuffer = request->findBuffer(&data->rawStream_);\n+\tFrameBuffer *rawBuffer = data->cio2_.queueBuffer(request, reqRawBuffer);\n+\tif (!rawBuffer)\n+\t\treturn -ENOMEM;\n \n \t/* Queue all buffers from the request aimed for the ImgU. */\n \tfor (auto it : request->buffers()) {\n", "prefixes": [ "libcamera-devel", "v3", "04/11" ] }