Patch Detail
Show a patch.
GET /api/1.1/patches/23949/?format=api
{ "id": 23949, "url": "https://patchwork.libcamera.org/api/1.1/patches/23949/?format=api", "web_url": "https://patchwork.libcamera.org/patch/23949/", "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": "<20250724152936.99830-3-mzamazal@redhat.com>", "date": "2025-07-24T15:29:36", "name": "[v2,2/2] libcamera: software_isp: Reduce statistics image area", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "24e19bc506c70220d56929cd7f2726a641f9b409", "submitter": { "id": 177, "url": "https://patchwork.libcamera.org/api/1.1/people/177/?format=api", "name": "Milan Zamazal", "email": "mzamazal@redhat.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/23949/mbox/", "series": [ { "id": 5324, "url": "https://patchwork.libcamera.org/api/1.1/series/5324/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5324", "date": "2025-07-24T15:29:34", "name": "Reduce statistics image area for GPU", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5324/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/23949/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/23949/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 8E214C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Jul 2025 15:29:56 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 65B0A69113;\n\tThu, 24 Jul 2025 17:29:55 +0200 (CEST)", "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 875B169111\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Jul 2025 17:29:52 +0200 (CEST)", "from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-252-MGS2zZsiMLGeoMjt5HQYYA-1;\n\tThu, 24 Jul 2025 11:29:49 -0400", "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 55E72180035F; Thu, 24 Jul 2025 15:29:48 +0000 (UTC)", "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.32.255])\n\tby mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id F2EC5300018D; Thu, 24 Jul 2025 15:29:46 +0000 (UTC)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"fo0i/x9Q\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1753370991;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=VF4ZjUc9WvxVQjlS9PwGC60ALuXZobxXkTsY36KUEj0=;\n\tb=fo0i/x9QGEaqT+byh0prn+lg3v6CyZKb5XYVo2SzCIZ8V9CfQ8xp2P9WrM7AbX5N1zUqTK\n\tnIeUlaZQb3qGZY7c326ZrdhYzzg0WYcSxt+fwv/jCteuqzPpBg+EWXm0sfh0mPEMozzIQI\n\tK/6J4NMLPCjUe1hcp0S9674+S4lFQ28=", "X-MC-Unique": "MGS2zZsiMLGeoMjt5HQYYA-1", "X-Mimecast-MFC-AGG-ID": "MGS2zZsiMLGeoMjt5HQYYA_1753370988", "From": "Milan Zamazal <mzamazal@redhat.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Milan Zamazal <mzamazal@redhat.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>", "Subject": "[PATCH v2 2/2] libcamera: software_isp: Reduce statistics image area", "Date": "Thu, 24 Jul 2025 17:29:36 +0200", "Message-ID": "<20250724152936.99830-3-mzamazal@redhat.com>", "In-Reply-To": "<20250724152936.99830-1-mzamazal@redhat.com>", "References": "<20250724152936.99830-1-mzamazal@redhat.com>", "MIME-Version": "1.0", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "jyDYvjlu0mmxzwar1LfeAmHQU07GeaTZH2madzG_vpE_1753370988", "X-Mimecast-Originator": "redhat.com", "Content-Transfer-Encoding": "8bit", "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true", "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 statistics in software ISP is computed basically over the whole\nimage area, although only on part of the pixels. It is not necessary to\ncover the whole image area, it's sufficient to compute the statistics\nlet's say over the central area of 2/3 of the image width and height,\nwhich should be both sufficient and faster. The speedup is not that\nimportant with the CPU implementation but it may save CPU work\nmore noticeably with GPU debayering implementation.\n\nSigned-off-by: Milan Zamazal <mzamazal@redhat.com>\n---\n src/libcamera/software_isp/debayer_cpu.cpp | 2 +-\n src/libcamera/software_isp/debayer_egl.cpp | 7 +++++--\n 2 files changed, 6 insertions(+), 3 deletions(-)", "diff": "diff --git a/src/libcamera/software_isp/debayer_cpu.cpp b/src/libcamera/software_isp/debayer_cpu.cpp\nindex e56492848..bea153592 100644\n--- a/src/libcamera/software_isp/debayer_cpu.cpp\n+++ b/src/libcamera/software_isp/debayer_cpu.cpp\n@@ -526,7 +526,7 @@ int DebayerCpu::configure(const StreamConfiguration &inputCfg,\n \twindow_.width = outputCfg.size.width;\n \twindow_.height = outputCfg.size.height;\n \n-\t/* Don't pass x,y since process() already adjusts src before passing it */\n+\t/* Don't pass x,y from window_ since process() already adjusts for it. */\n \tstats_->setWindow(Rectangle(window_.size()));\n \n \t/* pad with patternSize.Width on both left and right side */\ndiff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp\nindex 9ec966608..9ad7d6fe7 100644\n--- a/src/libcamera/software_isp/debayer_egl.cpp\n+++ b/src/libcamera/software_isp/debayer_egl.cpp\n@@ -393,8 +393,11 @@ int DebayerEGL::configure(const StreamConfiguration &inputCfg,\n \twindow_.width = outputCfg.size.width;\n \twindow_.height = outputCfg.size.height;\n \n-\t/* Don't pass x,y since process() already adjusts src before passing it */\n-\tstats_->setWindow(Rectangle(window_.size()));\n+\t/*\n+\t * Don't pass x,y from window_ since process() already adjusts for it.\n+\t * But crop the window to 2/3 of its width and height for speedup.\n+\t */\n+\tstats_->setWindow(Rectangle(window_.size()).croppedBy(2, 3));\n \n \tLOG(Debayer, Debug) << \"Input width \" << inputCfg.size.width << \" height \" << inputCfg.size.height;\n \tLOG(Debayer, Debug) << \"Output width \" << outputCfg.size.width << \" height \" << outputCfg.size.height;\n", "prefixes": [ "v2", "2/2" ] }