From patchwork Thu Nov 20 23:33:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryan O'Donoghue X-Patchwork-Id: 25136 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 7AFFFBD80A for ; Thu, 20 Nov 2025 23:34:18 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2FF9460AB4; Fri, 21 Nov 2025 00:34:18 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="Rwpz8LST"; dkim-atps=neutral Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5404160A9E for ; Fri, 21 Nov 2025 00:34:16 +0100 (CET) Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-42b3c965cc4so761815f8f.0 for ; Thu, 20 Nov 2025 15:34:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1763681655; x=1764286455; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G8zMAGQq6mymklwrKMC5SwdL3ECQAZ0ptGN/pXi2LRU=; b=Rwpz8LSTz2TF1W4uS462QWUInXtNEnJ8hJ8ZSWL7Fm+pgOrOeQabHgzyGroLF7+bWm dVmixV13mHBSLGDGbvpwEXdm3n8tdfdjYPW5SfabKYv1qsjC3TqpYcV/xMmxFaDU/9kj Mzyzc5cINlhSo9yOHg6+bb6Z+ayzQ4u4u/kGRKW+J6Dj0Psaa5cQcFs41qK+UBaqU8Un 7pvyLxPj2Yg1l+6UjxzJbhjPxYzc4oIKpKz1JMj0dhuTPjYzxJwSVEUY52TQxNeBcSaL sDxmjze0lugCYNTuW4pjqh7Rw/cD4XNYc98WRjrH2tX0Sa4fXQyWhmOull93tSC5jx0v ynMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763681655; x=1764286455; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=G8zMAGQq6mymklwrKMC5SwdL3ECQAZ0ptGN/pXi2LRU=; b=qCanOI3Bh+9ZWHPF+etZodnoSgTDmmq7KjEGArryAlBX8VHzU+xI/niUtmTmJQMzXA S53NoEu4Dw0uPj1xuIqBQ7CwYiKYoajdvELuSaFrMiMp5/9Y9iSehhdO2OYBq5egwL0r 2SkU3APG6rtxdxASa4AiAhH6UM/Rt1CnBvPatyciyyMQtmeX63prQNnm4J8k58nyrOX/ MMnEBjHq0HjouwOxyMzgm9ZP9wwPa4h/NiWBM+ZpOEHOYl9c6bGgB0XTi4m6ryD69+MG Hrg8a4nTZdelF1ZxAAVlCgyP1T2cTdRksEFoJTOaaS1aXknrtvoQ/+0rzDlXKLfUmakc 2A/g== X-Gm-Message-State: AOJu0YzaH9EXmajoAriVGI1VXbqbS9diFdz86/tOpuYNIkMNuOGBj/8Z uPN5HmIyse5udw8EdnFSThhUHxn801xWbC3pSNORMgShGOsjALWHrGTyBR6oQTSOqSPlItwsYoW mhGKTMZw= X-Gm-Gg: ASbGncvsLEgnSRphvjEcBzFCgiHOKU2H8aUDFrKCnWZ7tWEtI/IfMoiCr5pU4sQ4o4d 7qqy4kmEFDUxELMVjARmmAASt05HbAWCFyIw1H+LQU/+/ZDrhU2RRAb6mIbvzMOvCla58Gvv/HZ e2AX515Qg/fO6NmJt75LN0fd1d5J6Eygzf/eieJijyKjy4rQydf6ehchsxwTfwpeICtxk0ZdFvk Y8ZW0Djz5FzEnqM5zBZhmmg9J+4yU65I9ybwpnuq4yKEgzfOdaBdmm/tqnbuyA3SO+OxUarGIzB b7+w1pU2FKaCDcXWYYJJH0/swkXGnKIDGzDB90y30e8xBjaRwqSsPO3zWXXEvewsht/8CCGW5VT 07PeIT4HG6uZQf/aBGdEPCXAkUxpb+xLZLZVCI7zA4jhMGOBa7gaFRQBnrkvWXOpfzvtN3uI/Xl sqzXsXLD/gFQGMw/zabeubGOSCjlaDuN4zh5adDlJx7gmaTTKSQvbtqGLTDnNam4eIosI= X-Google-Smtp-Source: AGHT+IHxbEOjEy0v74DHsvBQdcNGg4lHoqrJjhMg0Ubs1s9LpmIlhWPlJ3T3/8V0az0HruGhTY1rnw== X-Received: by 2002:a5d:5f88:0:b0:42b:3383:bcf4 with SMTP id ffacd0b85a97d-42cba63b5bfmr5407313f8f.1.1763681655552; Thu, 20 Nov 2025 15:34:15 -0800 (PST) Received: from inspiron14p-linux.ht.home (188-141-3-146.dynamic.upc.ie. [188.141.3.146]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42cb7fa3a81sm7984139f8f.26.2025.11.20.15.34.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 15:34:14 -0800 (PST) From: Bryan O'Donoghue To: libcamera-devel@lists.libcamera.org Cc: pavel@ucw.cz, Bryan O'Donoghue Subject: [PATCH v4 12/23] libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option Date: Thu, 20 Nov 2025 23:33:36 +0000 Message-ID: <20251120233347.5046-13-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251120233347.5046-1-bryan.odonoghue@linaro.org> References: <20251120233347.5046-1-bryan.odonoghue@linaro.org> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" If GPUISP support is available make it so an environment variable can switch it on. Given we don't have full feature parity with CPUISP just yet on pixel format output, we should default to CPUISP mode giving the user the option to switch on GPUISP by setting LIBCAMERA_SOFTISP_MODE=gpu Signed-off-by: Bryan O'Donoghue --- src/libcamera/software_isp/software_isp.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp index aa4a40cb6..7d21f191c 100644 --- a/src/libcamera/software_isp/software_isp.cpp +++ b/src/libcamera/software_isp/software_isp.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -25,6 +26,9 @@ #include "libcamera/internal/software_isp/debayer_params.h" #include "debayer_cpu.h" +#if HAVE_DEBAYER_EGL +#include "debayer_egl.h" +#endif /** * \file software_isp.cpp @@ -117,7 +121,20 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor, } stats->statsReady.connect(this, &SoftwareIsp::statsReady); - debayer_ = std::make_unique(std::move(stats), configuration); +#if HAVE_DEBAYER_EGL + const char *softISPMode = utils::secure_getenv("LIBCAMERA_SOFTISP_MODE"); + + if (softISPMode && !strcmp(softISPMode, "gpu")) + debayer_ = std::make_unique(std::move(stats), configuration); +#endif + if (!debayer_) + debayer_ = std::make_unique(std::move(stats), configuration); + + if (!debayer_) { + LOG(SoftwareIsp, Error) << "Failed to create Debayer object"; + return; + } + debayer_->inputBufferReady.connect(this, &SoftwareIsp::inputReady); debayer_->outputBufferReady.connect(this, &SoftwareIsp::outputReady);