Patch Detail
Show a patch.
GET /api/patches/24679/?format=api
{ "id": 24679, "url": "https://patchwork.libcamera.org/api/patches/24679/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24679/", "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": "<20251015012251.17508-35-bryan.odonoghue@linaro.org>", "date": "2025-10-15T01:22:46", "name": "[v3,34/39] libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "beb2a641d0516716874a6676cf7a8821d872de37", "submitter": { "id": 175, "url": "https://patchwork.libcamera.org/api/people/175/?format=api", "name": "Bryan O'Donoghue", "email": "bryan.odonoghue@linaro.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24679/mbox/", "series": [ { "id": 5503, "url": "https://patchwork.libcamera.org/api/series/5503/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5503", "date": "2025-10-15T01:22:12", "name": "Add GLES 2.0 GPUISP to libcamera", "version": 3, "mbox": "https://patchwork.libcamera.org/series/5503/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24679/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24679/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 B8DACC3337\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 01:23:45 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 56DB260673;\n\tWed, 15 Oct 2025 03:23:45 +0200 (CEST)", "from mail-ej1-x634.google.com (mail-ej1-x634.google.com\n\t[IPv6:2a00:1450:4864:20::634])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4EA476065F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Oct 2025 03:23:30 +0200 (CEST)", "by mail-ej1-x634.google.com with SMTP id\n\ta640c23a62f3a-b4c89df6145so1000294766b.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 14 Oct 2025 18:23:30 -0700 (PDT)", "from inspiron14p-linux.nxsw.local (188-141-3-146.dynamic.upc.ie.\n\t[188.141.3.146]) by smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-b5ccd7b202dsm98348466b.82.2025.10.14.18.23.28\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 14 Oct 2025 18:23:29 -0700 (PDT)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"Z+bb/sCS\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1760491409; x=1761096209;\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=2hWNmonLsbnIURkJ1OnH3mTtHEsLYl31d2EH9MrI6dA=;\n\tb=Z+bb/sCSIMz+ACH0RBF4Ce48FS5Lm2dLMbnIZMkRyIu79ZwJMnmy8yryD9tKH/O5Y0\n\tedBJtM/64aIentj+enXBoAmF7Js0EpF74anGtqeEyLGugVarulIFd/g0nE6ACgWJp33/\n\t4DOT9imuczuLN1jcmt5lyTLl+SfjgEcOR42kMonrIwb9JAeqA1c28zm9/ZpjLjCRZ+zQ\n\thBmBOiukWdbThlpf1Kiv2Ez2TddIEglwxkzwS3v/LqHwlWSI8JoEI670jf4JhMwModob\n\t34iYDKxd/MUFK83f/tsxm+7ZtRhr4vThdSctiz+4xeSuQ7FY5VsMf8xOKjuvcZ/f39UB\n\t+1jA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1760491409; x=1761096209;\n\th=content-transfer-encoding:mime-version:references:in-reply-to\n\t:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=2hWNmonLsbnIURkJ1OnH3mTtHEsLYl31d2EH9MrI6dA=;\n\tb=IQrMIsxkeurF7Ore1c3wsdxoAXHr+O1UOfvQuxmjqZsgZA6cG3zytYifRvFGM4TlG0\n\tM5NosrBAoOHYZXLLfJcpnx/whcZ7ntmKUzExq1fcs/vlXWOytjdDADJ2xt66XfJSF6rk\n\taF7kNx0H8IithH3mvC8xmd1tfg9ZRItCE1DzpaBmLMrk0QfLNTaMC6iw00g/R3wy9WeZ\n\tpySgL3SwwG5hY+JZrx3mwGhYIqF/RRdu03ErIaEDBa9Gx0QXYP67AF+N1uLYmXU+c2oM\n\ty7n2awTG89W5ZnqJ0Q+dWiqxI6Bca9ktA9qbSizf//B4tUj42dW8dvHnJU8a6iz8woUe\n\tXRHw==", "X-Gm-Message-State": "AOJu0YzPTocrgkXOV5GxAc4IStN4k68TiVliPqTgpvg7J2FZ0iHSV6w9\n\tjIHoCY84GqgzazPulHm46+h/GP8qjyIhFCMVSJaIvTVnjMv4m2zQmaFP9cOXyG44t2PIVLVt/Sm\n\tF0Sa8", "X-Gm-Gg": "ASbGnctNPimlK8kBMlvG3fbY8NOeDnWXAt/MCATv2m40b5RLxwPArTiSEUolhsAP213\n\tRP/pTX2+pm+OeFS8JcpZO16q/2+eL1SXa+Z1HkFDC3D8HOHSEAafWGxaOWAJcfs4Ttk5JtWOIba\n\teu9+vK+MVnL0O4Sys2mXgh7QC4tyIJCsKTvMl/1DCrGuNB6K37HhdP5w9DbdOPceunt6EepzxSo\n\t47Yj477Iew16imiLlcof1aga8GX6vg5Fl13lpp1RQSPsSh3bWus3e9fUkxyRtHbKd3X078Y5c2c\n\tP4cyQyQjo82AYR7FAOi/nvF+MaiKqzQaR1ek/BocTmXl2EZa3qlrcCrF4PtKw4LOPlwm1r08nTb\n\t656LPgwXc3vzS0Wm1LkVV2K5Epi7C8UklR4HG2gn1Dc7tJOid5Z4G21PzHqo/QeqfoWRUcvlEMz\n\tY94UEmsH+FWh5uXaaGocAHbFW8YFrzjQ==", "X-Google-Smtp-Source": "AGHT+IHM+Q4nN2PMqJLg61wbdtIRkJDVYEEsQszxnCuCtmHf0j70BnSCovsHkpblOm4AONa6TcSTkg==", "X-Received": "by 2002:a17:907:3daa:b0:b3f:b7ca:26c5 with SMTP id\n\ta640c23a62f3a-b50acc201a5mr2942307166b.59.1760491409532; \n\tTue, 14 Oct 2025 18:23:29 -0700 (PDT)", "From": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "hdegoede@redhat.com, mzamazal@redhat.com, bryan.odonoghue@linaro.org,\n\tbod.linux@nxsw.ie", "Subject": "[PATCH v3 34/39] libcamera: software_isp: debayer_egl: Make\n\tDebayerEGL an environment option", "Date": "Wed, 15 Oct 2025 02:22:46 +0100", "Message-ID": "<20251015012251.17508-35-bryan.odonoghue@linaro.org>", "X-Mailer": "git-send-email 2.51.0", "In-Reply-To": "<20251015012251.17508-1-bryan.odonoghue@linaro.org>", "References": "<20251015012251.17508-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\nSigned-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n---\n src/libcamera/software_isp/software_isp.cpp | 19 ++++++++++++++++++-\n 1 file changed, 18 insertions(+), 1 deletion(-)", "diff": "diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp\nindex 1f984a52..869f7320 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@@ -116,7 +120,20 @@ 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+\tconst char *softISPMode = utils::secure_getenv(\"LIBCAMERA_SOFTISP_MODE\");\n+\n+\tif (softISPMode && !strcmp(softISPMode, \"gpu\"))\n+\t\tdebayer_ = std::make_unique<DebayerEGL>(std::move(stats), configuration);\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": [ "v3", "34/39" ] }