[{"id":36996,"web_url":"https://patchwork.libcamera.org/comment/36996/","msgid":"<85qztr9zli.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-11-21T15:26:01","subject":"Re: [PATCH 02/22] 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 are still ignored:\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> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\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 000000000..6668e648f\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 000000000..ca4f19f07\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 E9B5FC3335\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 21 Nov 2025 15:26:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 11E5560A8B;\n\tFri, 21 Nov 2025 16:26:12 +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 BDA5E60805\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Nov 2025 16:26:09 +0100 (CET)","from mail-wm1-f69.google.com (mail-wm1-f69.google.com\n\t[209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-369-2iWmqR52MDmSv-CC74ykZw-1; Fri, 21 Nov 2025 10:26:04 -0500","by mail-wm1-f69.google.com with SMTP id\n\t5b1f17b1804b1-477632ef599so19109485e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 21 Nov 2025 07:26:04 -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\t5b1f17b1804b1-477bf3b4c13sm47307585e9.13.2025.11.21.07.26.02\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 21 Nov 2025 07:26:02 -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=\"Te/BGFZJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1763738768;\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=kKBquOcb8/iAiD2b5y6qw+oyMPE2Fvaxc18JQxyFN6g=;\n\tb=Te/BGFZJJJWP5tQggKq4LAzx0y7lNse73JFIanbfHyFpnah0dI2bDhZmv8lWpTVnkvGwOg\n\tPNuyUNh96jKRLGefp6u0FKSl2rC/OYRD+6seMtVm3u+7OSNYGNByVHYpern5ZOSqpRB+QT\n\tlEs2Ujohr/zULE8o8tZ5c1Wl1dhw0Pw=","X-MC-Unique":"2iWmqR52MDmSv-CC74ykZw-1","X-Mimecast-MFC-AGG-ID":"2iWmqR52MDmSv-CC74ykZw_1763738763","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1763738763; x=1764343563;\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=kKBquOcb8/iAiD2b5y6qw+oyMPE2Fvaxc18JQxyFN6g=;\n\tb=BTNk75a2nE/HEii81pUDcUxuMKfej1oZYTpEwt1qvo8wsiQw2nbPmb9vcTCHpU4uZX\n\trA7Q14eIAEvXB+/i2rqahtJvoxXwxDqP47yDcQacx1NZVx+8YkEmztTTU9iNP9f+ZlaS\n\tz+P+FaVaC/S2bm/91DHQRXnjPDEH5z5F6aGrna5LPvS9VjiyC3f+6uX5F7OVUJJjXJi1\n\tSKObs0LnFnriA+dc2Z2Eo2hinDrID2su7W6hm0ZyDsiIRO6PuN1YKDDnwkvCVWN5zssr\n\tjANMBJ+TpnLfBUmrgMsuuumlX6w7WltwPXwXCs4kqf+zIVX67SRkx8A15TdlyvOqNyEL\n\tfLmQ==","X-Gm-Message-State":"AOJu0YyYdQQAJk3Eb5/PG/O+Ze7blKLxdwnmQh8KhzhZ6ofeQYF2UR7a\n\t68w5Ea72n8aY5WX01cEJEcHdgsgedpEe+IZkJXjEshM3o527t6s99+qhcWaeo2YmmC6xk8EVj8e\n\tRKu+r94x0ShjJvjmBMhG1fVVm00eVtKD2Q+hfenjl601bfySZWOeToARTRah5LZHuDH62XlIhNR\n\tI=","X-Gm-Gg":"ASbGncsI1Y9XFZD36x79z7rrxLkh972QG2fqO9X4rNkW8fLe9zSnbNNH2LzmfcICSQZ\n\tOxO1E/OR1+6fK2QW+S97OKQljPJnyWq9pd4qiL3jz7+WMNGH5uB8Q43WQuIZCYl8su7UtuaW9ps\n\tOWJaeMarEWisgsTVCmEkRHUmU6fQmSZkso9VsO7drW7oXJYGPgZDNIr3oc7GmZFvlw++z12aGvr\n\tDeVgUiBzfVVRMLvEnIKSVglWcsldGulkoWMfovKt4mcFwOLpHoIKR6GVzfkCs1D+9lKnB+8bcLM\n\tO8ZVaWm4W3jAXTb7Ac9+G2sFpYs7/IiLACku71Sd0Q97ssQRYkYRp6rBIPElhrwDPoakNQP7lB9\n\tJmwPW0Eogo4rYjDJv/lq29P4sqQggw1QM1QOGKM3qQ+pLL7YQewSiPt1MlN7+W5k=","X-Received":["by 2002:a05:600c:3044:b0:477:5639:ff66 with SMTP id\n\t5b1f17b1804b1-477b9ef4949mr45415065e9.13.1763738763529; \n\tFri, 21 Nov 2025 07:26:03 -0800 (PST)","by 2002:a05:600c:3044:b0:477:5639:ff66 with SMTP id\n\t5b1f17b1804b1-477b9ef4949mr45414945e9.13.1763738763109; \n\tFri, 21 Nov 2025 07:26:03 -0800 (PST)"],"X-Google-Smtp-Source":"AGHT+IHM+Lm9viqmRXVbPkOXM8/yZe93RTKIFyBODAsFC+So1m9vuGXXY0OVent6vRA3lDUbI83t6A==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org,  pavel@ucw.cz,  Kieran Bingham\n\t<kieran.bingham@ideasonboard.com>","Subject":"Re: [PATCH 02/22] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","In-Reply-To":"<20251120232019.3590-3-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Thu, 20 Nov 2025 23:19:59 +0000\")","References":"<20251120232019.3590-1-bryan.odonoghue@linaro.org>\n\t<20251120232019.3590-3-bryan.odonoghue@linaro.org>","Date":"Fri, 21 Nov 2025 16:26:01 +0100","Message-ID":"<85qztr9zli.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":"aZRPFV01fn6pssLK6ZJyB7Rd85W7vsEf7Pvt1Bv4xGY_1763738763","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>"}},{"id":37080,"web_url":"https://patchwork.libcamera.org/comment/37080/","msgid":"<e314c909-ece7-4076-a87f-f21a157e6ace@linaro.org>","date":"2025-11-26T16:18:33","subject":"Re: [PATCH 02/22] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 21/11/2025 15:26, Milan Zamazal wrote:\n> Hi Bryan,\n> \n> my comments from v1 are still ignored:\n> https://lists.libcamera.org/pipermail/libcamera-devel/2025-June/050896.html\n> \n> Bryan 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>> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\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 000000000..6668e648f\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 000000000..ca4f19f07\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\n> \n\nAddressed - apologies I really did blank on these comments.\n\n---\nbod","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 AC671C3260\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 26 Nov 2025 16:18:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9E8C460A9E;\n\tWed, 26 Nov 2025 17:18:37 +0100 (CET)","from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com\n\t[IPv6:2a00:1450:4864:20::32b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 00105606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Nov 2025 17:18:35 +0100 (CET)","by mail-wm1-x32b.google.com with SMTP id\n\t5b1f17b1804b1-477bf34f5f5so41519275e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 26 Nov 2025 08:18:35 -0800 (PST)","from [192.168.0.27] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4790adc5ea6sm56259445e9.3.2025.11.26.08.18.34\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tWed, 26 Nov 2025 08:18:34 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"uxuuRB1U\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1764173915; x=1764778715;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:from:to:cc:subject:date:message-id:reply-to;\n\tbh=oWcRNdjhlNPvvTSxpm62x3Vp8r+ZTIZQFOLfB4Wfr6w=;\n\tb=uxuuRB1U6kwQLpv6xdKEA35S61Hn37ULvzxPTS8bq4UZws9bVhWRc6eF97/8nB9BVa\n\tDyg4Ww8xqm7Lkn9Q20HAx6Y4bNnUfeUWrSGgOWtCuPYp8w1HkSMVGebVZknf8yJXPaD6\n\tnfqhzwhGJzCFj/yQgoR0ePE2JV0UapcC3BUuen0l3S8UzyZjfrnuf8bh58eitVe/Uleu\n\tOoKllmM+uQBwhecpoprlOS91P6H1olmGkBMVEwV7j9xkS/d/HnCTDvW533qH9A69ODi7\n\tIarOSYRs1OAa595QtPxIEumQT+OGIXcpGVrggpDSyceAZwtgLo45wO7JPy8S3dBBzh0e\n\tflKw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1764173915; x=1764778715;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=oWcRNdjhlNPvvTSxpm62x3Vp8r+ZTIZQFOLfB4Wfr6w=;\n\tb=Ek8PXrbX/SKM36kK/y661dMjG/uOOhu/6FwUmLfLPT1Ir+fEpMfNRuPuC+IeDgImnt\n\tBwTiMbfXkq4sWnz/Den0j3IzWvWqvFYAApgToMrGknhXKhefG+f8eCU3K2r1aWznp+vO\n\t8OFzkv6JSxUcQ5bOlzPrt9HWBKeA5EHAdxMbN492vsBy1fuHPgvQtQC1oKsOo1lj616y\n\tC/2ekmH9nNzkUcIMY0qjcpHpKcZfHVRQ6Y+wTBqufhow1lZRySFg5fk9o/RFFo55LGw9\n\t9+KpVvUZQBOPdvlHRSvtnO//4RKxJqMkGw5l+1sJqP88WVJW+hScJcrPEX+Bnr5GK6se\n\t8gUg==","X-Gm-Message-State":"AOJu0Yx4wmKgoFDrj8eJdDb0bAt4tk3h2HHP6iL/dDwC9OmZurT1Abis\n\tr3VpJ47DtmH26cJW68MTV9w5ivQqX3ziSxQ3H916/kCM4UIeU24i8Cw1Rh8i8IFMQMM=","X-Gm-Gg":"ASbGnctPXLK/PNHbduFgZakmyZA5CqQMSyNeEEyZg5S6w0Z3Gm7d/Ao+PGuZhwpOYgA\n\tWnIdtrkPcE3hniJrjAiI94Y+Mmai+s2k5GkWTHnzoVoLahcmfGeGGwCskxNfZZLy6UVwOWiOOKo\n\t3l+FLELSQzWSh3FpLWK6quEQAZRQ70vFuVzrAIgh86JvPeesTVQdsyFuYHsQuaM31+53h7VPpm7\n\tTU08MC5qoAEOL8m9z6V4aYXS/wkeU2ZtWryNSAE58izQbq4VX1RhRHuzP95xa6KBJa+CQ9GMi7J\n\teYTOse04PnezhhSOCIdmaSw1+i6QWPxvYrKSptZfZophsBTkTyqi6tvszMCcFsHjWd081TqBUVi\n\t8kEMtUlTEugJKRx1CsijwxOEyXv2PxCaQDf3CuLkExCq13Oos0Ohd7Ome8pxiyMeevz0uD4mlVS\n\txuVdut5i/tWKDSWEd83FhctoNs2z4py4iJ3VjWDvAGz2ry1H+AbXZY","X-Google-Smtp-Source":"AGHT+IGK5hO4z83nmcli8dj5cPN3uaS3sF3D6gIuVCb5YYy6tcdtGklLuqzJA/yYvMj9cbdJts5Ahg==","X-Received":"by 2002:a05:600c:4591:b0:475:e067:f23d with SMTP id\n\t5b1f17b1804b1-47904b1fac9mr66728715e9.25.1764173915387; \n\tWed, 26 Nov 2025 08:18:35 -0800 (PST)","Message-ID":"<e314c909-ece7-4076-a87f-f21a157e6ace@linaro.org>","Date":"Wed, 26 Nov 2025 16:18:33 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 02/22] utils: gen-shader-headers: Add a utility to\n\tgenerate headers from shaders","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org, pavel@ucw.cz,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","References":"<20251120232019.3590-1-bryan.odonoghue@linaro.org>\n\t<20251120232019.3590-3-bryan.odonoghue@linaro.org>\n\t<85qztr9zli.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<85qztr9zli.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","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>"}}]