Patch Detail
Show a patch.
GET /api/patches/25395/?format=api
{ "id": 25395, "url": "https://patchwork.libcamera.org/api/patches/25395/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25395/", "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": "<20251209180954.332392-7-isaac.scott@ideasonboard.com>", "date": "2025-12-09T18:09:54", "name": "[RFC,6/6] rkisp1: Add bypass configurations to ipa_context", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "207e38296502cae6eb2bca1e9f28c5d1c4cfb2af", "submitter": { "id": 215, "url": "https://patchwork.libcamera.org/api/people/215/?format=api", "name": "Isaac Scott", "email": "isaac.scott@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25395/mbox/", "series": [ { "id": 5643, "url": "https://patchwork.libcamera.org/api/series/5643/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5643", "date": "2025-12-09T18:09:48", "name": "rkisp1: Add support for YUV bypass", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5643/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25395/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25395/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 943A6BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 9 Dec 2025 18:10:15 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 45DDA61428;\n\tTue, 9 Dec 2025 19:10:15 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 34A9F61424\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 9 Dec 2025 19:10:09 +0100 (CET)", "from isaac-ThinkPad-T16-Gen-2.infra.iob\n\t(cpc90716-aztw32-2-0-cust408.18-1.cable.virginm.net [86.26.101.153])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7A92663B;\n\tTue, 9 Dec 2025 19:10:08 +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=\"CoaKUhQI\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1765303808;\n\tbh=9jyj2BrgKWbksGaynBXrrU6cv5b4GqT2L3evZK9s510=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=CoaKUhQIg09QRUX6B33ku11eAxQniPeJq0DpMAL0z9U+pf9J/m+7R3ANI+/ncfi4Y\n\t2zh3nlqRKcUdWbT+nmZB6IVORY62VedFkgBoWFtad6laXZckJbnpRVoznsnrfLjHLT\n\tgOGEQAqzggvT19dCYO+ANGk7sjfkokrlh8oW7o9c=", "From": "Isaac Scott <isaac.scott@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Isaac Scott <isaac.scott@ideasonboard.com>", "Subject": "[RFC PATCH 6/6] rkisp1: Add bypass configurations to ipa_context", "Date": "Tue, 9 Dec 2025 18:09:54 +0000", "Message-ID": "<20251209180954.332392-7-isaac.scott@ideasonboard.com>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20251209180954.332392-1-isaac.scott@ideasonboard.com>", "References": "<20251209180954.332392-1-isaac.scott@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 rkisp1 supports ISP bypass for RAW formats. There are other formats\nthat are not RAW which can also be used in this mode, which are not\ncurrently supported by the rkisp1 pipeline handler.\n\nAdd a new IPA context member which tracks formats which are not RAW, so\nwe can attempt to use them in bypass mode if they are supported.\n\nSigned-off-by: Isaac Scott <isaac.scott@ideasonboard.com>\n---\n src/ipa/rkisp1/ipa_context.h | 2 ++\n src/ipa/rkisp1/rkisp1.cpp | 15 ++++++++++++++-\n 2 files changed, 16 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h\nindex b257cee55..28d25af18 100644\n--- a/src/ipa/rkisp1/ipa_context.h\n+++ b/src/ipa/rkisp1/ipa_context.h\n@@ -70,7 +70,9 @@ struct IPASessionConfiguration {\n \t\tSize size;\n \t} sensor;\n \n+\tbool bypass;\n \tbool raw;\n+\n \tuint32_t paramFormat;\n };\n \ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex 9fee33de2..c195f0287 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -292,6 +292,19 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,\n \t\t\treturn format.colourEncoding == PixelFormatInfo::ColourEncodingRAW;\n \t\t});\n \n+\t/*\n+\t * Many formats are supported by the ISP in bypass mode, and are not RAW. Some support\n+\t * both RAW and bypass, but for now we can keep track of those that are not RAW,\n+\t * so we can attempt to use bypass for them.\n+\t */\n+\tcontext_.configuration.bypass = std::any_of(streamConfig.begin(), streamConfig.end(),\n+\t\t[](auto &cfg) -> bool {\n+\t\t\tPixelFormat pixelFormat{ cfg.second.pixelFormat };\n+\t\t\tconst PixelFormatInfo &format = PixelFormatInfo::info(pixelFormat);\n+\t\t\treturn format.colourEncoding != PixelFormatInfo::ColourEncodingRAW;\n+\t\t});\n+\n+\n \tfor (auto const &a : algorithms()) {\n \t\tAlgorithm *algo = static_cast<Algorithm *>(a.get());\n \n@@ -374,7 +387,7 @@ void IPARkISP1::processStats(const uint32_t frame, const uint32_t bufferId,\n \t * provided.\n \t */\n \tconst rkisp1_stat_buffer *stats = nullptr;\n-\tif (!context_.configuration.raw)\n+\tif (!context_.configuration.bypass)\n \t\tstats = reinterpret_cast<rkisp1_stat_buffer *>(\n \t\t\tmappedBuffers_.at(bufferId).planes()[0].data());\n \n", "prefixes": [ "RFC", "6/6" ] }