[{"id":37752,"web_url":"https://patchwork.libcamera.org/comment/37752/","msgid":"<20260119205113.GB18962@pendragon.ideasonboard.com>","date":"2026-01-19T20:51:13","subject":"Re: [PATCH v2 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jan 19, 2026 at 09:28:34PM +0100, Robert Mader wrote:\n> Which appears to be a better fit for the use-case at hand:\n\nMesa surfaceless platform appears to be ...\n\n> 1. Like GBM it is Mesa specific, so no change in supported setups is\n>    expected. If ever required, a fallback to the generic device platform\n>    could be added on top.\n> 2. It leaves the complexity of selecting a renderer device to the\n>    driver, reducing code and dependencies.\n> 3. It allows to use llvmpipe / software drivers without dri device,\n>    which can be useful on CI or debugging (with LIBGL_ALWAYS_SOFTWARE=1).\n> \n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n> Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # sm8250/rb5, x1e/Dell Insprion14p\n> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n> Tested-by: Milan Zamazal <mzamazal@redhat.com> # TI AM69\n> Tested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> # ThinkPad X1 Yoga Gen 7 + ov2740\n> ---\n>  include/libcamera/internal/egl.h           |  4 +---\n>  src/libcamera/egl.cpp                      | 12 +++++-------\n>  src/libcamera/software_isp/debayer_egl.cpp |  7 ++-----\n>  src/libcamera/software_isp/debayer_egl.h   |  1 -\n>  4 files changed, 8 insertions(+), 16 deletions(-)\n> \n> diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h\n> index f007f448a..630345ea7 100644\n> --- a/include/libcamera/internal/egl.h\n> +++ b/include/libcamera/internal/egl.h\n> @@ -16,8 +16,6 @@\n>  #include <libcamera/base/span.h>\n>  #include <libcamera/base/utils.h>\n>  \n> -#include \"libcamera/internal/gbm.h\"\n> -\n>  #define EGL_EGLEXT_PROTOTYPES\n>  #include <EGL/egl.h>\n>  #include <EGL/eglext.h>\n> @@ -96,7 +94,7 @@ public:\n>  \teGL();\n>  \t~eGL();\n>  \n> -\tint initEGLContext(GBM *gbmContext);\n> +\tint initEGLContext();\n>  \n>  \tint createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n>  \tint createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n> diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n> index da563ee09..7ff1b5ea2 100644\n> --- a/src/libcamera/egl.cpp\n> +++ b/src/libcamera/egl.cpp\n> @@ -256,24 +256,22 @@ void eGL::createTexture2D(eGLImage &eglImage, GLint format, uint32_t width, uint\n>  \n>  /**\n>   * \\brief Initialise the EGL context\n> - * \\param[in] gbmContext Pointer to initialised GBM context\n>   *\n> - * Sets up the EGL display from the GBM device, creates an OpenGL ES 2.0\n> - * context, and retrieves function pointers for required extensions\n> - * including:\n> + * Sets up the EGL display, creates an OpenGL ES 2.0 context, and retrieves\n> + * function pointers for required extensions including:\n>   * - eglCreateImageKHR / eglDestroyImageKHR\n>   * - glEGLImageTargetTexture2DOES\n>   *\n>   * \\return 0 on success, or -ENODEV on failure\n>   */\n> -int eGL::initEGLContext(GBM *gbmContext)\n> +int eGL::initEGLContext()\n>  {\n>  \tEGLint configAttribs[] = {\n>  \t\tEGL_RED_SIZE, 8,\n>  \t\tEGL_GREEN_SIZE, 8,\n>  \t\tEGL_BLUE_SIZE, 8,\n>  \t\tEGL_ALPHA_SIZE, 8,\n> -\t\tEGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n> +\t\tEGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n>  \t\tEGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n>  \t\tEGL_NONE\n>  \t};\n> @@ -291,7 +289,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n>  \t\tgoto fail;\n>  \t}\n>  \n> -\tdisplay_ = eglGetDisplay(gbmContext->device());\n> +\tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n\n\tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr,\n\t\t\t\t\t nullptr);\n\nBut according to\nhttps://registry.khronos.org/EGL/extensions/MESA/EGL_MESA_platform_surfaceless.txt\nthe native_display parameter must be EGL_DEFAULT_DISPLAY, so this would\nbe\n\n\tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA,\n\t\t\t\t\t EGL_DEFAULT_DISPLAY,\n\t\t\t\t\t nullptr);\n\n>  \tif (display_ == EGL_NO_DISPLAY) {\n>  \t\tLOG(eGL, Error) << \"Unable to get EGL display\";\n>  \t\tgoto fail;\n> diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp\n> index 9693d7252..c85c7d6cd 100644\n> --- a/src/libcamera/software_isp/debayer_egl.cpp\n> +++ b/src/libcamera/software_isp/debayer_egl.cpp\n> @@ -142,7 +142,7 @@ int DebayerEGL::initBayerShaders(PixelFormat inputFormat, PixelFormat outputForm\n>  \n>  \t/*\n>  \t * Tell shaders how to re-order output taking account of how the\n> -\t * pixels are actually stored by GBM\n> +\t * pixels are actually stored by EGL\n\nWhile at it let's improve the comment formatting:\n\n\t * Tell shaders how to re-order output taking account of how the pixels\n\t * are actually stored by EGL.\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n>  \t */\n>  \tswitch (outputFormat) {\n>  \tcase formats::ARGB8888:\n> @@ -586,10 +586,7 @@ int DebayerEGL::start()\n>  {\n>  \tGLint maxTextureImageUnits;\n>  \n> -\tif (gbmSurface_.createDevice())\n> -\t\treturn -ENODEV;\n> -\n> -\tif (egl_.initEGLContext(&gbmSurface_))\n> +\tif (egl_.initEGLContext())\n>  \t\treturn -ENODEV;\n>  \n>  \tglGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureImageUnits);\n> diff --git a/src/libcamera/software_isp/debayer_egl.h b/src/libcamera/software_isp/debayer_egl.h\n> index a5033bc63..cfbaf8e9d 100644\n> --- a/src/libcamera/software_isp/debayer_egl.h\n> +++ b/src/libcamera/software_isp/debayer_egl.h\n> @@ -113,7 +113,6 @@ private:\n>  \tRectangle window_;\n>  \tstd::unique_ptr<SwStatsCpu> stats_;\n>  \teGL egl_;\n> -\tGBM gbmSurface_;\n>  \tuint32_t width_;\n>  \tuint32_t height_;\n>  \tGLint glFormat_;","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 4A6A7BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 20:51:38 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6032661FB9;\n\tMon, 19 Jan 2026 21:51:37 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2D799606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 21:51:36 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-152.bb.dnainternet.fi\n\t[81.175.209.152])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 0205A308;\n\tMon, 19 Jan 2026 21:51:04 +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=\"wXLmGJvh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768855865;\n\tbh=OFHNcPCb2TyTRpygrnUqfDl9mL4MYyFbl8zJ6HB7ZGU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=wXLmGJvhkZ3CQYurRLZ+Mq2J/dglEEvKSabhYsjydIuZ/z0Ey1qVzd6Jsw8Nus317\n\trhOQmAe8BOrp07TfyS6gIQmUl9DF6H4m9695uyIb+1X4uQD3r9RPb7OgOf1J4jUyLg\n\tXIYObawxtGQ81FVv74AKcxC/wqYzGf3uCY1b0S5w=","Date":"Mon, 19 Jan 2026 22:51:13 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Robert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org, Bryan O'Donoghue\n\t<bryan.odonoghue@linaro.org>,  Milan Zamazal <mzamazal@redhat.com>,\n\t=?utf-8?b?QmFybmFiw6FzIFDFkWN6?= =?utf-8?q?e?=\n\t<barnabas.pocze@ideasonboard.com>","Subject":"Re: [PATCH v2 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","Message-ID":"<20260119205113.GB18962@pendragon.ideasonboard.com>","References":"<20260119202835.372125-1-robert.mader@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20260119202835.372125-1-robert.mader@collabora.com>","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":37757,"web_url":"https://patchwork.libcamera.org/comment/37757/","msgid":"<b9585935-88ed-4288-9197-4db0f5f3928d@collabora.com>","date":"2026-01-20T12:24:28","subject":"Re: [PATCH v2 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":140,"url":"https://patchwork.libcamera.org/api/people/140/","name":"Robert Mader","email":"robert.mader@collabora.com"},"content":"All done in v3, thanks!\n\nOn 19.01.26 21:51, Laurent Pinchart wrote:\n> On Mon, Jan 19, 2026 at 09:28:34PM +0100, Robert Mader wrote:\n>> Which appears to be a better fit for the use-case at hand:\n> Mesa surfaceless platform appears to be ...\n>\n>> 1. Like GBM it is Mesa specific, so no change in supported setups is\n>>     expected. If ever required, a fallback to the generic device platform\n>>     could be added on top.\n>> 2. It leaves the complexity of selecting a renderer device to the\n>>     driver, reducing code and dependencies.\n>> 3. It allows to use llvmpipe / software drivers without dri device,\n>>     which can be useful on CI or debugging (with LIBGL_ALWAYS_SOFTWARE=1).\n>>\n>> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n>> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n>> Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> # sm8250/rb5, x1e/Dell Insprion14p\n>> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n>> Tested-by: Milan Zamazal <mzamazal@redhat.com> # TI AM69\n>> Tested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> # ThinkPad X1 Yoga Gen 7 + ov2740\n>> ---\n>>   include/libcamera/internal/egl.h           |  4 +---\n>>   src/libcamera/egl.cpp                      | 12 +++++-------\n>>   src/libcamera/software_isp/debayer_egl.cpp |  7 ++-----\n>>   src/libcamera/software_isp/debayer_egl.h   |  1 -\n>>   4 files changed, 8 insertions(+), 16 deletions(-)\n>>\n>> diff --git a/include/libcamera/internal/egl.h b/include/libcamera/internal/egl.h\n>> index f007f448a..630345ea7 100644\n>> --- a/include/libcamera/internal/egl.h\n>> +++ b/include/libcamera/internal/egl.h\n>> @@ -16,8 +16,6 @@\n>>   #include <libcamera/base/span.h>\n>>   #include <libcamera/base/utils.h>\n>>   \n>> -#include \"libcamera/internal/gbm.h\"\n>> -\n>>   #define EGL_EGLEXT_PROTOTYPES\n>>   #include <EGL/egl.h>\n>>   #include <EGL/eglext.h>\n>> @@ -96,7 +94,7 @@ public:\n>>   \teGL();\n>>   \t~eGL();\n>>   \n>> -\tint initEGLContext(GBM *gbmContext);\n>> +\tint initEGLContext();\n>>   \n>>   \tint createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n>>   \tint createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n>> diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n>> index da563ee09..7ff1b5ea2 100644\n>> --- a/src/libcamera/egl.cpp\n>> +++ b/src/libcamera/egl.cpp\n>> @@ -256,24 +256,22 @@ void eGL::createTexture2D(eGLImage &eglImage, GLint format, uint32_t width, uint\n>>   \n>>   /**\n>>    * \\brief Initialise the EGL context\n>> - * \\param[in] gbmContext Pointer to initialised GBM context\n>>    *\n>> - * Sets up the EGL display from the GBM device, creates an OpenGL ES 2.0\n>> - * context, and retrieves function pointers for required extensions\n>> - * including:\n>> + * Sets up the EGL display, creates an OpenGL ES 2.0 context, and retrieves\n>> + * function pointers for required extensions including:\n>>    * - eglCreateImageKHR / eglDestroyImageKHR\n>>    * - glEGLImageTargetTexture2DOES\n>>    *\n>>    * \\return 0 on success, or -ENODEV on failure\n>>    */\n>> -int eGL::initEGLContext(GBM *gbmContext)\n>> +int eGL::initEGLContext()\n>>   {\n>>   \tEGLint configAttribs[] = {\n>>   \t\tEGL_RED_SIZE, 8,\n>>   \t\tEGL_GREEN_SIZE, 8,\n>>   \t\tEGL_BLUE_SIZE, 8,\n>>   \t\tEGL_ALPHA_SIZE, 8,\n>> -\t\tEGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n>> +\t\tEGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n>>   \t\tEGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n>>   \t\tEGL_NONE\n>>   \t};\n>> @@ -291,7 +289,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n>>   \t\tgoto fail;\n>>   \t}\n>>   \n>> -\tdisplay_ = eglGetDisplay(gbmContext->device());\n>> +\tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n> \tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr,\n> \t\t\t\t\t nullptr);\n>\n> But according to\n> https://registry.khronos.org/EGL/extensions/MESA/EGL_MESA_platform_surfaceless.txt\n> the native_display parameter must be EGL_DEFAULT_DISPLAY, so this would\n> be\n>\n> \tdisplay_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA,\n> \t\t\t\t\t EGL_DEFAULT_DISPLAY,\n> \t\t\t\t\t nullptr);\n>\n>>   \tif (display_ == EGL_NO_DISPLAY) {\n>>   \t\tLOG(eGL, Error) << \"Unable to get EGL display\";\n>>   \t\tgoto fail;\n>> diff --git a/src/libcamera/software_isp/debayer_egl.cpp b/src/libcamera/software_isp/debayer_egl.cpp\n>> index 9693d7252..c85c7d6cd 100644\n>> --- a/src/libcamera/software_isp/debayer_egl.cpp\n>> +++ b/src/libcamera/software_isp/debayer_egl.cpp\n>> @@ -142,7 +142,7 @@ int DebayerEGL::initBayerShaders(PixelFormat inputFormat, PixelFormat outputForm\n>>   \n>>   \t/*\n>>   \t * Tell shaders how to re-order output taking account of how the\n>> -\t * pixels are actually stored by GBM\n>> +\t * pixels are actually stored by EGL\n> While at it let's improve the comment formatting:\n>\n> \t * Tell shaders how to re-order output taking account of how the pixels\n> \t * are actually stored by EGL.\n>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n>>   \t */\n>>   \tswitch (outputFormat) {\n>>   \tcase formats::ARGB8888:\n>> @@ -586,10 +586,7 @@ int DebayerEGL::start()\n>>   {\n>>   \tGLint maxTextureImageUnits;\n>>   \n>> -\tif (gbmSurface_.createDevice())\n>> -\t\treturn -ENODEV;\n>> -\n>> -\tif (egl_.initEGLContext(&gbmSurface_))\n>> +\tif (egl_.initEGLContext())\n>>   \t\treturn -ENODEV;\n>>   \n>>   \tglGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureImageUnits);\n>> diff --git a/src/libcamera/software_isp/debayer_egl.h b/src/libcamera/software_isp/debayer_egl.h\n>> index a5033bc63..cfbaf8e9d 100644\n>> --- a/src/libcamera/software_isp/debayer_egl.h\n>> +++ b/src/libcamera/software_isp/debayer_egl.h\n>> @@ -113,7 +113,6 @@ private:\n>>   \tRectangle window_;\n>>   \tstd::unique_ptr<SwStatsCpu> stats_;\n>>   \teGL egl_;\n>> -\tGBM gbmSurface_;\n>>   \tuint32_t width_;\n>>   \tuint32_t height_;\n>>   \tGLint glFormat_;","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 1A52ABDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Jan 2026 12:24:42 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C0C1961FC7;\n\tTue, 20 Jan 2026 13:24:41 +0100 (CET)","from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com\n\t[136.143.188.112])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3BE3261A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Jan 2026 13:24:40 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768911873972821.8352613290051;\n\tTue, 20 Jan 2026 04:24:33 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=collabora.com\n\theader.i=robert.mader@collabora.com header.b=\"GKNZ3bS9\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768911876; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=eK/oAS7l/xJTwVMu6XmbAEZdMsSGNfU3IIE0bTVSaYJIVjizJw3w5rWWAGGFDyaI+oSQa6yuVtCZ07QGjW6+1kgKURbPFWI1qw4lVpjMlGxMYGNhsr2cvjhcQOIBpIePxiMRlW69ueTlWApBEgjFIU94fdCE+wxjtmlHzuO9v1w=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768911876;\n\th=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To;\n\tbh=ApaQvG4DXS3z2pkiJAVeP0oH4pq+tFKklFy32nStsSI=; \n\tb=jNAgkEdOT1SgKOfESfx98mH9bGSL+RuvuQ8ZM44XZTU7bqi6rFkkEpduYEa59TImxswd552lWrMG3zQ0bBauOV7LUIK6QIzZsDpRYXoQLQv1zx6swPSpaR/6hHxbP740s/XGkMGcSdMIxMEd5ObCEPpT2RxN+eo8+IE9PCOd/0s=","ARC-Authentication-Results":"i=1; mx.zohomail.com;\n\tdkim=pass  header.i=collabora.com;\n\tspf=pass  smtp.mailfrom=robert.mader@collabora.com;\n\tdmarc=pass header.from=<robert.mader@collabora.com>","DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1768911876;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;\n\tbh=ApaQvG4DXS3z2pkiJAVeP0oH4pq+tFKklFy32nStsSI=;\n\tb=GKNZ3bS9ZMpow55w6HV9egHNVr9w3IMP2HpXSVs17i3n/+liUxpk1Ufgq1zKRixS\n\t4heyazHrRfvNsEX68pTQ9VfAKbm0EByqumu9iuV0K/FPeyg6vgB6OOWfw7e54clAJWA\n\tdDlrXBt3v14xr/NxWULSIWBdYhcjUoVXp6sVfFEQ=","Message-ID":"<b9585935-88ed-4288-9197-4db0f5f3928d@collabora.com>","Date":"Tue, 20 Jan 2026 13:24:28 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, Bryan O'Donoghue\n\t<bryan.odonoghue@linaro.org>,  Milan Zamazal <mzamazal@redhat.com>,\n\t=?utf-8?b?QmFybmFiw6FzIFDFkWN6?= =?utf-8?q?e?=\n\t<barnabas.pocze@ideasonboard.com>","References":"<20260119202835.372125-1-robert.mader@collabora.com>\n\t<20260119205113.GB18962@pendragon.ideasonboard.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<20260119205113.GB18962@pendragon.ideasonboard.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>"}}]