[{"id":37188,"web_url":"https://patchwork.libcamera.org/comment/37188/","msgid":"<85fr9r3ad1.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-12-03T14:31:38","subject":"Re: [PATCH v3 00/22] GPUISP precursor series","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi,\n\nworks for me and looks good to me with the exception of\nhttps://lists.libcamera.org/pipermail/libcamera-devel/2025-December/055423.html\n(\"15/22 Start the ISP thread in configure\").\nPlease clarify that before merging.\n\nBryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> v3:\n> - Adds Kieran's RBs as given\n> - Changes python script - Barnabas\n> - Makes isStandardBayerOrder static earlier in series - Barnabas\n> - Moves from DebayerCpu to Debayer object type in\n>   one go for configure(), process() and stop() - Barnabas\n> - Rebases on v0.6.0\n>\n> v2:\n> - Moves shaders to src/libcamera/shaders - Laurent\n> - Various Doxygen fixes - Kieran/Bryan/Milan\n> - Takes Hans' change to process 1/4 frames in processFrame()\n> - Implements suggested change in blackLevel calc - Milan\n> - Only three patches in this series have no RB\n>   I think it would be safe to merge this series - bod\n>\n> v1:\n> This series takes all of the already reviewed-by on-list stuff and\n> parcels it into a more digestable series.\n>\n> Right at the end are some patches which were about making data available in\n> the debayer params strcutre and had some reviewed-by and/or comments from\n> Kiearn and Milan that I didn't apply review-by to because I wasn't 100%\n> sure that was warranted from the list dicussion - CCM was clear enough, AWB\n> got dropped.\n>\n> Adding in blacklevel, gamma and contrast seem to fit-in with these patches\n> and including in this series reduces the overall size of GPUISP as a series\n> from 44 ! patches in total to 22. \n>\n> CI is passing both of this branch and for the aggregate branch so, I've\n> opted to start sending out the broken apart series, even though I'm\n> expecting an IPU6 fix from Hans it shouldn't affect this early code.\n>\n> Bryan O'Donoghue (17):\n>   libcamera: shaders: Move GL shader programs to\n>     src/libcamera/assets/shader\n>   utils: gen-shader-headers: Add a utility to generate headers from\n>     shaders\n>   meson: Automatically generate glsl_shaders.h from specified shader\n>     programs\n>   libcamera: software_isp: Move useful items from DebayerCpu to Debayer\n>     base class\n>   libcamera: software_isp: Move Bayer params init from DebayerCpu to\n>     Debayer\n>   libcamera: software_isp: Move param select code to Debayer base class\n>   libcamera: software_isp: Move DMA Sync code to Debayer base class\n>   libcamera: software_isp: Make output DMA sync contingent\n>   libcamera: software_isp: Move isStandardBayerOrder to base class\n>   libcamera: software_isp: Start the ISP thread in configure\n>   libcamera: software_isp: Move configure to worker thread\n>   libcamera: software_isp: debayer: Introduce a stop() callback to the\n>     debayer object\n>   libcamera: software_isp: debayer: Make the debayer_ object of type\n>     class Debayer not DebayerCpu\n>   libcamera: software_isp: lut: Make CCM available in debayer params\n>   libcamera: software_isp: blacklevel: Make black level available in\n>     debayer params\n>   libcamera: software_isp: lut: Make gamma from lut.cpp available in\n>     debayer params\n>   libcamera: software_isp: lut: Make contrast available in debayer\n>     params\n>\n> Hans de Goede (5):\n>   libcamera: swstats_cpu: Update statsProcessFn() / processLine0()\n>     documentation\n>   libcamera: swstats_cpu: Drop patternSize_ documentation\n>   libcamera: swstats_cpu: Move header to libcamera/internal/software_isp\n>   libcamera: software_isp: Move benchmark code to its own class\n>   libcamera: swstats_cpu: Add processFrame() method\n>\n>  .../internal/software_isp/benchmark.h         |  39 +++\n>  .../internal/software_isp/debayer_params.h    |  11 +\n>  .../internal/software_isp/meson.build         |   2 +\n>  .../internal/software_isp/software_isp.h      |   5 +-\n>  .../internal}/software_isp/swstats_cpu.h      |  15 +-\n>  src/apps/qcam/assets/shader/shaders.qrc       |  16 +-\n>  src/apps/qcam/meson.build                     |   3 +\n>  src/apps/qcam/viewfinder_gl.cpp               |  70 ++---\n>  src/ipa/simple/algorithms/blc.cpp             |   9 +\n>  src/ipa/simple/algorithms/blc.h               |   4 +\n>  src/ipa/simple/algorithms/lut.cpp             |   4 +\n>  src/libcamera/meson.build                     |  11 +\n>  .../shader => libcamera/shaders}/RGB.frag     |   0\n>  .../shaders}/YUV_2_planes.frag                |   0\n>  .../shaders}/YUV_3_planes.frag                |   0\n>  .../shaders}/YUV_packed.frag                  |   0\n>  .../shaders}/bayer_1x_packed.frag             |   0\n>  .../shader => libcamera/shaders}/bayer_8.frag |   0\n>  .../shader => libcamera/shaders}/bayer_8.vert |   0\n>  .../shaders}/identity.vert                    |   0\n>  src/libcamera/shaders/meson.build             |  10 +\n>  src/libcamera/software_isp/benchmark.cpp      |  92 +++++++\n>  src/libcamera/software_isp/debayer.cpp        | 242 ++++++++++++++++++\n>  src/libcamera/software_isp/debayer.h          |  43 +++-\n>  src/libcamera/software_isp/debayer_cpu.cpp    |  89 +------\n>  src/libcamera/software_isp/debayer_cpu.h      |  45 +---\n>  src/libcamera/software_isp/meson.build        |   1 +\n>  src/libcamera/software_isp/software_isp.cpp   |  24 +-\n>  src/libcamera/software_isp/swstats_cpu.cpp    |  93 ++++++-\n>  utils/gen-shader-header.py                    |  37 +++\n>  utils/gen-shader-headers.sh                   |  55 ++++\n>  utils/meson.build                             |   2 +\n>  32 files changed, 733 insertions(+), 189 deletions(-)\n>  create mode 100644 include/libcamera/internal/software_isp/benchmark.h\n>  rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (84%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/RGB.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_2_planes.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_3_planes.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/YUV_packed.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_1x_packed.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_8.frag (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/bayer_8.vert (100%)\n>  rename src/{apps/qcam/assets/shader => libcamera/shaders}/identity.vert (100%)\n>  create mode 100644 src/libcamera/shaders/meson.build\n>  create mode 100644 src/libcamera/software_isp/benchmark.cpp\n>  create mode 100755 utils/gen-shader-header.py\n>  create mode 100755 utils/gen-shader-headers.sh","headers":{"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\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 22B51BD80A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  3 Dec 2025 14:31:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C462660F5C;\n\tWed,  3 Dec 2025 15:31:44 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 154DE609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  3 Dec 2025 15:31:44 +0100 (CET)","from mail-wr1-f69.google.com (mail-wr1-f69.google.com\n\t[209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-379-HmGf-SazPjesViljv_wjdQ-1; Wed, 03 Dec 2025 09:31:41 -0500","by mail-wr1-f69.google.com with SMTP id\n\tffacd0b85a97d-42b5556d80bso4983369f8f.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 03 Dec 2025 06:31:41 -0800 (PST)","from mzamazal-thinkpadp1gen7.tpbc.csb\n\t(ip-77-48-47-2.net.vodafone.cz. [77.48.47.2])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-42e1ca1a4bbsm38354612f8f.21.2025.12.03.06.31.38\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 03 Dec 2025 06:31:39 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"Ej4CtnTn\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1764772303;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tin-reply-to:in-reply-to:references:references;\n\tbh=ObUjBzSvgT2+H+au5izwjxLXxBZ3RH3P8o9cUlL/KPk=;\n\tb=Ej4CtnTnwacvAvnv7hPVTPHpRJqu73Vql34rNkpuWTmY8eqP+lkEereG9sVDSL0EUB6Bod\n\tjyHt2H8l8LZjEIBeb7pVRlWn2Nf1/SUT+lUdF8pWBXC/X6205LHNKeVgr28K+4rTqzspmo\n\t29dQrb/TSwD42kt/XLvwZ/wip+/WnzQ=","X-MC-Unique":"HmGf-SazPjesViljv_wjdQ-1","X-Mimecast-MFC-AGG-ID":"HmGf-SazPjesViljv_wjdQ_1764772300","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764772300; x=1765377100;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject\n\t:date:message-id:reply-to;\n\tbh=ObUjBzSvgT2+H+au5izwjxLXxBZ3RH3P8o9cUlL/KPk=;\n\tb=WCWGXP7XurTA2gpgWeySQkpTINRraFeEy3CJWBvb3GHo02pLNTVaP1/KiWfKSdHpRw\n\tXIRgB3Vb/JYHB1uFfmuR6gaYZt+lR5BjRFEVvax0xX0slrqptfZ3Q03C6Y8gRN5IDid7\n\tJ51otFKZPD16NHyN8i2CGWVozSdfLpN2H70AJok04PtDe5ZFTmRmi0GASBZlhJQMaH1M\n\tqmYZ3MT3KZZwSswGO/N9oiQ9yYRYfUvj2485IvfVziqvkOCOFaeZKPRMyRQPGsNkQ57y\n\tsCF+DRtNpSwS415xx2JqRoI2cv3Cfj6nrEjG4oPVIlUpMtLHmCBxBS1prfLFR9XuDkZs\n\tvK8w==","X-Gm-Message-State":"AOJu0YxJ/SkxUbuswPg7zW98LOkhkS05yPB7ugGvj7h27zrENNosdtBG\n\tYXoXRpAAj8NSALaYFcBgKLIdwFg06aqMd61jGLED54v6W5m2MLqjpHS0bCmByRCb738R4fUilKl\n\tdQtjmMXiL7G0JeoH6n9tt+tATpSKKp/6kLNwqN9wnKs/WabmYR2AN+Yrnzi0AJCJY0JTqZyHBCC\n\tE=","X-Gm-Gg":"ASbGncvLj7QS0pv83BO4WjSm25PIj9JqnbmjmS8xAW0R9I+slO31sVHgf+57ysIObJV\n\t27MVfpgccQJo++liXKqdXMIsmwdRhfK/Qmkhourxn9BAKV8ZoqeYH/HUcHHRfZqbPex905iX0f4\n\ttqkzJJA1nfSURUZHp7dEJZ/5xLa6sPDALdOPutnbPXOkkhhiZH6dgjiO6+zqmVTcxXcohr7/Wvx\n\t+JI2DgrCYyYe96uJ6DzAwJj2zhTz/HlCZ3AgdRJBSLHNiwQVmqACBN2bxg8ODE0R+DwSVkK/j46\n\tmduxCbZCu6n6qZMcWn8KclZQGPt3hCBDawEzFVsl22y3ZbWZdnJ4sV9HjxqxigkvqFKzsxc9Nk0\n\tFvMGsPXSVR5TSIvVX7ZJrSF6KFg30XSaSDU1cchUQV+qGZpXe8Fn9rwoxADMYhIA=","X-Received":["by 2002:a05:6000:288d:b0:42b:3978:1587 with SMTP id\n\tffacd0b85a97d-42f731c7490mr2526736f8f.36.1764772300190; \n\tWed, 03 Dec 2025 06:31:40 -0800 (PST)","by 2002:a05:6000:288d:b0:42b:3978:1587 with SMTP id\n\tffacd0b85a97d-42f731c7490mr2526689f8f.36.1764772299614; \n\tWed, 03 Dec 2025 06:31:39 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IH8DIoRWJoeOWxj2HLupJNKBxMNLuyGs+QnV7c6+MOVxoRCcew2aJ2yX5VGx18Csy8b+Fbncg==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>, Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,  pavel@ucw.cz","Subject":"Re: [PATCH v3 00/22] GPUISP precursor series","In-Reply-To":"<20251202133157.661407-1-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Tue, 2 Dec 2025 13:31:31 +0000\")","References":"<20251202133157.661407-1-bryan.odonoghue@linaro.org>","Date":"Wed, 03 Dec 2025 15:31:38 +0100","Message-ID":"<85fr9r3ad1.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","User-Agent":"Gnus/5.13 (Gnus v5.13)","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"PBtfNC7FeI2b4ngbhHjRz925mlW0ygqUK1WcAcwbqlw_1764772300","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain","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>,\n\t<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>,\n\t<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>"}}]