| Message ID | 20251210003139.43606-1-bryan.odonoghue@linaro.org |
|---|---|
| Headers | show
Return-Path: <libcamera-devel-bounces@lists.libcamera.org> 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 CCA70BD1F1 for <parsemail@patchwork.libcamera.org>; Wed, 10 Dec 2025 00:31:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 042A261422; Wed, 10 Dec 2025 01:31:59 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="p7GXkRmB"; dkim-atps=neutral Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3B1C160C8A for <libcamera-devel@lists.libcamera.org>; Wed, 10 Dec 2025 01:31:57 +0100 (CET) Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-343806688c5so5084500a91.0 for <libcamera-devel@lists.libcamera.org>; Tue, 09 Dec 2025 16:31:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765326715; x=1765931515; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ye3BKXPnsOY+539P8QTyrnebjAPJfzkyHmQeDz+jVkI=; b=p7GXkRmB9djUyTdmQm9lKinKrz7rTT7ATfE/OI75z0GDWokvUJoHLXqxNN4ta3SJfh VKtBcjhyhw9GTuwHlYEJw4iG5qiRLAwmYWYuVZKtpXwULvEKBrlTn5/4fowUvUWv5BwZ /ZJF+4CjkcY8Y/j1FTmK4zdEgayXo/kHxKbCdT0v6bgt29gSNAu1TYGIS/6Laqv6LKmz bZ2vX1u55z8k66Xgs32eCQqyIiTZrq/J4/SPUUY3fAiz5+MImbj5T7xhZ0vc2l2mg2Ea 9K/9/7c61/6NMrQnw5t3QZIxQ9N5Ycyad5QvfQmq2uO/syYIQuPSXwKWov7yftZWWlhx O6WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765326715; x=1765931515; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ye3BKXPnsOY+539P8QTyrnebjAPJfzkyHmQeDz+jVkI=; b=POh5IV8uuzyJKpWtOa7c2z+i7ymgFXdEqt+FuNK1+u8KPbE/eXfkcYD7a4RI+ZuLEp EQaiyHBfsl4Sf1aLT9/wz0a5Xf6gPVtkWUxIdrc+JteAuyAUhNapSiHPwzxH7bjVFNj9 uJiPv1j4Tg1KKDSFHwWFIIbLWWYL3RmoQcszgZwcVKT3gD7VDNF+zJZUsPVDVnDlGPJQ YJBAPfQUU2a9IDOMIBgu3CmJ1xiI+Nw0NtiO3WXqzYNb/fIUvJ5cXWOH2Rzs2HtcG3tg 3rY70KjaXHyZ4ydDwPYjrGwcg/ATXedAkTXVIOo/D81hQ336GsNLJSPhIjyRE3dWhmj1 bLag== X-Gm-Message-State: AOJu0YyM8ARTIMdi2MDZv78HQqSDxYcMb3gBSDeNne1IJ9ag859dA2R/ OLIQ/kS8NL5QYC9KxZ2qDESLOU5sCOw5NgEXD+kEnGCmt2NwgZiOQP7KMUzj4Ec9D1F7NXuPNrL RDclH X-Gm-Gg: AY/fxX6Kk73wBWWXdI0t4fxH44knryGadJtB0KgCGSkIcf/PWhttWDOiyo3VZqnmWmy zxLGRLbjsAxRoXarVgCM8JlCPAMPuhehxx+DlLDzhfLGBQ26SVrKtSry1qm+DGCQncG9/pjiwkl G8zPrl7LhzGHxqXlPBJwZq4yJ4WnbjNYF8ktuqP5tsy2yeq5FPwb2qMON8+FkDr/BSeawgEr0ym haP2yfKfnHc4EwSRXskp8/atcjYXTLrxnU7uZ7sToAF91uZoY1c2KflWvX67SftnPj+Evd1nuz7 l7Uav5H+eYX2Pb4OhB6W+lFPQkskW5u4AGP1RM9axuHo384EsibbTzVqiSEfsf1vZW1+tzV8K67 kueI24PVCvE58oGjLfsgfwgFRi6fv46XyiSShoXVCCgAraipIwloR3+tWOEl5J4HWmANTwT5t81 +AIoxTjr2NZ75UTWEvQy6/OZdTPb9eIrbkozvRVqgHI8J4LbB2LgcLQQ6Ll/OrpTp8 X-Google-Smtp-Source: AGHT+IGKl2P1Q/9kddf5ROtLzBa4Njx+f8uT8F1K1J4hnQDqkfTKh2hGDTnIKgqrl21shw92l1WPhQ== X-Received: by 2002:a17:90b:3a90:b0:341:2150:4856 with SMTP id 98e67ed59e1d1-34a72874796mr604732a91.17.1765326715074; Tue, 09 Dec 2025 16:31:55 -0800 (PST) Received: from inspiron14p-linux (p96936b06.osaknt01.ap.so-net.ne.jp. [150.147.107.6]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34a70427ea6sm566580a91.3.2025.12.09.16.31.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Dec 2025 16:31:54 -0800 (PST) From: Bryan O'Donoghue <bryan.odonoghue@linaro.org> To: libcamera-devel@lists.libcamera.org Cc: pavel@ucw.cz, Bryan O'Donoghue <bryan.odonoghue@linaro.org> Subject: [PATCH v4 00/20] GPUISP precursor series Date: Wed, 10 Dec 2025 00:31:17 +0000 Message-ID: <20251210003139.43606-1-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.52.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: <libcamera-devel.lists.libcamera.org> List-Unsubscribe: <https://lists.libcamera.org/options/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe> List-Archive: <https://lists.libcamera.org/pipermail/libcamera-devel/> List-Post: <mailto:libcamera-devel@lists.libcamera.org> List-Help: <mailto:libcamera-devel-request@lists.libcamera.org?subject=help> List-Subscribe: <https://lists.libcamera.org/listinfo/libcamera-devel>, <mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe> Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" <libcamera-devel-bounces@lists.libcamera.org> |
| Series |
|
| Related |
show
|
v4: - Adds a start() method to the bayer object. Previous versions already had a stop() method but, the new start() will allow us to do EGL init in start() not configure(). - Additional comments from Milan missed in previous reviews addressed. - Patch 15 changed enough that I dropped Kieran and Milan's previous RB please make sure you guys are still happy with this. v3: - Adds Kieran's RBs as given - Changes python script - Barnabas - Makes isStandardBayerOrder static earlier in series - Barnabas - Moves from DebayerCpu to Debayer object type in one go for configure(), process() and stop() - Barnabas - Rebases on v0.6.0 v2: - Moves shaders to src/libcamera/shaders - Laurent - Various Doxygen fixes - Kieran/Bryan/Milan - Takes Hans' change to process 1/4 frames in processFrame() - Implements suggested change in blackLevel calc - Milan - Only three patches in this series have no RB I think it would be safe to merge this series - bod v1: This series takes all of the already reviewed-by on-list stuff and parcels it into a more digestable series. Right at the end are some patches which were about making data available in the debayer params strcutre and had some reviewed-by and/or comments from Kiearn and Milan that I didn't apply review-by to because I wasn't 100% sure that was warranted from the list dicussion - CCM was clear enough, AWB got dropped. Adding in blacklevel, gamma and contrast seem to fit-in with these patches and including in this series reduces the overall size of GPUISP as a series from 44 ! patches in total to 22. CI is passing both of this branch and for the aggregate branch so, I've opted to start sending out the broken apart series, even though I'm expecting an IPU6 fix from Hans it shouldn't affect this early code. Bryan O'Donoghue (15): libcamera: shaders: Move GL shader programs to src/libcamera/assets/shader utils: gen-shader-headers: Add a utility to generate headers from shaders meson: Automatically generate glsl_shaders.h from specified shader programs libcamera: software_isp: Move useful items from DebayerCpu to Debayer base class libcamera: software_isp: Move Bayer params init from DebayerCpu to Debayer libcamera: software_isp: Move param select code to Debayer base class libcamera: software_isp: Move DMA Sync code to Debayer base class libcamera: software_isp: Make output DMA sync contingent libcamera: software_isp: Move isStandardBayerOrder to base class libcamera: software_isp: debayer: Introduce a start() / stop() methods to the debayer object libcamera: software_isp: debayer: Make the debayer_ object of type class Debayer not DebayerCpu libcamera: software_isp: lut: Make CCM available in debayer params libcamera: software_isp: blacklevel: Make black level available in debayer params libcamera: software_isp: lut: Make gamma from lut.cpp available in debayer params libcamera: software_isp: lut: Make contrast available in debayer params Hans de Goede (5): libcamera: swstats_cpu: Update statsProcessFn() / processLine0() documentation libcamera: swstats_cpu: Drop patternSize_ documentation libcamera: swstats_cpu: Move header to libcamera/internal/software_isp libcamera: software_isp: Move benchmark code to its own class libcamera: swstats_cpu: Add processFrame() method .../internal/software_isp/benchmark.h | 39 +++ .../internal/software_isp/debayer_params.h | 11 + .../internal/software_isp/meson.build | 2 + .../internal/software_isp/software_isp.h | 5 +- .../internal}/software_isp/swstats_cpu.h | 15 +- src/apps/qcam/assets/shader/shaders.qrc | 16 +- src/apps/qcam/meson.build | 3 + src/apps/qcam/viewfinder_gl.cpp | 70 ++--- src/ipa/simple/algorithms/blc.cpp | 9 + src/ipa/simple/algorithms/blc.h | 4 + src/ipa/simple/algorithms/lut.cpp | 4 + src/libcamera/meson.build | 11 + .../shader => libcamera/shaders}/RGB.frag | 0 .../shaders}/YUV_2_planes.frag | 0 .../shaders}/YUV_3_planes.frag | 0 .../shaders}/YUV_packed.frag | 0 .../shaders}/bayer_1x_packed.frag | 0 .../shader => libcamera/shaders}/bayer_8.frag | 0 .../shader => libcamera/shaders}/bayer_8.vert | 0 .../shaders}/identity.vert | 0 src/libcamera/shaders/meson.build | 10 + src/libcamera/software_isp/benchmark.cpp | 92 +++++++ src/libcamera/software_isp/debayer.cpp | 251 ++++++++++++++++++ src/libcamera/software_isp/debayer.h | 44 ++- src/libcamera/software_isp/debayer_cpu.cpp | 89 +------ src/libcamera/software_isp/debayer_cpu.h | 45 +--- src/libcamera/software_isp/meson.build | 1 + src/libcamera/software_isp/software_isp.cpp | 15 +- src/libcamera/software_isp/swstats_cpu.cpp | 93 ++++++- utils/gen-shader-header.py | 37 +++ utils/gen-shader-headers.sh | 55 ++++ utils/meson.build | 2 + 32 files changed, 735 insertions(+), 188 deletions(-) create mode 100644 include/libcamera/internal/software_isp/benchmark.h rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (84%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/RGB.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_2_planes.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_3_planes.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_packed.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_1x_packed.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_8.frag (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_8.vert (100%) rename src/{apps/qcam/assets/shader => libcamera/shaders}/identity.vert (100%) create mode 100644 src/libcamera/shaders/meson.build create mode 100644 src/libcamera/software_isp/benchmark.cpp create mode 100755 utils/gen-shader-header.py create mode 100755 utils/gen-shader-headers.sh