[{"id":34485,"web_url":"https://patchwork.libcamera.org/comment/34485/","msgid":"<39127bf3-238e-49fc-bb79-bcd2177a4228@linaro.org>","date":"2025-06-16T19:03:24","subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 11/06/2025 02:32, Bryan O'Donoghue wrote:\n> Moving the GL shaders to src/libcamera/assets/shader to allow for reuse of\n> these inside of the SoftISP.\n\nNot to self:\n\nGL, eGL, Mesa - choose one name and use it consistently in the series.\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 28327BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 16 Jun 2025 19:03:27 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D234A68DCB;\n\tMon, 16 Jun 2025 21:03:26 +0200 (CEST)","from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com\n\t[IPv6:2a00:1450:4864:20::32d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A686968DC0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jun 2025 21:03:25 +0200 (CEST)","by mail-wm1-x32d.google.com with SMTP id\n\t5b1f17b1804b1-453066fad06so36848465e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Jun 2025 12:03:25 -0700 (PDT)","from [192.168.0.35] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4534172d2b0sm83654405e9.35.2025.06.16.12.03.24\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tMon, 16 Jun 2025 12:03:24 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"YdDle+dy\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1750100605; x=1750705405;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:from:content-language\n\t:references:to:subject:user-agent:mime-version:date:message-id:from\n\t:to:cc:subject:date:message-id:reply-to;\n\tbh=o51IZCWsPVrU8mfq+jKLHKDaA7lTf/Y30H3EraJ96j0=;\n\tb=YdDle+dyhTLvWPS4IHUkbbERQGhCqwBxcRAL+/48yAgICnL35WbZy8T2Yyd7+pEvO+\n\tBF/4sMGer4624YmpUd/tQIzO7xJpJ3PeS3Zx66jd/vK0ugq5Wfgc5kBmnJvrqlQH2Vyg\n\thZ4zKY2+cjByjuJh4hOSW9EWazXi1HIDMrIHXe9Q9ec7UaHqfmD2mkjip1cIGbhgN+Zv\n\tCJcMOqd5ZDZNvY1EGQvv/3IKB6er0Xn6Yk4TufclCFK5szAf/ijFl8UNq56xMccw039z\n\tGfZKMTK7GtzJqDJkHk5GFpdwkf2coDscehmXspAkEE8RPx56Hl7Xmz1zjIuzlsjNM3fF\n\tczAQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750100605; x=1750705405;\n\th=content-transfer-encoding:in-reply-to:from:content-language\n\t:references:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=o51IZCWsPVrU8mfq+jKLHKDaA7lTf/Y30H3EraJ96j0=;\n\tb=MFxLEM7D/PWTpNT5sBAvWVa0uPgPBdQiNVcCfU2F2drJ309RgqHP0kQRQWms1ycvoJ\n\tfvJNMUVQ5BdG4lB7tyFn63rep/a9e+2nJzkCt70vOr2IGAn5u2y2B9PQ3pOY2iVHjfWM\n\t4hqHlFnA4Ze9k6NntGxGgb0BkD8ohTNf9sw/oR2iyaCzP9mSXtTFunc0pw1aqY1mpY87\n\t/A3bnGhdJlisr4oPD7qABJnSbluHOwBqnRzLQpW2fostU+C4cK1j5gjoKVfpNPRreOiF\n\tED5hNBy7mOVYD6hIyllTmRzExpRKHGsn2gcuaoE4weEnmza5+ogXZpWkl55aHkupgrIX\n\tlTGQ==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCV20Fx+b3+aBQmPGNXa4TaaTwff2axfeB4tAbsrjzpefX3NKjjaiq56wElpdpDT9Y5I4TCJSqi3DavqFEuKc74=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YxSO3HxZTFXkmf7ndwaVRrW4+MWmrAo18mAAR6i6UDDnpcV9y17\n\t40i4ukM57QRnvPKSnmlOQ3t+brETtfna8PW8CF22jH1ZoZkJvsKAx+Up+JrGAEyeJ0/e3hpiaVn\n\ttb9rT8sI=","X-Gm-Gg":"ASbGncvvEccJDIhXduXuwLpGPTP9n7OWz91K46w/4Ao5Z2xqKo31+JEZwZiUOhSfnpn\n\tQV7ToMgCU1bgUY+VmH4gIXvYJGHJVaRBJgUWfK7zsZvz1ezV7AGvIRoL1wVeGfWlTxzeZhfDK6+\n\tMnhE8uGw5IpF4c1jXmHLAyLA5w2DrpsbYW2/BerV7nVV2aYUIaaAHRDO+jqch705YYKtfxS991z\n\tKkdfRoSSHfVj0Up730iC9bxCbdmclATdid0au+aaIGolsHxfts00bN+oSAza0dyNwS8UECAwNuO\n\trE8i1yEhbdpmBQdTAqHzYvLlDASJqWPiVcWzPSv4fx8nIF1or4/e+aSkyIuXpR2YqR/90tBvxuE\n\t4nm8B+AbZ4Ojv/nijJ4YiGzs+4uI=","X-Google-Smtp-Source":"AGHT+IHg8LtwlUnjsN2Yye/qerA/AshVtFWQRm1oqqGMojRT4oAPEGZ5x83KA1QVlHBoU34UL79jXA==","X-Received":"by 2002:a05:600c:3b98:b0:43c:fbba:41ba with SMTP id\n\t5b1f17b1804b1-453418e0926mr64635185e9.28.1750100605305; \n\tMon, 16 Jun 2025 12:03:25 -0700 (PDT)","Message-ID":"<39127bf3-238e-49fc-bb79-bcd2177a4228@linaro.org>","Date":"Mon, 16 Jun 2025 20:03:24 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20250611013245.133785-1-bryan.odonoghue@linaro.org>\n\t<_xrNCJ0FgnPdmWa91MoJZDKIDEwFXlGwNl53TYRkJzP-eTR2kQI_w7EtacYLa4jJ2yMSUONEnf4_1dZq3dIXsg==@protonmail.internalid>\n\t<20250611013245.133785-17-bryan.odonoghue@linaro.org>","Content-Language":"en-US","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","In-Reply-To":"<20250611013245.133785-17-bryan.odonoghue@linaro.org>","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>"}},{"id":34516,"web_url":"https://patchwork.libcamera.org/comment/34516/","msgid":"<854iwebmy0.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2025-06-17T11:57:11","subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes:\n\n> Moving the GL shaders to src/libcamera/assets/shader \n\nThe patch moves them to include/libcamera/internal/shaders actually.\nsrc/... looks like a logically better location, so why moving them to\ninclude/?\n\n> to allow for reuse of these inside of the SoftISP.\n>\n> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> ---\n>  .../libcamera/internal/shaders}/RGB.frag      |  0\n>  .../internal/shaders}/YUV_2_planes.frag       |  0\n>  .../internal/shaders}/YUV_3_planes.frag       |  0\n>  .../internal/shaders}/YUV_packed.frag         |  0\n>  .../internal/shaders}/bayer_1x_packed.frag    |  0\n>  .../libcamera/internal/shaders}/bayer_8.frag  |  0\n>  .../libcamera/internal/shaders}/bayer_8.vert  |  0\n>  .../libcamera/internal/shaders}/identity.vert |  0\n>  src/apps/qcam/assets/shader/shaders.qrc       | 16 ++---\n>  src/apps/qcam/viewfinder_gl.cpp               | 70 +++++++++----------\n>  10 files changed, 43 insertions(+), 43 deletions(-)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/RGB.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_2_planes.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_3_planes.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/YUV_packed.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_1x_packed.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.frag (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/bayer_8.vert (100%)\n>  rename {src/apps/qcam/assets/shader => include/libcamera/internal/shaders}/identity.vert (100%)\n>\n> diff --git a/src/apps/qcam/assets/shader/RGB.frag b/include/libcamera/internal/shaders/RGB.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/RGB.frag\n> rename to include/libcamera/internal/shaders/RGB.frag\n> diff --git a/src/apps/qcam/assets/shader/YUV_2_planes.frag b/include/libcamera/internal/shaders/YUV_2_planes.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/YUV_2_planes.frag\n> rename to include/libcamera/internal/shaders/YUV_2_planes.frag\n> diff --git a/src/apps/qcam/assets/shader/YUV_3_planes.frag b/include/libcamera/internal/shaders/YUV_3_planes.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/YUV_3_planes.frag\n> rename to include/libcamera/internal/shaders/YUV_3_planes.frag\n> diff --git a/src/apps/qcam/assets/shader/YUV_packed.frag b/include/libcamera/internal/shaders/YUV_packed.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/YUV_packed.frag\n> rename to include/libcamera/internal/shaders/YUV_packed.frag\n> diff --git a/src/apps/qcam/assets/shader/bayer_1x_packed.frag b/include/libcamera/internal/shaders/bayer_1x_packed.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/bayer_1x_packed.frag\n> rename to include/libcamera/internal/shaders/bayer_1x_packed.frag\n> diff --git a/src/apps/qcam/assets/shader/bayer_8.frag b/include/libcamera/internal/shaders/bayer_8.frag\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/bayer_8.frag\n> rename to include/libcamera/internal/shaders/bayer_8.frag\n> diff --git a/src/apps/qcam/assets/shader/bayer_8.vert b/include/libcamera/internal/shaders/bayer_8.vert\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/bayer_8.vert\n> rename to include/libcamera/internal/shaders/bayer_8.vert\n> diff --git a/src/apps/qcam/assets/shader/identity.vert b/include/libcamera/internal/shaders/identity.vert\n> similarity index 100%\n> rename from src/apps/qcam/assets/shader/identity.vert\n> rename to include/libcamera/internal/shaders/identity.vert\n> diff --git a/src/apps/qcam/assets/shader/shaders.qrc b/src/apps/qcam/assets/shader/shaders.qrc\n> index 96c709f9..04f9d706 100644\n> --- a/src/apps/qcam/assets/shader/shaders.qrc\n> +++ b/src/apps/qcam/assets/shader/shaders.qrc\n> @@ -1,13 +1,13 @@\n>  <!-- SPDX-License-Identifier: LGPL-2.1-or-later -->\n>  <!DOCTYPE RCC><RCC version=\"1.0\">\n>  <qresource>\n> -\t<file>RGB.frag</file>\n> -\t<file>YUV_2_planes.frag</file>\n> -\t<file>YUV_3_planes.frag</file>\n> -\t<file>YUV_packed.frag</file>\n> -\t<file>bayer_1x_packed.frag</file>\n> -\t<file>bayer_8.frag</file>\n> -\t<file>bayer_8.vert</file>\n> -\t<file>identity.vert</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/RGB.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/YUV_2_planes.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/YUV_3_planes.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/YUV_packed.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/bayer_1x_packed.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/bayer_8.frag</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/bayer_8.vert</file>\n> +\t<file>../../../../../include/libcamera/internal/shaders/identity.vert</file>\n>  </qresource>\n>  </RCC>\n> diff --git a/src/apps/qcam/viewfinder_gl.cpp b/src/apps/qcam/viewfinder_gl.cpp\n> index f31956ff..70f60065 100644\n> --- a/src/apps/qcam/viewfinder_gl.cpp\n> +++ b/src/apps/qcam/viewfinder_gl.cpp\n> @@ -141,7 +141,7 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format)\n>  \ttextureMinMagFilters_ = GL_LINEAR;\n>  \n>  \t/* Use identity.vert as the default vertex shader. */\n> -\tvertexShaderFile_ = \":identity.vert\";\n> +\tvertexShaderFile_ = \":include/libcamera/internal/shaders/identity.vert\";\n>  \n>  \tfragmentShaderDefines_.clear();\n>  \n> @@ -150,170 +150,170 @@ bool ViewFinderGL::selectFormat(const libcamera::PixelFormat &format)\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 2;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_UV\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::NV21:\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 2;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_VU\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::NV16:\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 1;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_UV\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::NV61:\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 1;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_VU\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::NV24:\n>  \t\thorzSubSample_ = 1;\n>  \t\tvertSubSample_ = 1;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_UV\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::NV42:\n>  \t\thorzSubSample_ = 1;\n>  \t\tvertSubSample_ = 1;\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_VU\");\n> -\t\tfragmentShaderFile_ = \":YUV_2_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_2_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::YUV420:\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 2;\n> -\t\tfragmentShaderFile_ = \":YUV_3_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_3_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::YVU420:\n>  \t\thorzSubSample_ = 2;\n>  \t\tvertSubSample_ = 2;\n> -\t\tfragmentShaderFile_ = \":YUV_3_planes.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_3_planes.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::UYVY:\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_UYVY\");\n> -\t\tfragmentShaderFile_ = \":YUV_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_packed.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::VYUY:\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_VYUY\");\n> -\t\tfragmentShaderFile_ = \":YUV_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_packed.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::YUYV:\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_YUYV\");\n> -\t\tfragmentShaderFile_ = \":YUV_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_packed.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::YVYU:\n>  \t\tfragmentShaderDefines_.append(\"#define YUV_PATTERN_YVYU\");\n> -\t\tfragmentShaderFile_ = \":YUV_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/YUV_packed.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::ABGR8888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN rgb\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::ARGB8888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN bgr\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::BGRA8888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN gba\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::RGBA8888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN abg\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::BGR888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN rgb\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::RGB888:\n>  \t\tfragmentShaderDefines_.append(\"#define RGB_PATTERN bgr\");\n> -\t\tfragmentShaderFile_ = \":RGB.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/RGB.frag\";\n>  \t\tbreak;\n>  \tcase libcamera::formats::SBGGR8:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(1.0);\n> -\t\tvertexShaderFile_ = \":bayer_8.vert\";\n> -\t\tfragmentShaderFile_ = \":bayer_8.frag\";\n> +\t\tvertexShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.vert\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGBRG8:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(1.0);\n> -\t\tvertexShaderFile_ = \":bayer_8.vert\";\n> -\t\tfragmentShaderFile_ = \":bayer_8.frag\";\n> +\t\tvertexShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.vert\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGRBG8:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(0.0);\n> -\t\tvertexShaderFile_ = \":bayer_8.vert\";\n> -\t\tfragmentShaderFile_ = \":bayer_8.frag\";\n> +\t\tvertexShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.vert\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SRGGB8:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(0.0);\n> -\t\tvertexShaderFile_ = \":bayer_8.vert\";\n> -\t\tfragmentShaderFile_ = \":bayer_8.frag\";\n> +\t\tvertexShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.vert\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_8.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SBGGR10_CSI2P:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(1.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW10P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGBRG10_CSI2P:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(1.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW10P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGRBG10_CSI2P:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(0.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW10P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SRGGB10_CSI2P:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(0.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW10P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SBGGR12_CSI2P:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(1.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW12P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGBRG12_CSI2P:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(1.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW12P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SGRBG12_CSI2P:\n>  \t\tfirstRed_.setX(1.0);\n>  \t\tfirstRed_.setY(0.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW12P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tcase libcamera::formats::SRGGB12_CSI2P:\n>  \t\tfirstRed_.setX(0.0);\n>  \t\tfirstRed_.setY(0.0);\n>  \t\tfragmentShaderDefines_.append(\"#define RAW12P\");\n> -\t\tfragmentShaderFile_ = \":bayer_1x_packed.frag\";\n> +\t\tfragmentShaderFile_ = \":include/libcamera/internal/shaders/bayer_1x_packed.frag\";\n>  \t\ttextureMinMagFilters_ = GL_NEAREST;\n>  \t\tbreak;\n>  \tdefault:","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 08763BDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Jun 2025 11:57:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1122C68DD0;\n\tTue, 17 Jun 2025 13:57:20 +0200 (CEST)","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 3024268DB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 13:57:18 +0200 (CEST)","from mail-wm1-f72.google.com (mail-wm1-f72.google.com\n\t[209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-361-UYrQNtkFMt2Is-SGfOJR8w-1; Tue, 17 Jun 2025 07:57:15 -0400","by mail-wm1-f72.google.com with SMTP id\n\t5b1f17b1804b1-4530ec2c87cso28888675e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 04:57:15 -0700 (PDT)","from mzamazal-thinkpadp1gen7.tpbc.csb ([85.93.96.130])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-3a568b2a6a5sm13708633f8f.74.2025.06.17.04.57.12\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 17 Jun 2025 04:57:13 -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=\"WElvPNOC\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1750161437;\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=QrNA77jvuFFRn1J7urqHLBJkLzEYvtc6Hle3+QnZLHs=;\n\tb=WElvPNOC3jDug+jG3wqYHe2Lh7rhFPiiS/eHKYcb5vrR275NizFoJXa+4qdETbmcU+XbOG\n\tOH5nU0zxZPAA7DKqsWUlRxpPPM92mQGYeYSnHgfXkvfOTKjLrhHfSUBHmmwGtMxHHb9AYm\n\tdTuOdpJ/f1AVdJ/Z2I8LkYqhMN3PkkE=","X-MC-Unique":"UYrQNtkFMt2Is-SGfOJR8w-1","X-Mimecast-MFC-AGG-ID":"UYrQNtkFMt2Is-SGfOJR8w_1750161434","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750161434; x=1750766234;\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=QrNA77jvuFFRn1J7urqHLBJkLzEYvtc6Hle3+QnZLHs=;\n\tb=LgnEYEb6H3JEr3wOEs8e+YUGRCIVRRN+fnXtxAoVKLqKw8i0w9SkKxrY93rqLBAzIh\n\t0SUtmgGI7GhS1FPL2j3axTag9hPmhtDIR77aIGun7PBp2UWijOOczaZ3aY8L64LCxEfI\n\tZ3TeVgMnK/RTlSaGRIPqa9v9+FU7R0yFHQqWloYAuNriev0xOX8LZpcnHIsS8rP02X6u\n\tCUIUSxg8LiwZLxPSotSpvjNsBuTvljsc3QdvoKPgaBNxDo0p9Us+Dtp428EMW7Es1zN9\n\tKbEOXkmGk8a33hAdK5XOVuEapXnm9Eg4IUyD+1v5kpRS5zb6+a6OqYTU6Bxpow0qFTPD\n\tZpDg==","X-Gm-Message-State":"AOJu0YwBnFZJJ48M5Mocs7d4dc8Fht2dsZUdPbgdYqTvAokLRAU2ukEO\n\tgnQiKTF+5V913FNtqKlWWvQbQEGoYoESv1HBMK6s9Jxz0UnqQfLBDxN8U5/ZundCXcMuxSlzrgL\n\t8X8vRZNq5++24uMlkWt56zTqVKnxMGFDTseclQjHt4XptTWbuUmq1NlNmfqzcSr8J6hjd+aVq7l\n\tdSQCRdL8Asj1iD+5p9R1TcVnY6FRLroLhDb9x8pUZuEy9iqxduUPYRTUZCNvU=","X-Gm-Gg":"ASbGncu9vuA9qqsvvWnaVTVxhceRTxC1xZwp4MLUvRElDOcf5ev+RhD+eXXi0mhDGDe\n\tVBhl2lkKLu/UD39ea+HI4VUTJxjc8WWq+xuf2gAXiXo99AEdJeWu+EkkZmx1Mes7lQfwUAhFZtQ\n\tmrcI8eQ/497HRJ8Pu+8iO7vpD32N+WbV12RIWbptOvAXZACk/yuTwe3R+aP0aR89OQ0H5dUe4Wj\n\trZBlsiXP9CJfc2mdjdBFE2BsUotyKPNsMCCLOvPQ8gLEzANoaRqu8U5whfMkvvtbrED9+2DllmF\n\tMaHBvnT9X+kbLlWtmREyL4CVfeBbi0+nXehYBGaEPA6u3w4=","X-Received":["by 2002:a05:600c:3515:b0:44a:b478:1387 with SMTP id\n\t5b1f17b1804b1-45353d0a924mr20086295e9.17.1750161434145; \n\tTue, 17 Jun 2025 04:57:14 -0700 (PDT)","by 2002:a05:600c:3515:b0:44a:b478:1387 with SMTP id\n\t5b1f17b1804b1-45353d0a924mr20085875e9.17.1750161433637; \n\tTue, 17 Jun 2025 04:57:13 -0700 (PDT)"],"X-Google-Smtp-Source":"AGHT+IGFHlK2y8xfpfcCWc/8foI/ZMDVUieYu2u0EiAXuGeg4bTiCu2+FfRHKmjaJQvLtEPONGLm+g==","From":"Milan Zamazal <mzamazal@redhat.com>","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","In-Reply-To":"<20250611013245.133785-17-bryan.odonoghue@linaro.org> (Bryan\n\tO'Donoghue's message of \"Wed, 11 Jun 2025 02:32:26 +0100\")","References":"<20250611013245.133785-1-bryan.odonoghue@linaro.org>\n\t<20250611013245.133785-17-bryan.odonoghue@linaro.org>","Date":"Tue, 17 Jun 2025 13:57:11 +0200","Message-ID":"<854iwebmy0.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":"PoSOOVutIs4Icyp0UwIgYfOVwsS2-1h_1gj6ZhTE1vg_1750161434","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":34518,"web_url":"https://patchwork.libcamera.org/comment/34518/","msgid":"<073a0cb7-daf0-498c-82ef-c4ab4b543c20@linaro.org>","date":"2025-06-17T12:01:09","subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 17/06/2025 12:57, Milan Zamazal wrote:\n>> Moving the GL shaders to src/libcamera/assets/shader\n> The patch moves them to include/libcamera/internal/shaders actually.\n> src/... looks like a logically better location, so why moving them to\n> include/?\n\nI don't recall if that was a choice or done for a reason, i.e. getting a \npath to the resource that both the qcam utility and then subsequent \nchanges can iterate/change.\n\nI remember putting the files into another location - probably under src \nbut then deciding to change that because it made X easier.\n\nI don't recall what that X was though, it was literally last year.\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 6D2A7C3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Jun 2025 12:01:16 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B7DAB68DD0;\n\tTue, 17 Jun 2025 14:01:15 +0200 (CEST)","from mail-wm1-x331.google.com (mail-wm1-x331.google.com\n\t[IPv6:2a00:1450:4864:20::331])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8130F68DB1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 14:01:14 +0200 (CEST)","by mail-wm1-x331.google.com with SMTP id\n\t5b1f17b1804b1-451dbe494d6so71825555e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 05:01:14 -0700 (PDT)","from [192.168.0.35] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-3a568a547ecsm14020517f8f.17.2025.06.17.05.01.11\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tTue, 17 Jun 2025 05:01:11 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"VHGOLhFf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1750161674; x=1750766474;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:from:content-language\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=G7dD7NL3ZHomAn6avoQe1k+Hixxdr9+oVkGaApe2H1E=;\n\tb=VHGOLhFfAuATfosAat5uR4ZFYvH31A46GDZHtQNV8/0f/K3b1hfSnMx1RDrM66UJjU\n\titQkJGJdYd4KSjVWcu5BSb9byq4f2Cc3aQ/PHEc5dCy2rMsQICpy4ZN5SQVRU2BReMGC\n\tLfN/+L8h1F167+0Grt7omQHJWP4jKZ0vSbKZ5wfw7gg39jO8FYeRgcipkhw45ZqVO6R2\n\tVuClOs8UytWVLLE7b1jxwUOpp48LGeBe4+oxc+GBcf63JwbgWn/dJMLhj9LZo1pdKI0t\n\tKSRHEsuMTHrg6qxvCTURXN44V5z53tlhaoKMnUhkwDx/5LIruQCvgP4rpQjqY2u/0nHb\n\tQozQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750161674; x=1750766474;\n\th=content-transfer-encoding:in-reply-to:from:content-language\n\t:references:cc:to:subject:user-agent:mime-version:date:message-id\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=G7dD7NL3ZHomAn6avoQe1k+Hixxdr9+oVkGaApe2H1E=;\n\tb=wwSnzP7OGZlNv5VDgnijTvBLendr7YtdkHR/eLpj5aCErFrjzfL4EfrjqG86NXZVvh\n\tMhT2XhOJYFZdB7nvvX2sKGYvuV1+d3W6EtfGXLROsIQarlkM9jcH4k6MWCGN0LB/00Re\n\tuuo8MojojbCY2FEUmBaPGq88R7TrjIrkQ/V4o2Ah9GOed0mhTMSOJCr21ZF1kqnSi3Lt\n\tVgBzFarMnfXTsZAVNmMb50+jiYqkW9hEtKlTdoB+6U6V/SAGeTbFYyHylSvSI/EN8i8I\n\to8ST6doDyc61ehzKAI2OSXMDDtyQeWK3rwMbj6Px6xXN3mUbxIKlDSgQ7Vzf0z8LAC5O\n\tJEZQ==","X-Gm-Message-State":"AOJu0YxBf4WxMaS6NdyIszCrQCd/n6IIxioXd6bSOxfat/Ng7Q9ZN1PH\n\t7ie4h8tdOeU65WGODhgTWekoamNj6XL4c92PCiXpn0Px9O3NTR/FTpNFwZVp/ALxOtoY7s7Q/9s\n\tgKsrOOKw=","X-Gm-Gg":"ASbGncvQ3+fNxJ1ievCoWYAvNbmQ4ou29fzHAJJtnCUX9WTMasWPjygfUfN2QfEV7ZM\n\twgPf4qYkY3lxvJnIl/yGPrBCbFE3g1yTu6hnILcccx0FqhhmAG77ZiixSr5Jp3EuHhAfuX3uXAx\n\tk/zSAKmuPha32A6DcJ9oP1LLotZG2IRLlwEMsjt7iebp3P4c+zTCYa8oc5ZVBQnZIuwBW/ovChZ\n\tQRjfCVJpcewL9fLsDKMcI3McKmpO026ImDFDsp9qCK5bCJoPMth4tVLeDsJEKogZl17UR78/Adr\n\t8YxG6Bxie6PAk0QmMQP/q0UaZz9G3wRoRdxmICjr4ktSf7pWG6geobQirPKWKMtrlBEOfEYMKCt\n\tjVWxEdYigmOvZLDHhT8dX9iqaTWU=","X-Google-Smtp-Source":"AGHT+IGtqFGQmH5ESY/Q4KMtPsq7SrQytzbzhVRzoLnAxgnfQ+dH4/55f0EeY1WG1OZtMuFEqPh7RA==","X-Received":"by 2002:a05:6000:4818:b0:3a5:2e59:833a with SMTP id\n\tffacd0b85a97d-3a57238b9fcmr10512021f8f.1.1750161672025; \n\tTue, 17 Jun 2025 05:01:12 -0700 (PDT)","Message-ID":"<073a0cb7-daf0-498c-82ef-c4ab4b543c20@linaro.org>","Date":"Tue, 17 Jun 2025 13:01:09 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 16/35] libcamera: shaders: Move GL shader programs to\n\tsrc/libcamera/assets/shader","To":"Milan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20250611013245.133785-1-bryan.odonoghue@linaro.org>\n\t<20250611013245.133785-17-bryan.odonoghue@linaro.org>\n\t<854iwebmy0.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","Content-Language":"en-US","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","In-Reply-To":"<854iwebmy0.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>"}}]