Patch Detail
Show a patch.
GET /api/1.1/patches/25590/?format=api
{ "id": 25590, "url": "https://patchwork.libcamera.org/api/1.1/patches/25590/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25590/", "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": "<20251217100138.82525-18-bryan.odonoghue@linaro.org>", "date": "2025-12-17T10:01:29", "name": "[v9,17/26] libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "a86e6818e4a2bdcb146de7b82a1a6d9608104c0d", "submitter": { "id": 175, "url": "https://patchwork.libcamera.org/api/1.1/people/175/?format=api", "name": "Bryan O'Donoghue", "email": "bryan.odonoghue@linaro.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25590/mbox/", "series": [ { "id": 5669, "url": "https://patchwork.libcamera.org/api/1.1/series/5669/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5669", "date": "2025-12-17T10:01:12", "name": "Add GLES 2.0 GPUISP to libcamera", "version": 9, "mbox": "https://patchwork.libcamera.org/series/5669/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25590/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25590/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 45729C32EF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 17 Dec 2025 10:02:20 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9BB6B61F58;\n\tWed, 17 Dec 2025 11:02:19 +0100 (CET)", "from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com\n\t[IPv6:2a00:1450:4864:20::32e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2138B61A4B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 11:02:04 +0100 (CET)", "by mail-wm1-x32e.google.com with SMTP id\n\t5b1f17b1804b1-47774d3536dso3950785e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 17 Dec 2025 02:02:04 -0800 (PST)", "from inspiron14p-linux.ht.home (188-141-3-146.dynamic.upc.ie.\n\t[188.141.3.146]) by smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-47bdc1583fbsm32292585e9.0.2025.12.17.02.02.02\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 17 Dec 2025 02:02:02 -0800 (PST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"DbRcZJ3v\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1765965723; x=1766570523;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=qveDztGD+z1bcvRVfeWU9FTU1qkHWCGGVTIxAh2VXQw=;\n\tb=DbRcZJ3vQ+KDfW17o2Y2Jurn7GKo2iQl1vtOqNeC8SBw/5RB9+LJh+hmtpOCcXnhZI\n\tn7SzTXrhQHbOHeFIQ4M91wEAXVtnh2W+5tph/yh+MAtZaEUrRXaY1WkcjMCp79EnyRMx\n\tHAGmx/BZ8a5/aJBJ8OhbUBie1zZdYbJryzZZADzDrP2JQVaEMqrzMzdANZ2+iwppM8gM\n\tJWi0/8SHCPvu7FmWNndGhWs6XJSlghQBCfRKEJnfEFEIv/c7ChNZTICCvQTGycjX+4kz\n\tfvSqJefZa7gSW/Af7ojVtalnaBTxoY94GmXKlUNZY/4W+8+oz8ag7M3ULRrREFmE+z52\n\tuVgQ==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1765965723; x=1766570523;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=qveDztGD+z1bcvRVfeWU9FTU1qkHWCGGVTIxAh2VXQw=;\n\tb=q/PvIf2Km1SqLEtp+RYHRmqQq33p97F7BA08aM+w5yCJYDq1FhP8tX/8s4qPnK01SX\n\tqhm5kiHxwmJLqy1XvzoPhnd5C06bKRiCwntUXolGeswhJGyH1PdUEpnFOK0fJ5NCyJL6\n\thf2oWacWTCPDrS5pRWft5T1V4wjARfOrxJGETKQWnzYYXN0LPFWWzJcWfOH7FAS1Dpb7\n\tJ0Ab8RJw+vkCzPrSJIl/qhe6gK3GMY+gqaA3mlrEIE7tGCw19BEqSDUkBgmbfpdBtUqz\n\t2M8365yVqy/I/1Aq/rP18FoyujTITFczKodOvIGWxLVRPCPIIwU42wjgL51Y4LMBE77t\n\tDGYw==", "X-Gm-Message-State": "AOJu0Yz8XdRyapu2t4/fOY2EsmSRndpzWCs3tniXxiG6dqjbX5YW38q8\n\tUYewGkK2aGQ66mUxE2MeQqIx6ajx/5WTU5R5JiPD1cCMpLzzyNrbaVYxsUDtv7lTnAlFz4UG0h1\n\teq2GK", "X-Gm-Gg": "AY/fxX5y/9XoIuP0lpFPmZV+FwtxtLvo7oPwUSuuFrE4GytPRPATFI72RlkY8vtSxpB\n\tQOYzvtLnpsPA89bmiw4BNx5xFZEw/zYeiw/LCMmV3tgGhd0eLyWFsx5S+v5bFwORVLWCs2UVn9X\n\tXXrvcNvjywzkOE7VTksWhfxmALmFBU9z1f9VlI5cwrf8YcFZMMSE2yD5bqUdhRDSnx0kd+689fZ\n\tNtZKJTdlFFTLKbE08GNEwxI/rbvEqo5hvZXDLAh7w9ISBkNICncJoNt/Huw5z0i/R95z9QwQf4h\n\tO0dtCAdhwrfU0Htg6bVOfqUQbr7lxp7i3RmVhCyt0hLSeTzt399+zBQkuDZu3+7IwylBTB/wrMy\n\tMekhAgf5x+YLxJKFqK6keESSXMekwNJ34YwrYZanCRq3q5RBcizPgmBA0UOYSqYBS3s7A9zqLWF\n\tOGCuKL/rdGgvIqLsJnB+iDgomrIwa7ZYcZyk/VJaRCqToTR3bozIovwvnlNaixcmaEdQI=", "X-Google-Smtp-Source": "AGHT+IEUBa+i2kNjTRIKWAJTv5314mgvVfudrWtUIH+OvUhYIbJwT+NoP6DLUlLjphEXBSarAPqaKw==", "X-Received": "by 2002:a05:600c:3ba3:b0:477:a219:cdc3 with SMTP id\n\t5b1f17b1804b1-47a8f1c33c5mr212046055e9.12.1765965723387; \n\tWed, 17 Dec 2025 02:02:03 -0800 (PST)", "From": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "pavel@ucw.cz, Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tMilan Zamazal <mzamazal@redhat.com>", "Subject": "[PATCH v9 17/26] libcamera: software_isp: debayer_egl: Make\n\tDebayerEGL an environment option", "Date": "Wed, 17 Dec 2025 10:01:29 +0000", "Message-ID": "<20251217100138.82525-18-bryan.odonoghue@linaro.org>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20251217100138.82525-1-bryan.odonoghue@linaro.org>", "References": "<20251217100138.82525-1-bryan.odonoghue@linaro.org>", "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": "If GPUISP support is available make it so an environment variable can\nswitch it on.\n\nGiven we don't have full feature parity with CPUISP just yet on pixel\nformat output, we should default to CPUISP mode giving the user the option\nto switch on GPUISP by setting LIBCAMERA_SOFTISP_MODE=gpu\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\nSigned-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n---\n src/libcamera/software_isp/software_isp.cpp | 24 ++++++++++++++++++++-\n 1 file changed, 23 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\nindex b31a374d8..efe44e393 100644\n--- a/src/libcamera/software_isp/software_isp.cpp\n+++ b/src/libcamera/software_isp/software_isp.cpp\n@@ -15,6 +15,7 @@\n \n #include <libcamera/base/log.h>\n #include <libcamera/base/thread.h>\n+#include <libcamera/base/utils.h>\n \n #include <libcamera/controls.h>\n #include <libcamera/formats.h>\n@@ -25,6 +26,9 @@\n #include \"libcamera/internal/software_isp/debayer_params.h\"\n \n #include \"debayer_cpu.h\"\n+#if HAVE_DEBAYER_EGL\n+#include \"debayer_egl.h\"\n+#endif\n \n /**\n * \\file software_isp.cpp\n@@ -117,7 +121,25 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor,\n \t}\n \tstats->statsReady.connect(this, &SoftwareIsp::statsReady);\n \n-\tdebayer_ = std::make_unique<DebayerCpu>(std::move(stats), configuration);\n+#if HAVE_DEBAYER_EGL\n+\tstd::optional<std::string> softISPMode = configuration.envOption(\"LIBCAMERA_SOFTISP_MODE\", { \"software_isp\", \"mode\" });\n+\n+\tif (softISPMode && softISPMode == \"gpu\") {\n+\t\tdebayer_ = std::make_unique<DebayerEGL>(std::move(stats), configuration);\n+\t\tif (!debayer_) {\n+\t\t\tLOG(SoftwareIsp, Error) << \"Failed to instantiate GPUISP\";\n+\t\t\treturn;\n+\t\t}\n+\t}\n+#endif\n+\tif (!debayer_)\n+\t\tdebayer_ = std::make_unique<DebayerCpu>(std::move(stats), configuration);\n+\n+\tif (!debayer_) {\n+\t\tLOG(SoftwareIsp, Error) << \"Failed to create Debayer object\";\n+\t\treturn;\n+\t}\n+\n \tdebayer_->inputBufferReady.connect(this, &SoftwareIsp::inputReady);\n \tdebayer_->outputBufferReady.connect(this, &SoftwareIsp::outputReady);\n \n", "prefixes": [ "v9", "17/26" ] }