[{"id":37581,"web_url":"https://patchwork.libcamera.org/comment/37581/","msgid":"<2ecf9dd3-5de3-4110-bb5e-8c33692d25c2@nxsw.ie>","date":"2026-01-12T13:03:32","subject":"Re: [PATCH 2/2] Revert \"libcamera: software_isp: gbm: Add a GBM\n\thelper class for GPU surface access\"","submitter":{"id":226,"url":"https://patchwork.libcamera.org/api/people/226/","name":"Bryan O'Donoghue","email":"bod.linux@nxsw.ie"},"content":"On 10/01/2026 22:13, Robert Mader wrote:\n> GBM is not used any more - remove the helper class.\n> \n> This reverts commit c60b1ce8193841c2742b655097bb39ccbcb417c2.\n> \n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> ---\n>   include/libcamera/internal/gbm.h       |  55 -------------\n>   include/libcamera/internal/meson.build |   1 -\n>   src/libcamera/gbm.cpp                  | 107 -------------------------\n>   src/libcamera/meson.build              |  12 +--\n>   4 files changed, 1 insertion(+), 174 deletions(-)\n>   delete mode 100644 include/libcamera/internal/gbm.h\n>   delete mode 100644 src/libcamera/gbm.cpp\n> \n> diff --git a/include/libcamera/internal/gbm.h b/include/libcamera/internal/gbm.h\n> deleted file mode 100644\n> index c10be06c1..000000000\n> --- a/include/libcamera/internal/gbm.h\n> +++ /dev/null\n> @@ -1,55 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2024, Linaro Ltd.\n> - *\n> - * Authors:\n> - * Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> - *\n> - * Helper class for managing GBM interactions\n> - */\n> -\n> -#pragma once\n> -\n> -#include <gbm.h>\n> -\n> -#include <libcamera/base/log.h>\n> -#include <libcamera/base/unique_fd.h>\n> -\n> -#include <libcamera/formats.h>\n> -\n> -namespace libcamera {\n> -\n> -LOG_DECLARE_CATEGORY(GBM)\n> -\n> -class GBM\n> -{\n> -public:\n> -\tGBM();\n> -\t~GBM();\n> -\n> -\tint createDevice();\n> -\n> -\t/**\n> -\t * \\brief Retrieve the GBM device handle\n> -\t *\n> -\t * \\return Pointer to the gbm_device structure, or nullptr if the device\n> -\t * has not been created\n> -\t */\n> -\tstruct gbm_device *device() const { return gbmDevice_; }\n> -\n> -\t/**\n> -\t * \\brief Retrieve the pixel format\n> -\t *\n> -\t * \\return The PixelFormat used by this GBM instance (ARGB8888)\n> -\t */\n> -\tPixelFormat format() const { return format_; }\n> -\n> -private:\n> -\tLIBCAMERA_DISABLE_COPY_AND_MOVE(GBM)\n> -\n> -\tUniqueFD fd_;\n> -\tstruct gbm_device *gbmDevice_ = nullptr;\n> -\tPixelFormat format_;\n> -};\n> -\n> -} /* namespace libcamera */\n> diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build\n> index dc48619e5..4d2a09bd7 100644\n> --- a/include/libcamera/internal/meson.build\n> +++ b/include/libcamera/internal/meson.build\n> @@ -24,7 +24,6 @@ libcamera_internal_headers = files([\n>       'formats.h',\n>       'framebuffer.h',\n>       'egl.h',\n> -    'gbm.h',\n>       'global_configuration.h',\n>       'ipa_data_serializer.h',\n>       'ipa_manager.h',\n> diff --git a/src/libcamera/gbm.cpp b/src/libcamera/gbm.cpp\n> deleted file mode 100644\n> index d37808b0c..000000000\n> --- a/src/libcamera/gbm.cpp\n> +++ /dev/null\n> @@ -1,107 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2024, Linaro Ltd.\n> - *\n> - * Authors:\n> - * Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> - *\n> - * Helper class for managing GBM interactions\n> - */\n> -\n> -#include \"libcamera/internal/gbm.h\"\n> -\n> -#include <errno.h>\n> -#include <fcntl.h>\n> -#include <sys/ioctl.h>\n> -#include <sys/mman.h>\n> -#include <unistd.h>\n> -\n> -#include <linux/dma-buf.h>\n> -#include <linux/dma-heap.h>\n> -\n> -namespace libcamera {\n> -\n> -LOG_DEFINE_CATEGORY(GBM)\n> -\n> -/**\n> - * \\class GBM\n> - * \\brief Helper class for managing GBM interactions\n> - *\n> - * The GBM class provides a simplified interface for creating and managing\n> - * GBM devices. It handles the initialization and teardown of GBM devices\n> - * used for buffer allocation in graphics and camera pipelines.\n> - *\n> - * This class is responsible for opening a DRI render node, creating a GBM\n> - * device, and providing access to the device and its associated pixel format.\n> - */\n> -\n> -/**\n> - *\\var GBM::fd_\n> - *\\brief file descriptor to DRI device\n> - */\n> -\n> -/**\n> - *\\var GBM::gbmDevice_\n> - *\\brief Pointer to GBM device structure derived from fd_\n> - */\n> -\n> -/**\n> - *\\var GBM::format_\n> - *\\brief Pixel format the GBM surface was created in\n> - */\n> -\n> -/**\n> - *\\brief GBM constructor.\n> - *\n> - * Creates a GBM instance with uninitialised state.\n> - */\n> -GBM::GBM()\n> -{\n> -}\n> -\n> -/**\n> - *\\brief GBM destructor\n> - *\n> - * Cleans up the GBM device if it was successfully created, and closes\n> - * the associated file descriptor.\n> - */\n> -GBM::~GBM()\n> -{\n> -\tif (gbmDevice_)\n> -\t\tgbm_device_destroy(gbmDevice_);\n> -}\n> -\n> -/**\n> - * \\brief Create and initialize a GBM device\n> - *\n> - * \\todo Get dri device name from envOption setting\n> - *\n> - * Opens the DRI render node (/dev/dri/renderD128) and creates a GBM\n> - * device using the libgbm library. Sets the default pixel format to\n> - * ARGB8888.\n> - *\n> - * \\return 0 on success, or a negative error code on failure\n> - */\n> -int GBM::createDevice()\n> -{\n> -\tconst char dri_node[] = \"/dev/dri/renderD128\";\n> -\n> -\tint fd = open(dri_node, O_RDWR | O_CLOEXEC | O_NOCTTY);\n> -\tif (fd < 0) {\n> -\t\tLOG(GBM, Error) << \"Open \" << dri_node << \" fail \" << strerror(errno);\n> -\t\treturn -errno;\n> -\t}\n> -\tfd_ = UniqueFD(fd);\n> -\n> -\tgbmDevice_ = gbm_create_device(fd_.get());\n> -\tif (!gbmDevice_) {\n> -\t\tLOG(GBM, Error) << \"gbm_create_device fail\" << strerror(errno);\n> -\t\treturn -errno;\n> -\t}\n> -\n> -\tformat_ = libcamera::formats::ARGB8888;\n> -\n> -\treturn 0;\n> -}\n> -\n> -} /* namespace libcamera */\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 6f952bd98..d15943586 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -70,15 +70,6 @@ libcamera_deps = []\n>   libatomic = cc.find_library('atomic', required : false)\n>   libthreads = dependency('threads')\n> \n> -libgbm = dependency('gbm', required : false)\n> -gbm_works = cc.check_header('gbm.h', required: false)\n> -\n> -if libgbm.found() and gbm_works\n> -    libcamera_internal_sources += files([\n> -        'gbm.cpp',\n> -    ])\n> -endif\n> -\n>   mesa_works = cc.check_header('EGL/egl.h', required: false)\n>   libegl = dependency('egl', required : false)\n>   libglesv2 = dependency('glesv2', required : false)\n> @@ -91,7 +82,7 @@ if libglesv2.found()\n>       config_h.set('HAVE_GLESV2', 1)\n>   endif\n> \n> -if mesa_works and gbm_works\n> +if mesa_works\n>       libcamera_internal_sources += files([\n>           'egl.cpp',\n>       ])\n> @@ -209,7 +200,6 @@ libcamera_deps += [\n>       libcrypto,\n>       libdl,\n>       libegl,\n> -    libgbm,\n>       libglesv2,\n>       liblttng,\n>       libudev,\n> --\n> 2.52.0\n> \n\nReviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\nTested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # sm8250/rb5,\nx1e/Dell Insprion14p\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 2CF53BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 13:03:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id DB24461FBE;\n\tMon, 12 Jan 2026 14:03:36 +0100 (CET)","from tor.source.kernel.org (tor.source.kernel.org\n\t[IPv6:2600:3c04:e001:324:0:1991:8:25])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C26546142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 14:03:35 +0100 (CET)","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby tor.source.kernel.org (Postfix) with ESMTP id 0940D6001D;\n\tMon, 12 Jan 2026 13:03:35 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 3E26BC16AAE;\n\tMon, 12 Jan 2026 13:03:34 +0000 (UTC)"],"Message-ID":"<2ecf9dd3-5de3-4110-bb5e-8c33692d25c2@nxsw.ie>","Date":"Mon, 12 Jan 2026 13:03:32 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 2/2] Revert \"libcamera: software_isp: gbm: Add a GBM\n\thelper class for GPU surface access\"","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<_KvGrIp8nmu4b1hDBExzsTP2OTAzjh6LVtqE-k5o5MnK6jZaf_Ksf2fP_L3qRif8DQ9qxrwp6txnU8t-kce6IA==@protonmail.internalid>\n\t<20260110221337.145378-2-robert.mader@collabora.com>","From":"Bryan O'Donoghue <bod.linux@nxsw.ie>","Content-Language":"en-US","In-Reply-To":"<20260110221337.145378-2-robert.mader@collabora.com>","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":37668,"web_url":"https://patchwork.libcamera.org/comment/37668/","msgid":"<6496df14-6966-41d0-a843-c486d8334cc3@ideasonboard.com>","date":"2026-01-15T09:45:57","subject":"Re: [PATCH 2/2] Revert \"libcamera: software_isp: gbm: Add a GBM\n\thelper class for GPU surface access\"","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 01. 10. 23:13 keltezéssel, Robert Mader írta:\n> GBM is not used any more - remove the helper class.\n> \n> This reverts commit c60b1ce8193841c2742b655097bb39ccbcb417c2.\n> \n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> ---\n\nLooks ok to me.\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n>   include/libcamera/internal/gbm.h       |  55 -------------\n>   include/libcamera/internal/meson.build |   1 -\n>   src/libcamera/gbm.cpp                  | 107 -------------------------\n>   src/libcamera/meson.build              |  12 +--\n>   4 files changed, 1 insertion(+), 174 deletions(-)\n>   delete mode 100644 include/libcamera/internal/gbm.h\n>   delete mode 100644 src/libcamera/gbm.cpp\n> \n> diff --git a/include/libcamera/internal/gbm.h b/include/libcamera/internal/gbm.h\n> deleted file mode 100644\n> index c10be06c1..000000000\n> --- a/include/libcamera/internal/gbm.h\n> +++ /dev/null\n> @@ -1,55 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2024, Linaro Ltd.\n> - *\n> - * Authors:\n> - * Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> - *\n> - * Helper class for managing GBM interactions\n> - */\n> -\n> -#pragma once\n> -\n> -#include <gbm.h>\n> -\n> -#include <libcamera/base/log.h>\n> -#include <libcamera/base/unique_fd.h>\n> -\n> -#include <libcamera/formats.h>\n> -\n> -namespace libcamera {\n> -\n> -LOG_DECLARE_CATEGORY(GBM)\n> -\n> -class GBM\n> -{\n> -public:\n> -\tGBM();\n> -\t~GBM();\n> -\n> -\tint createDevice();\n> -\n> -\t/**\n> -\t * \\brief Retrieve the GBM device handle\n> -\t *\n> -\t * \\return Pointer to the gbm_device structure, or nullptr if the device\n> -\t * has not been created\n> -\t */\n> -\tstruct gbm_device *device() const { return gbmDevice_; }\n> -\n> -\t/**\n> -\t * \\brief Retrieve the pixel format\n> -\t *\n> -\t * \\return The PixelFormat used by this GBM instance (ARGB8888)\n> -\t */\n> -\tPixelFormat format() const { return format_; }\n> -\n> -private:\n> -\tLIBCAMERA_DISABLE_COPY_AND_MOVE(GBM)\n> -\n> -\tUniqueFD fd_;\n> -\tstruct gbm_device *gbmDevice_ = nullptr;\n> -\tPixelFormat format_;\n> -};\n> -\n> -} /* namespace libcamera */\n> diff --git a/include/libcamera/internal/meson.build b/include/libcamera/internal/meson.build\n> index dc48619e5..4d2a09bd7 100644\n> --- a/include/libcamera/internal/meson.build\n> +++ b/include/libcamera/internal/meson.build\n> @@ -24,7 +24,6 @@ libcamera_internal_headers = files([\n>       'formats.h',\n>       'framebuffer.h',\n>       'egl.h',\n> -    'gbm.h',\n>       'global_configuration.h',\n>       'ipa_data_serializer.h',\n>       'ipa_manager.h',\n> diff --git a/src/libcamera/gbm.cpp b/src/libcamera/gbm.cpp\n> deleted file mode 100644\n> index d37808b0c..000000000\n> --- a/src/libcamera/gbm.cpp\n> +++ /dev/null\n> @@ -1,107 +0,0 @@\n> -/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> -/*\n> - * Copyright (C) 2024, Linaro Ltd.\n> - *\n> - * Authors:\n> - * Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> - *\n> - * Helper class for managing GBM interactions\n> - */\n> -\n> -#include \"libcamera/internal/gbm.h\"\n> -\n> -#include <errno.h>\n> -#include <fcntl.h>\n> -#include <sys/ioctl.h>\n> -#include <sys/mman.h>\n> -#include <unistd.h>\n> -\n> -#include <linux/dma-buf.h>\n> -#include <linux/dma-heap.h>\n> -\n> -namespace libcamera {\n> -\n> -LOG_DEFINE_CATEGORY(GBM)\n> -\n> -/**\n> - * \\class GBM\n> - * \\brief Helper class for managing GBM interactions\n> - *\n> - * The GBM class provides a simplified interface for creating and managing\n> - * GBM devices. It handles the initialization and teardown of GBM devices\n> - * used for buffer allocation in graphics and camera pipelines.\n> - *\n> - * This class is responsible for opening a DRI render node, creating a GBM\n> - * device, and providing access to the device and its associated pixel format.\n> - */\n> -\n> -/**\n> - *\\var GBM::fd_\n> - *\\brief file descriptor to DRI device\n> - */\n> -\n> -/**\n> - *\\var GBM::gbmDevice_\n> - *\\brief Pointer to GBM device structure derived from fd_\n> - */\n> -\n> -/**\n> - *\\var GBM::format_\n> - *\\brief Pixel format the GBM surface was created in\n> - */\n> -\n> -/**\n> - *\\brief GBM constructor.\n> - *\n> - * Creates a GBM instance with uninitialised state.\n> - */\n> -GBM::GBM()\n> -{\n> -}\n> -\n> -/**\n> - *\\brief GBM destructor\n> - *\n> - * Cleans up the GBM device if it was successfully created, and closes\n> - * the associated file descriptor.\n> - */\n> -GBM::~GBM()\n> -{\n> -\tif (gbmDevice_)\n> -\t\tgbm_device_destroy(gbmDevice_);\n> -}\n> -\n> -/**\n> - * \\brief Create and initialize a GBM device\n> - *\n> - * \\todo Get dri device name from envOption setting\n> - *\n> - * Opens the DRI render node (/dev/dri/renderD128) and creates a GBM\n> - * device using the libgbm library. Sets the default pixel format to\n> - * ARGB8888.\n> - *\n> - * \\return 0 on success, or a negative error code on failure\n> - */\n> -int GBM::createDevice()\n> -{\n> -\tconst char dri_node[] = \"/dev/dri/renderD128\";\n> -\n> -\tint fd = open(dri_node, O_RDWR | O_CLOEXEC | O_NOCTTY);\n> -\tif (fd < 0) {\n> -\t\tLOG(GBM, Error) << \"Open \" << dri_node << \" fail \" << strerror(errno);\n> -\t\treturn -errno;\n> -\t}\n> -\tfd_ = UniqueFD(fd);\n> -\n> -\tgbmDevice_ = gbm_create_device(fd_.get());\n> -\tif (!gbmDevice_) {\n> -\t\tLOG(GBM, Error) << \"gbm_create_device fail\" << strerror(errno);\n> -\t\treturn -errno;\n> -\t}\n> -\n> -\tformat_ = libcamera::formats::ARGB8888;\n> -\n> -\treturn 0;\n> -}\n> -\n> -} /* namespace libcamera */\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 6f952bd98..d15943586 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -70,15 +70,6 @@ libcamera_deps = []\n>   libatomic = cc.find_library('atomic', required : false)\n>   libthreads = dependency('threads')\n>   \n> -libgbm = dependency('gbm', required : false)\n> -gbm_works = cc.check_header('gbm.h', required: false)\n> -\n> -if libgbm.found() and gbm_works\n> -    libcamera_internal_sources += files([\n> -        'gbm.cpp',\n> -    ])\n> -endif\n> -\n>   mesa_works = cc.check_header('EGL/egl.h', required: false)\n>   libegl = dependency('egl', required : false)\n>   libglesv2 = dependency('glesv2', required : false)\n> @@ -91,7 +82,7 @@ if libglesv2.found()\n>       config_h.set('HAVE_GLESV2', 1)\n>   endif\n>   \n> -if mesa_works and gbm_works\n> +if mesa_works\n>       libcamera_internal_sources += files([\n>           'egl.cpp',\n>       ])\n> @@ -209,7 +200,6 @@ libcamera_deps += [\n>       libcrypto,\n>       libdl,\n>       libegl,\n> -    libgbm,\n>       libglesv2,\n>       liblttng,\n>       libudev,","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 BB285C3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jan 2026 09:46:02 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4BA4861FC3;\n\tThu, 15 Jan 2026 10:46:02 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D670061F61\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 10:46:00 +0100 (CET)","from [192.168.33.20] (185.221.143.114.nat.pool.zt.hu\n\t[185.221.143.114])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7D5CD4D3;\n\tThu, 15 Jan 2026 10:45:33 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"YXWy6wpg\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768470333;\n\tbh=rXkxrTr8RXjH5zVhgK9p4jHydOwG8M+QcVa338Gv8DU=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=YXWy6wpgt/xdM1NkNpCS7N6W8i50K0Uwn80JEJmXtZ3HKmgDEQJVVNyLWYZ2ndfP5\n\tRDUev8OD7TMPxdP6fIeMDTB6HVQKexTv+wr9/QGjn+NF+JsCCmulSY6VjwtObov/wV\n\tyNLa+j8kuqQxmPBuWh3zsH4Et0DW4adH3kcQ3M+4=","Message-ID":"<6496df14-6966-41d0-a843-c486d8334cc3@ideasonboard.com>","Date":"Thu, 15 Jan 2026 10:45:57 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 2/2] Revert \"libcamera: software_isp: gbm: Add a GBM\n\thelper class for GPU surface access\"","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<20260110221337.145378-2-robert.mader@collabora.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260110221337.145378-2-robert.mader@collabora.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>,\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>"}}]