| Message ID | 20251211232246.31330-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 22D30C3257 for <parsemail@patchwork.libcamera.org>; Thu, 11 Dec 2025 23:23:09 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 437F161628; Fri, 12 Dec 2025 00:23:08 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="JrntDiAh"; dkim-atps=neutral Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1BE9B61499 for <libcamera-devel@lists.libcamera.org>; Fri, 12 Dec 2025 00:23:06 +0100 (CET) Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-7acd9a03ba9so700298b3a.1 for <libcamera-devel@lists.libcamera.org>; Thu, 11 Dec 2025 15:23:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765495384; x=1766100184; 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=SKQuuIyHX5qD88Oclf8euBRN/bf6ULATuFVoYVGLr48=; b=JrntDiAhpzld+CoUf2qqRSDDnSS7hmttyUZJSA4/j/n2G7OQvuuWmRjj5GV1+q94cA +qygeZDNFO8mjqq9vw8C7mreHbyT7KAJX9xujBOkpgELDmLRKlTT29KY+/R6GTINDRDf jilQ8vnpfF4yocNQfqxj/COx9nuvFCRNobGOfyL+N0QneK4kNYybDaZXKOPU68k/CcFG W0cVUheKdoipaHKvjyuVteFVmj2440je84wWNR03aO7R+5e3McNJ0EZ7+SmlCFC/KMx8 pObtrOlXpPZZMK1PULa92GtW9+7kg7rU8ZddTJBpbb7Vd3Evxqr3aYEcwZmUZLLHnZHS SFzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765495384; x=1766100184; 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=SKQuuIyHX5qD88Oclf8euBRN/bf6ULATuFVoYVGLr48=; b=l5ulIAyFXunnHkvvLepGQuDzdXqP7vEa1GmMXTj5lgZycPzKukpWXSv847yMjEWIgE QUMzv4okUP4csdBlB0e9YwMtgC7UOgdmxt04N7+YZqc31v2knC+77zuXYmy4IcXeE8Xd BUkcR1titmcAg0E9AcePnEESzO27wiIbIWHPzuQN856YoR3d+7K5xmyN5KZLzn50KppB gFIq5MaxJFUbEOpK8B6wJhm5kYvPi5zdb7TeoSygruOhBRwukX17qFxAwwWEdtYuQd2u ZDkFf3e3g7mcpVlhCKsiLx3aobuV1rygjVx1j+SVJDIB+GLqbZHHwoFNzkGStOlT6Z2V aLag== X-Gm-Message-State: AOJu0Ywd0XFX6hcRPmOR+0Udbt6VHIVaxEh170VI98jOipZP+UJLaE2Z QuNtsS0lKib9FW/6D0LqZNX/RgJAigPKILP/rYWXCRdsqBa95KPNTNBBhPM13uI/hSYgrvkI0nR 017db X-Gm-Gg: AY/fxX70ZzyClM/KZOw8zQ/UH96Db9bV9N+znlwDIL8pi8gOipPhmAmZQvzd1jDxMiM 8zOxjuuQPPZMtdaRfT9E27ULs2duV/eQFIY880GjwBL6I5Z0i27F3zTFaMYRl/gYVOGCk/UNH3+ pVmwAr01jWNhvkhm5UlViXYjilpVCe0FIA9vlbe9ZPweiMBiecTLtqhwGj0lBKweZEPOnOjdxnq I/Z5AJvEAeKGgHrhErSOxagLYGehVZJ0IyEF7/EDWI8NBmZ9GbNcTHx9SIBV9fBQAjJ9ssjglvz Osv32t6/GyJSYo4JQyMQXi94Rp37gjNl8HNsrLpyn6mjonm/wrOft+So1SHSfX0q0gLTYalUB7/ /pIYIZcJ1bwYA5BKTMt13xpwtT4idGMs9108giRfIc5yt0c0FQSY2xkhzjGMQtLZMTRuXrU33E6 s1l4IRSQ58VxxOwENFsQin64KEaFQeM0cjE/ufMGGmrUEE7Wx0v4JAWum3Aqj4fw== X-Google-Smtp-Source: AGHT+IGcejNZrkYzpKh2m5syDDkZCSbliMZjUvcJg/ifeIhoZ8ZaGN/VMM2EM/bEvadFbcW/thuWOA== X-Received: by 2002:a05:6a00:6caa:b0:7e8:4398:b373 with SMTP id d2e1a72fcca58-7f66a075564mr182736b3a.70.1765495384082; Thu, 11 Dec 2025 15:23:04 -0800 (PST) Received: from inspiron14p-linux (M106185144161.v4.enabler.ne.jp. [106.185.144.161]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7f4c4ab52aasm3399933b3a.38.2025.12.11.15.23.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 15:23:03 -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 v5 00/20] GPUISP precursor series Date: Thu, 11 Dec 2025 23:22:25 +0000 Message-ID: <20251211232246.31330-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
|
v5: - Patch 15/20 Replaced start/stop \brief - Milan Left object type DebayerCPU as subsequent patch changes to type Debayer - Milan Commit log updated to reflect thread-blocking behaviour - Barnabas/Milan - Additional RB applied as indicated - Milan 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 | 258 ++++++++++++++++++ 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, 742 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