Patch Detail
Show a patch.
GET /api/patches/12014/?format=api
{ "id": 12014, "url": "https://patchwork.libcamera.org/api/patches/12014/?format=api", "web_url": "https://patchwork.libcamera.org/patch/12014/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/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": "<20210420130741.236848-5-kieran.bingham@ideasonboard.com>", "date": "2021-04-20T13:07:39", "name": "[libcamera-devel,v4,4/6] libcamera: pipeline: ipu3: Cancel unused buffers", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "07ec471ec27b1e1a7286c8ec863f04ce6ec0581c", "submitter": { "id": 4, "url": "https://patchwork.libcamera.org/api/people/4/?format=api", "name": "Kieran Bingham", "email": "kieran.bingham@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/12014/mbox/", "series": [ { "id": 1952, "url": "https://patchwork.libcamera.org/api/series/1952/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1952", "date": "2021-04-20T13:07:35", "name": "IPU3 Debug Improvements", "version": 4, "mbox": "https://patchwork.libcamera.org/series/1952/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/12014/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/12014/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 6D78EBDB16\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Apr 2021 13:07:52 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A8C6268859;\n\tTue, 20 Apr 2021 15:07:51 +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 50FC768840\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Apr 2021 15:07:47 +0200 (CEST)", "from Q.local (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net\n\t[86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E298AE2E;\n\tTue, 20 Apr 2021 15:07:46 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ML+ZUx9V\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1618924067;\n\tbh=mtgPt6WVG6Nrocutt5ypSAYObhdFuRXAKfHyEiXOl4U=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=ML+ZUx9V6o+g9BMA25bv2NRpMAyN1p9FJtCj3VxkS4+lPyIbgsZm47Tu9Bv4uM1/r\n\ts0Z0nA6po2GCw1bYuxiCbYgNBXXSUCMoQ2IQPyM+ToiBMUF1DZMMYwKcQ62ezRmb9d\n\tJW957FABKwKDM7khkvy+EXebqNuRDSQojNKq40vY=", "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "To": "libcamera devel <libcamera-devel@lists.libcamera.org>", "Date": "Tue, 20 Apr 2021 14:07:39 +0100", "Message-Id": "<20210420130741.236848-5-kieran.bingham@ideasonboard.com>", "X-Mailer": "git-send-email 2.25.1", "In-Reply-To": "<20210420130741.236848-1-kieran.bingham@ideasonboard.com>", "References": "<20210420130741.236848-1-kieran.bingham@ideasonboard.com>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH v4 4/6] libcamera: pipeline: ipu3: Cancel\n\tunused buffers", "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=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "When the CIO2 returns a cancelled buffer, we will not queue buffers\nto the IMGU.\n\nThese buffers should be explicitly marked as cancelled to ensure\nthe application knows there is no valid metadata or frame data\nprovided in the buffer.\n\nProvide a cancel() method on the FrameBuffer to allow explicitly\ncancelling a buffer.\n\nSigned-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n---\n include/libcamera/buffer.h | 2 ++\n src/libcamera/buffer.cpp | 8 ++++++++\n src/libcamera/pipeline/ipu3/ipu3.cpp | 7 +++++--\n 3 files changed, 15 insertions(+), 2 deletions(-)", "diff": "diff --git a/include/libcamera/buffer.h b/include/libcamera/buffer.h\nindex 620f8a66f6a2..e0af00900409 100644\n--- a/include/libcamera/buffer.h\n+++ b/include/libcamera/buffer.h\n@@ -53,6 +53,8 @@ public:\n \tunsigned int cookie() const { return cookie_; }\n \tvoid setCookie(unsigned int cookie) { cookie_ = cookie; }\n \n+\tvoid cancel() { metadata_.status = FrameMetadata::FrameCancelled; }\n+\n private:\n \tLIBCAMERA_DISABLE_COPY_AND_MOVE(FrameBuffer)\n \ndiff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp\nindex 75b2693281a7..7635226b9045 100644\n--- a/src/libcamera/buffer.cpp\n+++ b/src/libcamera/buffer.cpp\n@@ -226,6 +226,14 @@ FrameBuffer::FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie)\n * core never modifies the buffer cookie.\n */\n \n+/**\n+ * \\fn FrameBuffer::cancel()\n+ * \\brief Marks the buffer as cancelled\n+ *\n+ * If a buffer is not used by a request, it shall be marked as cancelled to\n+ * indicate that the metadata is invalid.\n+ */\n+\n /**\n * \\class MappedBuffer\n * \\brief Provide an interface to support managing memory mapped buffers\ndiff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp\nindex 51446fcf5bc1..73306cea6b37 100644\n--- a/src/libcamera/pipeline/ipu3/ipu3.cpp\n+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp\n@@ -1257,8 +1257,11 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer)\n \n \t/* If the buffer is cancelled force a complete of the whole request. */\n \tif (buffer->metadata().status == FrameMetadata::FrameCancelled) {\n-\t\tfor (auto it : request->buffers())\n-\t\t\tpipe_->completeBuffer(request, it.second);\n+\t\tfor (auto it : request->buffers()) {\n+\t\t\tFrameBuffer *b = it.second;\n+\t\t\tb->cancel();\n+\t\t\tpipe_->completeBuffer(request, b);\n+\t\t}\n \n \t\tframeInfos_.remove(info);\n \t\tpipe_->completeRequest(request);\n", "prefixes": [ "libcamera-devel", "v4", "4/6" ] }