From patchwork Thu Nov 20 23:20:00 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: 25104 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 05A94C3330 for ; Thu, 20 Nov 2025 23:20:35 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id A4F6560A80; Fri, 21 Nov 2025 00:20:34 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="UcLbrEsq"; dkim-atps=neutral Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 0791660AA0 for ; Fri, 21 Nov 2025 00:20:31 +0100 (CET) Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-42b3b29153fso855282f8f.3 for ; Thu, 20 Nov 2025 15:20:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1763680830; x=1764285630; 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=AZjvy8VuhuGnPkiKZz0H2mspahrpuWL7zN2wdWyCmEw=; b=UcLbrEsqcTitFxSsVi/k/PyWh00i7oHYkbEyf1McAqh6zAnfFyuvHWkIi1goJhWuSZ 1hHeiYVvgcB9SbLzEBiveoWNoWt9YaDrSct3dr3saAYacFUrS/FUkUTxdzhsmGkbjsuB 8sg01M5ur9SfCAcNMsZ2QjPl+V7dheu4aVoWTqGzPLM36RrUkgHdVjeRUsZAb10byEGq V03A68nZfq+Jl6Yj7VcOZc2FLWFnALiDW9iAi1lgRxWUNF7BNKp76ewCEedY+ovkTCTR we0ZiFTLFXGBU3Hg5ZKltE3wrsIy6uWUC2VwbXwJb/3wBR8AOgLe4wcyMMMS0zNFHa1j 84GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763680830; x=1764285630; 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=AZjvy8VuhuGnPkiKZz0H2mspahrpuWL7zN2wdWyCmEw=; b=X7Gf5d7h1zdaKYl0WoEzx3BE6+lI5MTI4u1btGggwQyW7b/notyHYYto8deIbjC4Ph Tz42fYmuRkrtETQqz3cvk9qIspcGGyi71mPWjFamrL4M9JTsq76lMpjlE/VdC3fiXIjU 24BUofKIYfKjcWoXo8gu+B+52XLvZhRZE8Dx+F5m4ibYzlmvm0lPnfjfzPkJ3aMEBd9x TaydDJ9CZyVg5MMqDnp1HWXNV/8OHRNfamG64iEzvczGsitQas5EPuTLLeqG5IRoruLm 3zlMX3/VQnsl/vJeR4Py9FTFlVqsdh7PNMgyCcuhfQYpYo1pLeYABR/IfTZJe+80VhUp VgqA== X-Gm-Message-State: AOJu0YzoYXizqWHdD2bLeDESrNei2WFBEwJzHx8Af670z58yVj7KI09B jHdOHChYqX33Lk7M6oRiqVUoa3qoNzC/gbI8GQ9eK6SexkrOX/dLpq8wEZpcWMuPlCNdsZ7A0LY SONXW+9c= X-Gm-Gg: ASbGncvpLSzqFCnaIVrP6tH5401N2sr6ntPfTxmvTIH8N3stlStz06n9tYsv6WKPXLO fTckOAsWITWrDk5RvWCVIl4IYFfSIjFksEgeHL3Pzu+l+OFaj5wFIVvLtX3nTEw5vcoAIozPrKN Z83d1L6zM75317aaUUDgCjy0ekr0Bpib5du8oakHg9uejS4EgkiV4SJASdoJ/cm27sRbhe2IBa9 kYuymZwCZZh4bOH9WfyKaE4QkK8Ln5BaFCP9bSSBklqIdkFO84i8hQbOMTqjW+81yLycdydP2Iq 5GCRmexmvgt/yjOjZEySmH0dr9aYOvVCQx2Tlo7kE+CJpyOrbPrOEKFj2i0lKqW1f2LYJWxnLEn p+lG6i4VDTFaMu3VZ3vIq03rvnE5VK3qZfIQ8pu0DHVIN2G7SUAlKkh2TJE/oVYzNvCz9z6DuNJ SPDcfJR/j8t/eZ+TQM3eDllwYZ8C7yR0Ur0vcUaA+Ay4rpvcGjNbQVZS+2BQ0mxdl3w6Q= X-Google-Smtp-Source: AGHT+IFVaEdm+Z3bckYYenVRySGR41Y1lfOhCRDnHUpUwFFAdrlQuwIf2oP9IwyEUQyR5bDpUdLQfQ== X-Received: by 2002:a05:6000:601:b0:429:ca7f:8d5a with SMTP id ffacd0b85a97d-42cc1d2e2e3mr58464f8f.37.1763680830298; Thu, 20 Nov 2025 15:20:30 -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 5b1f17b1804b1-477bf3af0ecsm11618415e9.9.2025.11.20.15.20.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Nov 2025 15:20:29 -0800 (PST) From: Bryan O'Donoghue To: libcamera-devel@lists.libcamera.org Cc: pavel@ucw.cz, Bryan O'Donoghue , Kieran Bingham Subject: [PATCH 03/22] meson: Automatically generate glsl_shaders.h from specified shader programs Date: Thu, 20 Nov 2025 23:20:00 +0000 Message-ID: <20251120232019.3590-4-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251120232019.3590-1-bryan.odonoghue@linaro.org> References: <20251120232019.3590-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" 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. Acked-by: Kieran Bingham 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(+) create mode 100644 include/libcamera/internal/shaders/meson.build diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build index 45c299f6a..ecb7c9fa8 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', @@ -59,5 +60,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 000000000..386b342d0 --- /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 95d657ac9..3deed8ad4 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')