From patchwork Sun Aug 24 00:48:31 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: 24202 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 ECC51C32BB for ; Sun, 24 Aug 2025 00:49:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1D6FB6930C; Sun, 24 Aug 2025 02:49:19 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="jkSXwsym"; dkim-atps=neutral Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D72086930D for ; Sun, 24 Aug 2025 02:48:53 +0200 (CEST) Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3c79f0a606fso432881f8f.0 for ; Sat, 23 Aug 2025 17:48:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1755996533; x=1756601333; 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=WVq5cziKKrzTB/f1IlQrFIPwt3j05ogaLlswzu8kTYA=; b=jkSXwsymgmRj1GIh8OwMtOp3bBWZnGaYK7HdPtpjWexY5st/78WMZpzB706m9afWe7 gRll8zTAF7WXJXrNX7vPQM2Utsz85seliEUAlkOkNGfzOiXqonsYvSBw2bdKJImJsC4m o7HPiiCK/AP5sBz2+Zdfu2pn3GbFAKfxbjSqeSOImcqzoKKoZ5t7RUYvZUqXjuDsQJvf mx5zu9zXXjzBD8+4/6h+Wd/tqVmXT8zyvf0DvzMrrITJ74Sz8IF+MRC+dxhm0Vko7RMz kN8ycmCGj6WFPijBwKtN9pXh+nAqbjAidSQ7OyOdrp+RWWijp4rjC9IazOq0lvu/kzyL RVUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755996533; x=1756601333; 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=WVq5cziKKrzTB/f1IlQrFIPwt3j05ogaLlswzu8kTYA=; b=CiDnXa+jrdp1RoiHAlCsLdPomTNmdbZpvCPM8ZAHfQ/yjhzDiQzIUOwYX6/nHZ80GV gMzRIqDKFpMbRRgFTT8iCP2eQS7T2L74HvuS4QG04r2q/wN2fkNwv4kh7ZdillADCYJQ y5WRXePQMDLI3RmSle6GMR+OeoSdsYyU7t3V8jsrV6T4oQK+XWujqCyNbgPZQz1WBsGw M1H98W5EDmFGX9BGH8G6xZ+iGW6NFScYXuUdf3Nfljdtjja2/CfAQBLoevjSJq6MDb7z dMXaKcDu9zfxkyJa6Jq322r+iE9/C32aD2aM8Kuk0OXpJR21sp9uQlhbj55yVITn0tMl djuQ== X-Gm-Message-State: AOJu0Yy8Qez53AVmojdK/GqWj2e1TJcXhb8ZxNaSLaA6h7pvOGcj1sx4 uguyzaLq758nL/ZOwOVWdTLaGTcRJw97jgNW8qnqreqR83iZQ5BztJkKl39WDDA+P+c= X-Gm-Gg: ASbGncvidUjGCIJuB9fHluZfP9MTWroC9aH2tVh0tD3BlTRgXFAyvYGEFuTDQUX/9ky z8k0wBa/Sj/LPCqW1O4VV2PLeYGk1oTd7n6Pb57NyAvkpwppR29wia8uWpzWjaaYDFP16gVph+y F+inoFc6LZsFdpev6pEmyN87BriNTKxn1tp5pLHXIT6SfdUWTiqAMadwf8uosJtW2sGHfzDtz51 FlgWBHDWXgMR9CPEbR+8ZEUfiaGUdZVN0/xo/sG68ZflZIc/CDXAgWH8nmwnFAcshiNlfWzkz8j TQvFI28UGidwZ7KY3z3BA1Kts1b7HkRFZePNSx90fwwnV6Zfp+3P8A9JhjDn1ycEnqqTVqOxL1W ceG+k2v6kvONBUu2DdOgdMM70Ln+dV2uIDMnpmqmglgn0dJJw3EuWShM5YSlUY+jxkk370etTLf Aj5uDrACvS097c2ZTC+uCylsYnszsHPiM= X-Google-Smtp-Source: AGHT+IFdcmiRfTJtzXWM+sRlUY+F/J/OXy4wf86k3s8P4CB529VjZo/+eJ4LAFEFoe7BMrdGuwSC7g== X-Received: by 2002:a05:6000:2510:b0:3c8:c469:64d7 with SMTP id ffacd0b85a97d-3c8c478ad55mr95402f8f.45.1755996533438; Sat, 23 Aug 2025 17:48:53 -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.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 23 Aug 2025 17:48:52 -0700 (PDT) From: Bryan O'Donoghue Date: Sun, 24 Aug 2025 01:48:31 +0100 Subject: [PATCH v2 19/37] meson: Automatically generate glsl_shaders.h from specified shader programs MIME-Version: 1.0 Message-Id: <20250824-b4-v0-5-2-gpuisp-v2-a-v2-19-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=2511; i=bryan.odonoghue@linaro.org; h=from:subject:message-id; bh=Fx1AlOY28NC0VR0sz9yn6g9uTYfxDKucQo96QZW6id4=; b=owEBbQKS/ZANAwAKASJxO7Ohjcg6AcsmYgBoqmFfMcwSWukyNqyw0S274eEoqL9XgoX31JQx1 jqJnT9W5yuJAjMEAAEKAB0WIQTmk/sqq6Nt4Rerb7QicTuzoY3IOgUCaKphXwAKCRAicTuzoY3I OhjiD/9TObNQk69qfj/Oqzobs32yX2swpWdlKXaoAGIZO5Ald9CU5oYYPbO6ZGtWSTsJRsc0m98 uUczS/HYnh1DAyp/EVAkeKQ4+XOOhLl1h1Z0JdyU4WvvORItPOUhEWQWcRPUdiw7XaaP6y9QJ0y /F1RMckXWlnArgYXndeMlm6ZE9pyca3q1pcLPSXIzezf0RPki6EV3h7UPk74u0uzZScNh85ffdt gLulVh4cu7n/imucSnNuCEXXd2FotEVeF9MMTHwiRlc01MR1l+AGkpxabKrkuU+MoSwP5250rrc KXycubBpeF5IuZ8+1sNi7ux1RlkYzUSzixDUuEfJXCeK7Kq2m87EznP23s0YzF00ZoVFUEguUku 1WI7r5qx691kCugjy5IYu93G8mykAHZ4d2BVUFtZ7IoAFDJtLdekyw1aCVTVG0GOtMDXF5idBOH gVPOL8SNoIGb7V8Ag+KymHuI7k70GJncnPS6wzgTm7o6lmV4gHG9mN4E433S9lqDB8ESUIHdFUF LcclfE0yUTQZm9jFFQfmnptpfbXe2/F0LCmvpOOBoGov9SgeaB70nww6ggA7roCk8ywduYbbg43 /HUS5eJpwE6BoqTn7u98bc2yxADLlFTHdKqMTOjZaxG7JaqCTlTOJ3xSBxsP/oGr7lzJwenKILN ayaybSc5uugkSiQ== 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" Encode the bayer shader files into a header as part of the build process. Qcam already compiles the shader files down into a QT resource file which it references internally. In order to share the debayering shader programs outside of qcam create a generic header which both qcam and libcamera can operate from. Signed-off-by: Bryan O'Donoghue --- include/libcamera/internal/meson.build | 10 ++++++++++ include/libcamera/internal/shaders/meson.build | 10 ++++++++++ utils/meson.build | 2 ++ 3 files changed, 22 insertions(+) diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build index 5c80a28c4cbe6af5f0eef713eee995d61fa48a4b..90155857e44fc64803df5b5a054ad62e48b8e2f5 100644 --- a/include/libcamera/internal/meson.build +++ b/include/libcamera/internal/meson.build @@ -1,6 +1,7 @@ # SPDX-License-Identifier: CC0-1.0 subdir('tracepoints') +subdir('shaders') libcamera_internal_headers = files([ 'bayer_format.h', @@ -58,5 +59,14 @@ tracepoints_h = custom_target( libcamera_internal_headers += tracepoints_h +libcamera_shader_headers = custom_target( + 'gen-shader-headers', + input : [shader_files], + output : 'glsl_shaders.h', + command : [gen_shader_headers, meson.project_source_root(), meson.project_build_root(), '@OUTPUT@', '@INPUT@'], +) + +libcamera_internal_headers += libcamera_shader_headers + subdir('converter') subdir('software_isp') diff --git a/include/libcamera/internal/shaders/meson.build b/include/libcamera/internal/shaders/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..386b342d03b106e8303121ae9b84b2d2ee4e96d8 --- /dev/null +++ b/include/libcamera/internal/shaders/meson.build @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: CC0-1.0 + +# List of shader files to convert to header hex +# for the purposes of inclusion in OpenGL debayering +shader_files = files([ + 'bayer_1x_packed.frag', + 'bayer_8.frag', + 'bayer_8.vert', + 'identity.vert', +]) diff --git a/utils/meson.build b/utils/meson.build index 95d657ac965fefc06ea2c0c445bd46b125e56564..3deed8ad4d7e6d18cd99d5d4302b19458e6b9f4b 100644 --- a/utils/meson.build +++ b/utils/meson.build @@ -3,5 +3,7 @@ subdir('codegen') subdir('ipu3') +gen_shader_headers = files('gen-shader-headers.sh') + ## Module signing gen_ipa_priv_key = files('gen-ipa-priv-key.sh')