From patchwork Wed Jun 11 01:32:28 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: 23524 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 86C06C332C for ; Wed, 11 Jun 2025 01:33:55 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1652868DDC; Wed, 11 Jun 2025 03:33:55 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="Tq1KFvPA"; dkim-atps=neutral Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6233268DD4 for ; Wed, 11 Jun 2025 03:33:51 +0200 (CEST) Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-451e2f0d9c2so3219735e9.1 for ; Tue, 10 Jun 2025 18:33:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749605631; x=1750210431; 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=TvNGubUkRMki02NFiKmKim9ORLxISkAfK1S9L+RNjSI=; b=Tq1KFvPAdoNW1TtuZ6A/MsSg3X5jvjyZ6X+ELd4fM8ZFVNumk7obCrca240Yv4vtj7 2VYP4+Z3fgDsddiUPyvX/gAoWJx6KYKjM8Kd9fVy3mzU9RI+thnBgYw8FfcuZ03mFkh7 v51wIqDqmrOG6YR1hx3SN6Fx8SYUnbpIEM5+FQ8cqIIrbo0WsPkTU/CkQPRio5UkvBgK JOirywgWu9qqtBru7ptf42y02iGWbDLW/7EO6EI7izVxjYdUWTTCObxlGFsb0HQxmOdZ kNTvNKNBvHquomZfzKZvR3V9+SAC/zIyQzc5hkAPhuoC58iuM7Et0AvRF5A6+72eDvIW Zwxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749605631; x=1750210431; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TvNGubUkRMki02NFiKmKim9ORLxISkAfK1S9L+RNjSI=; b=tlOXhdVB+zqkHzAHFefX42osJo9Ww0ONv+T4WZPHd73EYbplaO0gqEJ0gzxTVWMKyx wAaLJU9FwvsVq85kjP0IQR6twV+uMG3o2EyBAEbdzWxg3/FvzWOHfej4RPXHjBsh7PxR gv2sqR22ZucSrnaDBrdH2qBd2uUqmsv9Nf4CyFR1V5YJ7X2lJJ0nrjaIkge9ds38BpM3 iOhtkBG+QFssThFvnkpdUdoyiGsZeBMUaBzW+44+v77OPZQHhpyxe+IMxfHlkw2NJCbN kL9gjSpFlHaRDwn1DmGD/Jze6nHwaF0xfhi7zD5F6YHjDZ1WNKQqhjaJpVo0XEEMerK9 9jLQ== X-Gm-Message-State: AOJu0YzTpU4GHcXkgDguPiJe4qY3/HSOvCX0fWlrAzlL1R2U5e1dIlEr w5PDqYKWiNhyxa6dXSvq/VET1JVm7+Tk/KK6UanC5y2wRx179iPvzB34mdj4TPbtZA0ZqMBEA9Z vbp/UoMI= X-Gm-Gg: ASbGncs8tmuwyHtT3jhbUJs2cwXKXTfs3cI+gDCayDahqVM9EoXzA+b3C1bZwIF+E6e F2YmwImYVdaOfkBWAbclzNBMG/vnxuEHrhoFsB74PbIo50yXFgT/oBmp82kfGErpAMbmHFX36s+ DlhLmHKj4l1rbJLclHP5UZl7COpkZWQ7LwXcQELMHRi6b2NMcKHPD59eZTzNZsI4OJzNTjSOchi ncBmIWpeJ/QT8IrEOB+iBVZy2BiuPcjwlJU0lNLcOm+6+B6SPRqFKIYw4FKDF5ihC5y6JTbqr// 7blymPdoA4O4JlXG+fReDTu8JR58wSnSCZq8FKefWl/O/KNI5errNvKHovUi47u87AIZGNjfTUh yI6p8BWWw3uJzdgPgkRBD8kyLAJaCSGwuU+YQR5TV4/ppPkDrugX4 X-Google-Smtp-Source: AGHT+IGZoH9kNWwMCaOexy/Rmh4o/e2LXN3kRGanD7TQlX8pA+/kh8eYPmVfAS1BaxOZPBBorGQ3AQ== X-Received: by 2002:a05:600c:3496:b0:43b:c6a7:ac60 with SMTP id 5b1f17b1804b1-453242f49c0mr11339335e9.10.1749605630680; Tue, 10 Jun 2025 18:33:50 -0700 (PDT) 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-4532514138asm5680625e9.3.2025.06.10.18.33.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jun 2025 18:33:50 -0700 (PDT) From: Bryan O'Donoghue To: libcamera-devel@lists.libcamera.org Cc: Bryan O'Donoghue Subject: [PATCH 18/35] meson: Automatically generate glsl_shaders.h from specified shader programs Date: Wed, 11 Jun 2025 02:32:28 +0100 Message-ID: <20250611013245.133785-19-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250611013245.133785-1-bryan.odonoghue@linaro.org> References: <20250611013245.133785-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. 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 33f318b2..c0b593bf 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', @@ -57,5 +58,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 00000000..386b342d --- /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 95d657ac..3deed8ad 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')