From patchwork Sun Aug 24 00:48:38 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: 24209 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 3379DBEFBE for ; Sun, 24 Aug 2025 00:49:33 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 8E4B969335; Sun, 24 Aug 2025 02:49:32 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="W9fTnZj5"; dkim-atps=neutral Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id CF1CF69318 for ; Sun, 24 Aug 2025 02:48:59 +0200 (CEST) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-3c6abcfd142so521730f8f.2 for ; Sat, 23 Aug 2025 17:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1755996539; x=1756601339; darn=lists.libcamera.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cGnuc3oH2Zv0CIpm6TpMDmVr85UAoXc4ZgYEook1x98=; b=W9fTnZj5o6sMfbmMayBlJvNehIiQ98SLkbSfZST8ZyqmUvaGtcCfQ6MT7Rf3hwmb+4 c7VxTZeVzjeo5r+aAG9nCdTDpw68wuNqcdRtDpaJpctGA7roNt8qvXVC1gihk0NBLkKM RBUBAQiaQ68TaJ9ZOYezsXfqjEqK9p7b218oI+7MfFgqQkcIpXljJCeY+OO77AzRIy+l A3/fY5LxczXkoR1qqeWm+DDTdiGwAGz3fmnYcXfDTvC77fkxPGmr2MPITDTteHKr9Ral khIncRNy3vNPdnoOnknWkbwxBdLDSs/fOB81kMeSOpRFx+AITDR7sr70pYqQdDPIZQG7 wZcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755996539; x=1756601339; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cGnuc3oH2Zv0CIpm6TpMDmVr85UAoXc4ZgYEook1x98=; b=W0nxce0VDbRFTrF5GKYGjAnyfmX/jDJ/yM5PoT106ruSXbeYK3g/QutfU7nAJb1V0D QzNXhsaTRyaVX8U1MzKr5ottcv6SuBhpzvQDxp5FeRcjlHf7biY7DQGlxTvHHf1tt0tg rEUGzaFUQmw0QsLR/z9gjzrpwDpViLT/shY4xAbdvwQWwB/BTmqV3XQKXC+bM8oJoCEE GgomrSqkAjZThx/EQALFcK7T8EbLdtFYEMwmc69KhBQPZADqIyDLqkkFqY+77QfVq60J 2tRqvUCBXosscEOWnUs56gmcW+1FbqkvkQNmN44hc5wphTmiFwbZEdEsFciHEXgVvspv BkFg== X-Gm-Message-State: AOJu0YxZfqTm6DfMeBF5alY+5XhI2dNgmvE317t0jgyCxiA2/ODeEKJL E2ui01SZIE3ZlOmq0I3iM6TpHOi9Zy6yEds4Y1C68plewSF5SiD2F8ZXuieg26xSkGE= X-Gm-Gg: ASbGncsSwL3c4NgDj7AKkfkl1Zfid+Is65SwSIhwNbSToWX5+DUFkGNZupeffdJ+EW/ nsWbyxBPXDhTx6Kft+fsbOVkRELxlSaQ/dtAELRWZWzKykAK4D1IdfU45LmG+4iQ8i4ghJUJ1o2 3dTWBvWmynaCv0bg6hmIMD885fHu1eca0eFizog2WCsarWpAQSBBW35hwUQ/UZAJRxtLqh0sI1J f6JE8hpKYCtX/2oZ72jg4W3QvwYiyzMPRdiiDfBMmzjHlCoW1aa2r/am4ijNb5MIJBJnBj3Pw3w yXI5TH3sWw9mdkpUrZr6E02HYjI1sDbGX0cOEkXUYVouZPA1i1sJJgFf51ccEePZeXhjxhbAeAh tNqFLDcBjB8YGRygUqy4k0UsW/iKIk20Nfm0hKB+RH1VEHKQCF6DAD8IqQrsjkowrMv/c84WxaN hxjZQijLY8Ei0dktKqoBcgg/9MJdxYyRA= X-Google-Smtp-Source: AGHT+IGZUlWIRSduMFuwzidZXW9fNNd17+UNu/ghKCIcwOsdWhTItZryN63/FtXEwMgzHFqYN96BmA== X-Received: by 2002:a05:6000:2902:b0:3c7:c94f:6630 with SMTP id ffacd0b85a97d-3c7c94f6996mr1470303f8f.19.1755996539412; Sat, 23 Aug 2025 17:48:59 -0700 (PDT) Received: from [192.168.0.13] (188-141-3-146.dynamic.upc.ie. [188.141.3.146]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b4e1d530esm69347225e9.0.2025.08.23.17.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Aug 2025 17:48:59 -0700 (PDT) From: Bryan O'Donoghue Date: Sun, 24 Aug 2025 01:48:38 +0100 Subject: [PATCH v2 26/37] libcamera: software_isp: debayer_egl: Make DebayerEGL an environment option MIME-Version: 1.0 Message-Id: <20250824-b4-v0-5-2-gpuisp-v2-a-v2-26-96f4576c814e@linaro.org> References: <20250824-b4-v0-5-2-gpuisp-v2-a-v2-0-96f4576c814e@linaro.org> In-Reply-To: <20250824-b4-v0-5-2-gpuisp-v2-a-v2-0-96f4576c814e@linaro.org> To: libcamera-devel@lists.libcamera.org Cc: Bryan O'Donoghue X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2003; i=bryan.odonoghue@linaro.org; h=from:subject:message-id; bh=S+AGi1xySbJ7v3eeQdyrHBWqFirnsX1ibi33DOs9eFI=; b=owEBbQKS/ZANAwAKASJxO7Ohjcg6AcsmYgBoqmFhwMkoZmCmvPqvOYIbA2A+SmtvhPpUxAglo O+t4mB2T0GJAjMEAAEKAB0WIQTmk/sqq6Nt4Rerb7QicTuzoY3IOgUCaKphYQAKCRAicTuzoY3I On2lD/4iUX7rTUtiS2krUP2S67wtkSIfRt+wHrzun4B5yhDszWcKXMPX1Exq+zf3WKn7gwazqmv ED28QlVL/vvqu6i7hlNymL58T03kwBlo86fEpZ0VREmN41RFWUWE5XT6xw6MiVqR9dkP2aOm0t1 IHg1ZosmfDG/0UJ8Bm5xlWb41DEdc59H4X93ZbruJxIbZhlqI9QEGrMHEqM3mAlOKvKHMAqedy4 JUNctll9IdJv4+m1JVxpVTA836wRc4P5qvBPwOzoi4EpZKjvEEz3BKFp6yD83a2FZ9O+k3UxUM2 YdHMIItnZKvfGpjuTusEtiMnmR37xirhAFvVqNlttFPZtAZFnbqeFpo0L2tkMzmeNd9+Mw/lWbS TjehgYowKXo1E0yuYUXNgnlvAw+NuHdDKIkZs6vCrE/XquUhEelnwD9nJfA42ma+QPKlChrokEK TvI+xBKwrhozOLYGu8wNIvYumYtyZi3VEDo9D2efaNcYo7tHmj8btUvduSQBt68EI85mULI30pY h2fYysTTU4ppzSd3rBJqJp0IiZyf5xitEfwVQ1zBaqj/LrEU92rkvH91yVsFGxF2DxUNqhEK30p iqOjbm6MhACIOgJfSXO3TYAegVVu+3zQzsX8/qi3R2HuSb6F/t+6cqQMVlVZe+edJYxTRCQ3Loz aj81O+om0BpGfVA== X-Developer-Key: i=bryan.odonoghue@linaro.org; a=openpgp; fpr=E693FB2AABA36DE117AB6FB422713BB3A18DC83A 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 e6bf76f214280194bc20aaaed4b5bc96598436fb..583f16ebb2b0f08ba1df055fbe08c44b5aac5a01 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 @@ -114,7 +118,20 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor, } stats->statsReady.connect(this, &SoftwareIsp::statsReady); - debayer_ = std::make_unique(std::move(stats)); +#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)); +#endif + if (!debayer_) + debayer_ = std::make_unique(std::move(stats)); + + if (!debayer_) { + LOG(SoftwareIsp, Error) << "Failed to create Debayer object"; + return; + } + debayer_->inputBufferReady.connect(this, &SoftwareIsp::inputReady); debayer_->outputBufferReady.connect(this, &SoftwareIsp::outputReady);