From patchwork Tue Oct 27 12:28:32 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Remy Alipoursafari X-Patchwork-Id: 28646 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 E8DADC324C for ; Tue, 27 Oct 2026 12:30:45 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 994A069057; Tue, 27 Oct 2026 13:30:45 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=remy.alipoursafari@collabora.com header.b="G2eKCyLg"; dkim-atps=neutral Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A5B2E69046 for ; Tue, 27 Oct 2026 13:30:43 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; t=1793104238; cv=none; d=zohomail.com; s=zohoarc; b=I1whqNhI5BNkxrndOA8Q1TBw82tWm0Ve65ZUQuTWXHKM3Ur4uS4+ep26ZfA7ZGRWynJ0jFDNPYqGFOaNd11trgq2pd/s+5+Fbz0DlAU5hUKY1h6tqrPM0fczu3w9ofgoFgok5fRgOEizcKEdRS0tNcEizkzkkGn3GqMxDqLdsXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1793104238; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=acK5Aj1U2hiphPrnkrr+0hBgAQZepZN34ksg8+I1+wk=; b=kpE6oTbPccKxE8jnCVGp56b1hdoB4IMUK/jhIsDFTqkkm1lnBrzsOP4todeYu0cYAQSHTOP0lwQT99I0cBnxMWCq9Cu8VEZYR6jIqRJXZqYh1HdE56i7pYVmWXIpAYTklGGJatHwbb8xx8Kg1h+5N1JixLlzASHI1Io5X3uJO3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=remy.alipoursafari@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1793104238; s=zohomail; d=collabora.com; i=remy.alipoursafari@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=acK5Aj1U2hiphPrnkrr+0hBgAQZepZN34ksg8+I1+wk=; b=G2eKCyLg7hWpDLl6ivrQF1Hffhnka+E/C5+GShJlZXfDWjuWLb0bdTF56LCnsTkE OsEhJ5PitSGYdWK5IbQ6apE2jj8MkcUU3IZVBw6kus8qe2BRkJpQwo0kqfdvp85U5c2 iUCzDzHqdZ4i31T5ucMSKDKN/B9tlV60/eSh1DV8= Received: by smtp.zohomail.com with SMTPS id 1793104235037343.41162072670033; Tue, 27 Oct 2026 05:30:35 -0700 (PDT) From: Remy Alipoursafari To: libcamera-devel@lists.libcamera.org Cc: jacopo.mondi@ideasonboard.com, laurent.pinchart@ideasonboard.com, Remy Alipoursafari Subject: [PATCH v2 2/3] libcamera: software_isp: debayer_egl: Check for errors when getting shader variable locations Date: Wed, 28 Oct 2026 01:28:32 +1300 Message-ID: <20261027122844.56616-3-remy.alipoursafari@collabora.com> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261027122844.56616-1-remy.alipoursafari@collabora.com> References: <20261027122844.56616-1-remy.alipoursafari@collabora.com> MIME-Version: 1.0 X-ZohoMailClient: External 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" According to the OpenGL spec, glGet{Attrib,Uniform}Location return -1 if the name passed does not correspond to an active attribute/uniform variable in the shader program. This acts as an early check in case there is something wrong with the shader program. Signed-off-by: Remy Alipoursafari --- src/libcamera/software_isp/debayer_egl.cpp | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp index 33933b11..5236e1f9 100644 --- a/src/libcamera/software_isp/debayer_egl.cpp +++ b/src/libcamera/software_isp/debayer_egl.cpp @@ -130,6 +130,25 @@ int DebayerEGL::getShaderVariableLocations(void) << " tex_bayer_first_red " << textureUniformBayerFirstRed_ << " proj_matrix " << textureUniformProjMatrix_ << " tex_lsc " << textureUniformLsc_; + + if ( + attributeVertex_ == -1 || + attributeTexture_ == -1 || + textureUniformBayerDataIn_ == -1 || + awbUniformDataIn_ == -1 || + ccmUniformDataIn_ == -1 || + blackLevelUniformDataIn_ == -1 || + gammaUniformDataIn_ == -1 || + contrastExpUniformDataIn_ == -1 || + textureUniformStep_ == -1 || + textureUniformSize_ == -1 || + textureUniformStrideFactor_ == -1 || + textureUniformBayerFirstRed_ == -1 || + textureUniformProjMatrix_ == -1 || + (lscEnabled_ && textureUniformLsc_ == -1)) { + return -1; + } + return 0; } @@ -274,7 +293,12 @@ int DebayerEGL::initBayerShaders(PixelFormat inputFormat, PixelFormat outputForm return -ENODEV; } - return getShaderVariableLocations(); + if (getShaderVariableLocations() != 0) { + LOG(Debayer, Error) << "Find shader variables fail"; + return -ENODEV; + } + + return 0; } int DebayerEGL::configure(const StreamConfiguration &inputCfg,