[{"id":36258,"web_url":"https://patchwork.libcamera.org/comment/36258/","msgid":"<176055693637.162040.15423325717330373636@ping.linuxembedded.co.uk>","date":"2025-10-15T19:35:36","subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Bryan O'Donoghue (2025-10-15 02:22:14)\n> Two simple script to generate a header that contains GLSL shaders translated\n> to C arrays.\n> \n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> ---\n>  utils/gen-shader-header.py  | 38 ++++++++++++++++++++++++++++++++\n>  utils/gen-shader-headers.sh | 44 +++++++++++++++++++++++++++++++++++++\n>  2 files changed, 82 insertions(+)\n>  create mode 100755 utils/gen-shader-header.py\n>  create mode 100755 utils/gen-shader-headers.sh\n> \n> diff --git a/utils/gen-shader-header.py b/utils/gen-shader-header.py\n> new file mode 100755\n> index 00000000..6668e648\n> --- /dev/null\n> +++ b/utils/gen-shader-header.py\n> @@ -0,0 +1,38 @@\n> +#!/usr/bin/env python3\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# Copyright (C) 2025, Bryan O'Donoghue.\n> +#\n> +# Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> +#\n> +# A python script which takes a list of shader files and converts into a C\n> +# header.\n> +#\n> +import sys\n> +\n> +try:\n> +    with open(sys.argv[2]) as file:\n> +        data = file.read()\n> +        data_len = len(data)\n> +\n> +        name = sys.argv[1].replace(\".\", \"_\")\n> +        name_len = name + \"_len\"\n> +\n> +        j = 0\n> +        print(\"unsigned char\", name, \"[] = {\")\n> +        for ch in data:\n> +            print(f\"0x{ord(ch):02x}, \", end=\"\")\n> +            j = j + 1\n> +            if j == 16:\n> +                print()\n> +                j = 0\n> +        if j != 0:\n> +            print()\n> +        print(\"};\")\n> +\n> +        print()\n> +        print(f\"const unsigned int {name_len}={data_len};\")\n> +\n> +except FileNotFoundError:\n> +    print(f\"File {sys.argv[2]} not found\", file=sys.stderr)\n> +except IOError:\n> +    print(f\"Unable to read {sys.argv[2]}\", file=sys.stderr)\n> diff --git a/utils/gen-shader-headers.sh b/utils/gen-shader-headers.sh\n> new file mode 100755\n> index 00000000..ca4f19f0\n> --- /dev/null\n> +++ b/utils/gen-shader-headers.sh\n> @@ -0,0 +1,44 @@\n> +#!/bin/sh\n> +set -x\n> +\n> +if [ $# -lt 4 ]; then\n> +       echo \"Invalid arg count must be >= 5\"\n\n\nMaybe this help should explain what the arguments are expected to be  ?\n\n> +       exit 1\n> +fi\n> +src_dir=\"$1\"; shift\n> +build_dir=\"$1\"; shift\n> +build_path=$build_dir/\"$1\"; shift\n> +\n> +cat <<EOF > \"$build_path\"\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/* This file is auto-generated, do not edit! */\n> +/*\n> + * Copyright (C) 2025, Linaro Ltd.\n> + *\n> + */\n> +\n> +#pragma once\n> +\n> +EOF\n> +\n> +cat <<EOF >> \"$build_path\"\n\nThis EOF ... then re-opening the cat  <<EOF seems redundant... ?\n\n\nBut aside from those:\n\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> +/*\n> + * List the names of the shaders at the top of\n> + * header for readability's sake\n> + *\n> +EOF\n> +\n> +for file in \"$@\"; do\n> +       echo \"file is $file\"\n> +       name=$(basename \"$build_dir/$file\" | tr '.' '_')\n> +       echo \" * unsigned char $name;\" >> \"$build_path\"\n> +done\n> +\n> +echo \"*/\" >> \"$build_path\"\n> +\n> +echo \"/* Hex encoded shader data */\" >> \"$build_path\"\n> +for file in \"$@\"; do\n> +       name=$(basename \"$build_dir/$file\")\n> +       \"$src_dir/utils/gen-shader-header.py\" \"$name\" \"$build_dir/$file\" >> \"$build_path\"\n> +       echo >> \"$build_path\"\n> +done\n> -- \n> 2.51.0\n>","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 E2E0EC3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 19:35:41 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 19AA76062E;\n\tWed, 15 Oct 2025 21:35:41 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6F94760615\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Oct 2025 21:35:39 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id EE523E7C;\n\tWed, 15 Oct 2025 21:33:59 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"EmQzSWu5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760556840;\n\tbh=TTMVoP0tJTkYh7iiMh5MCW7BR1we9mw6ie3N2dqCWeU=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=EmQzSWu5fHT3B1cze1PQqqH08F7mpbpdmhwtvr2orMY2KBJxJbdNk/buUIfaYFLfF\n\tK1J55ZO+4SHgpTm9AU5nOnxqREltzR/Yo3zjn29yAOZ4f5Hn90/6pSb0bAuw6synEX\n\txkV2MjFy955DhM0/d5vFeNHnx2tz33Q2mdCcOTEE=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251015012251.17508-3-bryan.odonoghue@linaro.org>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-3-bryan.odonoghue@linaro.org>","Subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"hdegoede@redhat.com, mzamazal@redhat.com, bryan.odonoghue@linaro.org,\n\tbod.linux@nxsw.ie","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 15 Oct 2025 20:35:36 +0100","Message-ID":"<176055693637.162040.15423325717330373636@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}},{"id":36259,"web_url":"https://patchwork.libcamera.org/comment/36259/","msgid":"<176055706077.162040.10666355289856687461@ping.linuxembedded.co.uk>","date":"2025-10-15T19:37:40","subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Kieran Bingham (2025-10-15 20:35:36)\n> Quoting Bryan O'Donoghue (2025-10-15 02:22:14)\n> > Two simple script to generate a header that contains GLSL shaders translated\n> > to C arrays.\n> > \n> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> > ---\n> >  utils/gen-shader-header.py  | 38 ++++++++++++++++++++++++++++++++\n> >  utils/gen-shader-headers.sh | 44 +++++++++++++++++++++++++++++++++++++\n> >  2 files changed, 82 insertions(+)\n> >  create mode 100755 utils/gen-shader-header.py\n> >  create mode 100755 utils/gen-shader-headers.sh\n> > \n> > diff --git a/utils/gen-shader-header.py b/utils/gen-shader-header.py\n> > new file mode 100755\n> > index 00000000..6668e648\n> > --- /dev/null\n> > +++ b/utils/gen-shader-header.py\n> > @@ -0,0 +1,38 @@\n> > +#!/usr/bin/env python3\n> > +# SPDX-License-Identifier: GPL-2.0-or-later\n> > +# Copyright (C) 2025, Bryan O'Donoghue.\n> > +#\n> > +# Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> > +#\n> > +# A python script which takes a list of shader files and converts into a C\n> > +# header.\n> > +#\n> > +import sys\n> > +\n> > +try:\n> > +    with open(sys.argv[2]) as file:\n> > +        data = file.read()\n> > +        data_len = len(data)\n> > +\n> > +        name = sys.argv[1].replace(\".\", \"_\")\n> > +        name_len = name + \"_len\"\n> > +\n> > +        j = 0\n> > +        print(\"unsigned char\", name, \"[] = {\")\n> > +        for ch in data:\n> > +            print(f\"0x{ord(ch):02x}, \", end=\"\")\n> > +            j = j + 1\n> > +            if j == 16:\n> > +                print()\n> > +                j = 0\n> > +        if j != 0:\n> > +            print()\n> > +        print(\"};\")\n> > +\n> > +        print()\n> > +        print(f\"const unsigned int {name_len}={data_len};\")\n> > +\n> > +except FileNotFoundError:\n> > +    print(f\"File {sys.argv[2]} not found\", file=sys.stderr)\n> > +except IOError:\n> > +    print(f\"Unable to read {sys.argv[2]}\", file=sys.stderr)\n> > diff --git a/utils/gen-shader-headers.sh b/utils/gen-shader-headers.sh\n> > new file mode 100755\n> > index 00000000..ca4f19f0\n> > --- /dev/null\n> > +++ b/utils/gen-shader-headers.sh\n> > @@ -0,0 +1,44 @@\n> > +#!/bin/sh\n> > +set -x\n> > +\n> > +if [ $# -lt 4 ]; then\n> > +       echo \"Invalid arg count must be >= 5\"\n> \n> \n> Maybe this help should explain what the arguments are expected to be  ?\n\nAlso - it looks like the arguments should currently be 'exactly' 5 - not\ngreater than four ?\nSo perhaps\n\nif [ $# -ne 5 ];\n\n ...\n\n--\nKieran","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 96734BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 15 Oct 2025 19:37:45 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0C54A60627;\n\tWed, 15 Oct 2025 21:37:45 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3D8D160615\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 15 Oct 2025 21:37:44 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 63127EAE;\n\tWed, 15 Oct 2025 21:36:04 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"FHiQQn6x\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760556964;\n\tbh=H2yxACvDE+iRaBt0+C6qe13ERSsDWQU7i+87bUvV1Dg=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=FHiQQn6xw5UDEehjVa2+2skRajFZna6h5nXWgZbYaJUK4w3x5xI02eBwEVAVqJ5Qx\n\tpLyugaFGcbn73bBx/h3Cs6Lm4OpF6VaorZdkc3CnbZHX7GjeExhUJhZOEA7OExoKfC\n\tteH2nNkTRkzoytyRtd9occB6BttSEMBuQWr+PgTc=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<176055693637.162040.15423325717330373636@ping.linuxembedded.co.uk>","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-3-bryan.odonoghue@linaro.org>\n\t<176055693637.162040.15423325717330373636@ping.linuxembedded.co.uk>","Subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"hdegoede@redhat.com, mzamazal@redhat.com, bryan.odonoghue@linaro.org,\n\tbod.linux@nxsw.ie","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Wed, 15 Oct 2025 20:37:40 +0100","Message-ID":"<176055706077.162040.10666355289856687461@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>"}},{"id":36291,"web_url":"https://patchwork.libcamera.org/comment/36291/","msgid":"<85v7kfgvoa.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-10-16T07:20:05","subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Hi Bryan,\n\nmy comments from v1 still apply:\n\nhttps://lists.libcamera.org/pipermail/libcamera-devel/2025-June/050896.html\n\nBryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> Two simple script to generate a header that contains GLSL shaders translated\n> to C arrays.\n>\n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> ---\n>  utils/gen-shader-header.py  | 38 ++++++++++++++++++++++++++++++++\n>  utils/gen-shader-headers.sh | 44 +++++++++++++++++++++++++++++++++++++\n>  2 files changed, 82 insertions(+)\n>  create mode 100755 utils/gen-shader-header.py\n>  create mode 100755 utils/gen-shader-headers.sh\n>\n> diff --git a/utils/gen-shader-header.py b/utils/gen-shader-header.py\n> new file mode 100755\n> index 00000000..6668e648\n> --- /dev/null\n> +++ b/utils/gen-shader-header.py\n> @@ -0,0 +1,38 @@\n> +#!/usr/bin/env python3\n> +# SPDX-License-Identifier: GPL-2.0-or-later\n> +# Copyright (C) 2025, Bryan O'Donoghue.\n> +#\n> +# Author: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> +#\n> +# A python script which takes a list of shader files and converts into a C\n> +# header.\n> +#\n> +import sys\n> +\n> +try:\n> +    with open(sys.argv[2]) as file:\n> +        data = file.read()\n> +        data_len = len(data)\n> +\n> +        name = sys.argv[1].replace(\".\", \"_\")\n> +        name_len = name + \"_len\"\n> +\n> +        j = 0\n> +        print(\"unsigned char\", name, \"[] = {\")\n> +        for ch in data:\n> +            print(f\"0x{ord(ch):02x}, \", end=\"\")\n> +            j = j + 1\n> +            if j == 16:\n> +                print()\n> +                j = 0\n> +        if j != 0:\n> +            print()\n> +        print(\"};\")\n> +\n> +        print()\n> +        print(f\"const unsigned int {name_len}={data_len};\")\n> +\n> +except FileNotFoundError:\n> +    print(f\"File {sys.argv[2]} not found\", file=sys.stderr)\n> +except IOError:\n> +    print(f\"Unable to read {sys.argv[2]}\", file=sys.stderr)\n> diff --git a/utils/gen-shader-headers.sh b/utils/gen-shader-headers.sh\n> new file mode 100755\n> index 00000000..ca4f19f0\n> --- /dev/null\n> +++ b/utils/gen-shader-headers.sh\n> @@ -0,0 +1,44 @@\n> +#!/bin/sh\n> +set -x\n> +\n> +if [ $# -lt 4 ]; then\n> +\techo \"Invalid arg count must be >= 5\"\n> +\texit 1\n> +fi\n> +src_dir=\"$1\"; shift\n> +build_dir=\"$1\"; shift\n> +build_path=$build_dir/\"$1\"; shift\n> +\n> +cat <<EOF > \"$build_path\"\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/* This file is auto-generated, do not edit! */\n> +/*\n> + * Copyright (C) 2025, Linaro Ltd.\n> + *\n> + */\n> +\n> +#pragma once\n> +\n> +EOF\n> +\n> +cat <<EOF >> \"$build_path\"\n> +/*\n> + * List the names of the shaders at the top of\n> + * header for readability's sake\n> + *\n> +EOF\n> +\n> +for file in \"$@\"; do\n> +\techo \"file is $file\"\n> +\tname=$(basename \"$build_dir/$file\" | tr '.' '_')\n> +\techo \" * unsigned char $name;\" >> \"$build_path\"\n> +done\n> +\n> +echo \"*/\" >> \"$build_path\"\n> +\n> +echo \"/* Hex encoded shader data */\" >> \"$build_path\"\n> +for file in \"$@\"; do\n> +\tname=$(basename \"$build_dir/$file\")\n> +\t\"$src_dir/utils/gen-shader-header.py\" \"$name\" \"$build_dir/$file\" >> \"$build_path\"\n> +\techo >> \"$build_path\"\n> +done","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 4568FBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 16 Oct 2025 07:20:14 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8ECFB600CC;\n\tThu, 16 Oct 2025 09:20:13 +0200 (CEST)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7524A600CC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Oct 2025 09:20:11 +0200 (CEST)","from mail-wr1-f72.google.com (mail-wr1-f72.google.com\n\t[209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-488-ZSkTyUIbMdSedTh-zh-SKQ-1; Thu, 16 Oct 2025 03:20:09 -0400","by mail-wr1-f72.google.com with SMTP id\n\tffacd0b85a97d-3fba0d9eb87so324056f8f.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Oct 2025 00:20:09 -0700 (PDT)","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-426ce57cce5sm33822991f8f.1.2025.10.16.00.20.05\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 16 Oct 2025 00:20:06 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"ZqQL9JMo\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1760599210;\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=DzH1fiYeS3p+uCpGH9+VUPpP7DhCZDHEUrOtQMlJ3oU=;\n\tb=ZqQL9JMorx6VAZHljZWaKQw8wjbM20VKwtVlz8kXUMt2JBBK+v/hwlqD8pJXCepgvKcFdt\n\tN+lrDxVXGLOJAQqP8F5k9oQNSFPFXNRcbV+NG2pKI3QduCc7y9U1y3svFgFNK5u42SHr8b\n\tkIhh0TkafDqyxaATD0PX1b68Hntjfbg=","X-MC-Unique":"ZSkTyUIbMdSedTh-zh-SKQ-1","X-Mimecast-MFC-AGG-ID":"ZSkTyUIbMdSedTh-zh-SKQ_1760599208","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1760599208; x=1761204008;\n\th=mime-version:user-agent:message-id:date:references:in-reply-to\n\t:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=DzH1fiYeS3p+uCpGH9+VUPpP7DhCZDHEUrOtQMlJ3oU=;\n\tb=hJaEYVKwcHKH0uboiB3X1lDOjZvl2Qa8qLaAs/l9GAiPP3lvchyXVSicQsOfdir+er\n\thUQdTKFyymBeVYQxiud2M3m0ojOgSO+gsAYtHu788CynRgUbVFWym1KNrMrXpyTwOoIF\n\t3a5+ytX3Oa5A6oJt7M2w3JrEv7pPnqFcOYHaOIYRYfoagvZwMDqhvwCDo6y00ZRmjp0G\n\t3q358PF4bUWV//df1unF+5QnLjjiTbU7M6qBBvH0Abi0jxjBFnaRTzLjNN1EJzH+3gwh\n\tTTeN91RJ0cPzkM6ssRhVYIYg8AZWsJo+cKywjZu9hDNQvUTywyjm1Z5CWIZDEAIJF31u\n\t/pyA==","X-Gm-Message-State":"AOJu0Yx6gmLvU00Dy6QY66L5WU6ICGTNOxi1RBMOGHzuT7dmK2C+xf15\n\tWAiZivQ1YscCeAH2oWB1rDLwoIOMPquvRW86wjHmmfWyNCYmxJxrI7BbOXUfyharMVLqm1Ohkwb\n\t1n9HQeOKRlN4RmRRMLuScXH2xP0zSYK+Dpb97noiHNpHBWFio+YnxTQHMQN23VgL5KXCxmIe6D1\n\tI=","X-Gm-Gg":"ASbGncvWq4FTP1H9vYZCU9FYgbC6JAlCR+czjHMfOc7fGU/iUac09IDvZILENiQTsZZ\n\tSSmcAIKyLgPXLTZHbSpzxSU38KVcUAqUDcRxZPCYkAMlBf1R3KF7eZU7UjbuYceTwfWFGSYqR27\n\t+qplUAVACNnaUdLtBH/++CneRvDus25jS9DU6nsY4yWPkbia4ki5B+4PTjEOowMSqvc53bZ/2wP\n\tRvSLYOD03r4zkn7CeMYLLcCiLV6N0lrBTF3yKu9101guO5ugmrLjCzP2qjoOfRKfzEWR45lQzZY\n\tlCq9J7aAYu5xKH6ikE+7MBTXM5UeubIrnOADhfm+UV1x3ujOvm6WxUjCppQpBZXjDzIxz6hi9f1\n\tsWtN7ca+DXLt4OewvtYijEue3iAVtuc9EHUCDc8iEnflPccQkpWIc","X-Received":["by 2002:a05:6000:2c06:b0:40f:5eb7:f23e with SMTP id\n\tffacd0b85a97d-42666ab2b15mr17387323f8f.1.1760599207053; \n\tThu, 16 Oct 2025 00:20:07 -0700 (PDT)","by 2002:a05:6000:2c06:b0:40f:5eb7:f23e with SMTP id\n\tffacd0b85a97d-42666ab2b15mr17387306f8f.1.1760599206606; \n\tThu, 16 Oct 2025 00:20:06 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IFjIJo8a02xw22pbHKvyJYFRZupyE9P066iBFT/gDTfeA6loyknmO4FYUqyBOPja+5H32s1iA==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org,  hdegoede@redhat.com,\n\tbod.linux@nxsw.ie","Subject":"Re: [PATCH v3 02/39] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","In-Reply-To":"<20251015012251.17508-3-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Wed, 15 Oct 2025 02:22:14 +0100\")","References":"<20251015012251.17508-1-bryan.odonoghue@linaro.org>\n\t<20251015012251.17508-3-bryan.odonoghue@linaro.org>","Date":"Thu, 16 Oct 2025 09:20:05 +0200","Message-ID":"<85v7kfgvoa.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":"owd03xR6eKIk2JQg_wkFCLOZiMF9Y5jW3MuPJece7eY_1760599208","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>"}}]