{"id":25324,"url":"https://patchwork.libcamera.org/api/patches/25324/?format=json","web_url":"https://patchwork.libcamera.org/patch/25324/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20251202134544.662446-16-bryan.odonoghue@linaro.org>","date":"2025-12-02T13:45:35","name":"[v6,15/24] libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"aea7f1ea4e16a1b7f2117eb68a565f74fd065fe1","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/?format=json","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/25324/mbox/","series":[{"id":5631,"url":"https://patchwork.libcamera.org/api/series/5631/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5631","date":"2025-12-02T13:45:20","name":"Add GLES 2.0 GPUISP to libcamera","version":6,"mbox":"https://patchwork.libcamera.org/series/5631/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/25324/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/25324/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 9CFC6C326B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  2 Dec 2025 13:46:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1FD0960F2E;\n\tTue,  2 Dec 2025 14:46:21 +0100 (CET)","from mail-wm1-x331.google.com (mail-wm1-x331.google.com\n\t[IPv6:2a00:1450:4864:20::331])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 312B160D1F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Dec 2025 14:46:15 +0100 (CET)","by mail-wm1-x331.google.com with SMTP id\n\t5b1f17b1804b1-47798ded6fcso32431435e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 02 Dec 2025 05:46:15 -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-47926f0ec69sm19383375e9.1.2025.12.02.05.46.13\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 02 Dec 2025 05:46:13 -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=\"a0WUG/Cg\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764683174; x=1765287974;\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=YP6iClNl5iXvt4wCmpyJtVGzkYrv7XW1L69Mp5vdnxM=;\n\tb=a0WUG/Cg+E3CXGikBSqQl6KQZDzmUYIss08AcMLEGNLKNz30KcqP15rvjAbEEuB4ta\n\tjTVpVDoJhznhjUA4TcFhoGJ2xZOCAjLDUWg0DTJYtwyglwDhXVYZDPOw4+jXmDMqhrJ6\n\tCC5RFHTQDSoLe3LrwW9BrkJfShKQf5rVMDEuT0w4y84lC3oask4k66yn1kqThgA8U7uh\n\tOHp+C5Ds7P4X1HNdB+1+nnLb2669yONUKi1cI55YahZHdvk7N5ZAeDfpb1wO5gQLnPz5\n\t/82fMkA48lhAeEZB/6rvVTxIz5h1sR8xJ3Kxx8hThWVwsF0lMOnMx2XbMt22o2zXOfpC\n\tQI1g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764683174; x=1765287974;\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=YP6iClNl5iXvt4wCmpyJtVGzkYrv7XW1L69Mp5vdnxM=;\n\tb=EjEaR0/NVtp3huULdh9MOJPa98ZgWRyaywT1IAC2gjRVqeNPDbOB9w5bIBUYygbkOA\n\tCPBw6RxnSrA4YwiIuOzX0PbGnDh6bdtLjSYJkeMKJq7OaI+cgNBmFWCuzZ0P7T7dm2HW\n\t8lYOsdhwYBsvLNG3aiitd4CAQw6M7TTqIX4rI5XZZ4V4OBYE/GV/Cdni795pcW/Z0oDR\n\tG8GSD9+zl/lD32mHGYpChkgapzH4r6N9ihJAK/EAnimDe8XJVhrV5ZOpT6zZvAwkWaEY\n\t4uQxKyY4y8w0GCcG5P1kMgP6Sy4iA9xO+mZbKaEAvll84DqKTCb7R5+LGinRAZebCwXb\n\tJQCQ==","X-Gm-Message-State":"AOJu0YxUormCmVtcCLcllaCZZh/+bJSdegKOCBFJAHD5tn6le907pB2z\n\tlViQ820U6BEAxkawwmU1XhMIonNXfIvlA+5jMaD5g1FMKiNd2PzXbAjk55moIw9XWGVhftNd8gl\n\t/PUs7","X-Gm-Gg":"ASbGncsVA5cQlHhe3pUzZIWiFC0DtNU5neNR510ITlSM4N8PGpNLcsT+RdYzMv/HazP\n\tOV7NtpV3s2lxJsy0a5SgfP3hzOrArpEF+JGQGiipqXOqKz6DPAut6KOwToDge/dxboU6VobZ5pL\n\tkn/unPpovzpFoZrWWaihEFqWYntJjRC3dV51oqnka+XmetX9N/SI5xle009zzReVisBLs97a8AU\n\tuJ7RReF6KciBBDyWy5LF18AZDFpnjTUB7yX5pKmjTC6GeeVyORcAiqgfKQADzmtXTA6LkdeqqeO\n\tPsHCwkWPV58TuC7wQJpZhQIfafoiw6MsczzO3y0i7ZbB8KlN41Aot25/Q0A3e6aroW6EY+KNUN6\n\tt03pH/nXapm5uMVjQ9V+d0VCq9tT7cvndC2PXa8crIt93WSeSx2aoFHXNGC0nb2QQ8Qm+ZBO4TX\n\t+z16RUPcH2ssRaSwMNysbrNM6nr9OUU0uDMet0eIYj3hxqZc1g3JLzOi/ZuLgwa4X4kcDBvhyA5\n\tvYFsQ==","X-Google-Smtp-Source":"AGHT+IEa/Tok+E6Hdu62wimAnqj3ly8uWAsB1pbP+d/yyqOR9kAqzRtQ7Pqga3q5vQb8iJwKihp30Q==","X-Received":"by 2002:a05:600c:310f:b0:475:de14:db1e with SMTP id\n\t5b1f17b1804b1-477c1125568mr465508925e9.24.1764683174390; \n\tTue, 02 Dec 2025 05:46:14 -0800 (PST)","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","To":"libcamera-devel@lists.libcamera.org","Cc":"pavel@ucw.cz,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>","Subject":"[PATCH v6 15/24] libcamera: software_isp: debayer_egl: Make\n\tDebayerEGL an environment option","Date":"Tue,  2 Dec 2025 13:45:35 +0000","Message-ID":"<20251202134544.662446-16-bryan.odonoghue@linaro.org>","X-Mailer":"git-send-email 2.52.0","In-Reply-To":"<20251202134544.662446-1-bryan.odonoghue@linaro.org>","References":"<20251202134544.662446-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 | 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 638d9a6e6..125a5dd81 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+\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+\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":["v6","15/24"]}