[{"id":37550,"web_url":"https://patchwork.libcamera.org/comment/37550/","msgid":"<a01daabb-80ee-45b8-8ef1-000bc906ad4d@collabora.com>","date":"2026-01-10T22:39:47","subject":"Re: [PATCH 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":"P.S.: whops, forgot to add: the proprietary Nvidia driver also supports \nGBM - but apparently implements the surfaceless platform as well.\n\nOn 10.01.26 23:13, Robert Mader wrote:\n> Which appears to be a better fit for the use-case at hand:\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>\n> ---\n>\n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\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 0ffd008c7..19c5ff48f 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> @@ -297,7 +295,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>   \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>   \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 D07A8BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 10 Jan 2026 22:39:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 23C4161FA0;\n\tSat, 10 Jan 2026 23:39:56 +0100 (CET)","from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com\n\t[136.143.188.12])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CB3C561A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 10 Jan 2026 23:39:54 +0100 (CET)","by mx.zohomail.com with SMTPS id 176808478974488.47982339993564;\n\tSat, 10 Jan 2026 14:39:49 -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=\"O3E9soc5\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768084791; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=PZCuVIIXDN71y/8U3OwbmuGTLb1p6oH28otYnj2SPAp1Ny8t6b3S4MC0cL5J7DeQAcytAwRVYScwho6ZbiVwP5Le5Xuu0Xii9vsVUGVr24mNjzgIWLnJVdVt+s0/2hKhU+gKgla7v+W9TjEz8urKmqPwZZmGt/daGJ46ElqxEqI=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768084791;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=IJQGbukYxFqihTaIMMKEmdyYej3aEa9B1ZsPBqgGSGs=; \n\tb=eCgDq8GmE21Xn8s9YVeifqbLxBDMt4rVu71wRUTldC3rCOiJ47BHbISUWOrWeJlQXjQwWjuHpbPoyYq+KVaO0CVCdw2pJQTEVS7+2vm5LlCpAyGJKQtxZbz5OKwEenolomtauA6nyaq2AuMsCZclZIOqHYEi2gXVAgRrcNXeHQU=","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=1768084791;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=IJQGbukYxFqihTaIMMKEmdyYej3aEa9B1ZsPBqgGSGs=;\n\tb=O3E9soc5vQyLvSNFghUKH/bW+vckn8pzrKsEc74hEq1EEKyFkBSr+zaifrlWQdAj\n\tGhSHk3yuTOo7zbp0QOoVoKm+cYNyfNOCpYtT4VLLwTFBkSQA40OAb13LEOUZD/Sl/Cs\n\tin8/nEwZj1Rc0SA33xJo1HR39uvcrhbbRkUcv5PI=","Message-ID":"<a01daabb-80ee-45b8-8ef1-000bc906ad4d@collabora.com>","Date":"Sat, 10 Jan 2026 23:39:47 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"libcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<20260110221337.145378-1-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":37576,"web_url":"https://patchwork.libcamera.org/comment/37576/","msgid":"<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>","date":"2026-01-12T12:45:48","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 10/01/2026 22:13, Robert Mader wrote:\n> Which appears to be a better fit for the use-case at hand:\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> \n> ---\n> \n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\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 0ffd008c7..19c5ff48f 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> @@ -297,7 +295,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>   \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>   \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_;\n> --\n> 2.52.0\n> \n\nAre we 100% sure the pixel format will be _stored_ by all GPUs as RGBA8888 ?\n\nWhat lead me to use GBM surface was specifying that directly.\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 E82BBBE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 12:45:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1E82A61FA0;\n\tMon, 12 Jan 2026 13:45:52 +0100 (CET)","from mail-wm1-x335.google.com (mail-wm1-x335.google.com\n\t[IPv6:2a00:1450:4864:20::335])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 59E6A6142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 13:45:50 +0100 (CET)","by mail-wm1-x335.google.com with SMTP id\n\t5b1f17b1804b1-47755de027eso36447825e9.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 04:45:50 -0800 (PST)","from [192.168.0.40] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\tffacd0b85a97d-432bd0daa84sm38450365f8f.2.2026.01.12.04.45.48\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tMon, 12 Jan 2026 04:45:49 -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=\"DXl0U00O\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1768221950; x=1768826750;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\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=sJc5eWw5sPRO6QXUeFYX/VOy5PMiD+g5jHseNCURccc=;\n\tb=DXl0U00OJSAELSziVG2Yosqkij3nIN2hpMzQ6XUl6Gf0XFUW/299HNDFz7gJbhsOh/\n\tLP70ASYIhQY/I0EPUvoUf9k6J0HcKafB7HbLxed7XMgxSlHFcpiWPigEbch4lk3//6Ka\n\t5CLuiVQjEmbED2C5KS6V45/JzzOiafb9LWCepad51gnruc7PWsIudI7bIKePSnKLZrEA\n\tY/Uq5iMX3ehLfmaMdi+pr1Q4GAd3nvqDM5Mos9B5+W/AONyTzgzNQ9clL5F38cWhxsrE\n\tDhzuslafF2Iua/srCpdAW+TPwYVKiF+8CGlhcDrOR2lC81Rwa5FNSun/eh+1GKZhj8W4\n\tmmEA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1768221950; x=1768826750;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references: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=sJc5eWw5sPRO6QXUeFYX/VOy5PMiD+g5jHseNCURccc=;\n\tb=cFhzByKhT1HcrQ2sBg+rBmhsFpHASRdbvbQbHRxaAxd/NiyErYMzZ5mdp8ipu7+4Yg\n\tUhH4yY7vLsstpKnLS4Mcanb1HBg4vCAaZaY2IGAYnwfIkrZ6Lzrs4iqwZKcGiFH4/Lcq\n\tQx7Q6FtbRa9OaCROmwmKf0ABvmZQx9RKu3bWbEfd7M8Oj6DeHX+koqi2I11JhQM+ZV9y\n\thnc7IxLH/rKU2qtAUrN4YupBQdHQ8oDAZmC2FQSeqUXMEJsNjFg8m+zqvN/Qnk9SWKMM\n\tQm1Qkut+yGOux4zot1DYiOSv547Nzu9dwV6JwCFq/Nwgp7OX9EwCD9tGBW1FSGbCiHuy\n\twy6A==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCVQ1A/Mx09tsDEllFAjw3zkBv9IxmZhd8EbvLHf67MjrtfFk1Z7pJp5Gh+aedbWeo6OspvpgkHm2uSqfVpRtAY=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YxI5plWoyUs/1wADmvE/aW7N+SMZmlGUuQKV+seUndD0J7SQkLV\n\tqvq/eGCDSvhQqDiF2ftai/9WvEur3VLpjq7NRbOJGDRnFiVvVUZx9AFF6um3ObZGb5HkrFl1z+o\n\t3b3jbP9s=","X-Gm-Gg":"AY/fxX5RhRvFZQgC8z5NWhMyHZEW3UD6H7iVGnWy3eIAbKI9s5GAayIGnWISIxbtrE3\n\tTBV88nM4AXHWhmg6CZt1wpt5fmVPGp9kvwsg2zZXCnr3Dn1QXthOX8iT0HNYfNl0f0xwvtpIE91\n\tKR6hSfRCq6hlMR7k3dvR7ZO3Th1x+W1Ug6MMvlY0Att1rbNuSKA4MOHKyLu29E/pcpdTFmHVC1d\n\taXsZ83umUIrSKH4IM97FsQVxc2fdK0wONmrX889nafIkprz6CEI7HFvNcRYcttlePPCHDUSP3Q5\n\tnq1JsTNwKCfwy+ORVK0CSxEGGhreglw/pJCT3ovyqwDN4R3IpjAzMap2O0Yzc/wDPfNfB1YDBuI\n\t4k5cO1bhqKxfSoMot1XNzJrATFyK8YOun++fIJ/OLV8EKDSnohLKBvrfS/P0vBsLNEjyIj7iZpo\n\tr0YXIhcTgP0C+o4k9VJnWJTG4fO2pQridKCqbTi+7UW4uke3nexd3rAZe7WvOAyhw=","X-Google-Smtp-Source":"AGHT+IFP4bJ5uGljupE+p+dw8bum0qJFGlrs6SvLCK+MC+tbMm2Ot9IDlMfhIr5KaV6zPLqeHLZ2Lw==","X-Received":"by 2002:a05:600c:4fd2:b0:477:58:7cf4 with SMTP id\n\t5b1f17b1804b1-47d84b09145mr178868045e9.4.1768221949678; \n\tMon, 12 Jan 2026 04:45:49 -0800 (PST)","Message-ID":"<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>","Date":"Mon, 12 Jan 2026 12:45:48 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<t2x3rPWmN1RTmftQ4fbzLZYotr_Tw5yK9A3b3doYtPY95pjNku_1syGfSipti3ht-euPRcVkgfMJNLvO3BLBZw==@protonmail.internalid>\n\t<20260110221337.145378-1-robert.mader@collabora.com>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<20260110221337.145378-1-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":37577,"web_url":"https://patchwork.libcamera.org/comment/37577/","msgid":"<7f886f45-5866-4e4a-9028-12ed27c2c2f4@collabora.com>","date":"2026-01-12T12:51:29","subject":"Re: [PATCH 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":"On 12.01.26 13:45, Bryan O'Donoghue wrote:\n> Are we 100% sure the pixel format will be _stored_ by all GPUs as \n> RGBA8888 ?\n>\n> What lead me to use GBM surface was specifying that directly.\n\nAs far as I know this is controlled by the EGL_LINUX_DRM_FOURCC_EXT \nattribute when creating the image with eglCreateImageKHR(). As we create \nthe target texture from that, it would be very surprising to me if a \ndriver would suddenly use a different format.\n\nBest regards,\n\nRobert\n\n>\n> ---\n> bod","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 2558BBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 12:51:40 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1711661FBC;\n\tMon, 12 Jan 2026 13:51:39 +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 803DB6142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 13:51:37 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768222292842511.19403269366774; \n\tMon, 12 Jan 2026 04:51:32 -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=\"ENi7FCCs\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768222293; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=Ks1AcKSFS0/lKiyhTqCS/EAqXGNuzMUAKdcpL8R34yrKIEwQEbwIzwF+iUo4uz68DgpKqjlns+ViF7gMg2qbLxAAfX4A1xb5KB0pk7bnStNW7jO2nf1TdUQuCkKNFWmhl9XQ5UsTK7LqdpOUPEd6XBDH72tuhtb9L11IuNgD2+k=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768222293;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=lgGP5xiGI/HJKCssd7ch4MdwabNn3qykLx2/jlcrBWk=; \n\tb=QX39Pcpzo20q/2yUux+GZ7UMg4VD8unYJP1KGxDjexrHsnnEv58tHp0QCLWU/rtDlXMwO+cGgpk8vreHvnw/i/ypAQDb0Br7YE0s/igjHw3oyIqIMokSBwpeerLxeNnntT8BAMtQYeOYZmItD+y1xxUElPaa9WyjPA/Fztm/r1w=","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=1768222293;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=lgGP5xiGI/HJKCssd7ch4MdwabNn3qykLx2/jlcrBWk=;\n\tb=ENi7FCCsefkJUWuaPDREnwirrcIeflYINCObYxKGcgtS15EvuDYWNVBuOFlfDgX8\n\tpE69Nh+DNtltIuZFXSr+E5m5mcIqr5tJsVAxHArFghdZaJ4Ffgr07bMirWZxXGqOARR\n\trd8FeiI9yJkCIR4rWCQEnMjl9Oz5CUkFD34s1z8E=","Message-ID":"<7f886f45-5866-4e4a-9028-12ed27c2c2f4@collabora.com>","Date":"Mon, 12 Jan 2026 13:51:29 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>,\n\tlibcamera-devel@lists.libcamera.org","References":"<t2x3rPWmN1RTmftQ4fbzLZYotr_Tw5yK9A3b3doYtPY95pjNku_1syGfSipti3ht-euPRcVkgfMJNLvO3BLBZw==@protonmail.internalid>\n\t<20260110221337.145378-1-robert.mader@collabora.com>\n\t<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<00718649-9fdd-4477-ac52-58cdd7e32dc5@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":37578,"web_url":"https://patchwork.libcamera.org/comment/37578/","msgid":"<15ea9023-dd6d-4fc5-975d-cbc18c32aea7@collabora.com>","date":"2026-01-12T12:59:42","subject":"Re: [PATCH 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":"On 12.01.26 13:51, Robert Mader wrote:\n>\n> On 12.01.26 13:45, Bryan O'Donoghue wrote:\n>> Are we 100% sure the pixel format will be _stored_ by all GPUs as \n>> RGBA8888 ?\n>>\n>> What lead me to use GBM surface was specifying that directly.\n>\n> As far as I know this is controlled by the EGL_LINUX_DRM_FOURCC_EXT \n> attribute when creating the image with eglCreateImageKHR(). As we \n> create the target texture from that, it would be very surprising to me \n> if a driver would suddenly use a different format.\nP.S.: IIRC you mentioned that you ran into cases where the output ended \nup using tiling/modifiers, however IIRC that was before before adding \nthe EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT / \nEGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT attributes which explicitly request \nlinear.\n>\n> Best regards,\n>\n> Robert\n>\n>>\n>> ---\n>> bod\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D08D5BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 12:59:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CD97561FC1;\n\tMon, 12 Jan 2026 13:59:51 +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 082A46142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 13:59:49 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768222785490691.9298414646103;\n\tMon, 12 Jan 2026 04:59:45 -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=\"BhDtEaJa\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768222787; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=Ip6gvzTHaA52CNvUhgxW5ZMFppi/Y/cUC79XX6Va63QimR8uvFuJVJ3F7idYVnY2H7Vk/4dyYVqrgnCXiXwpu0ZJJ166MYf5ZaZp4oaAq2Ul6ms9vN5NYOUF31GTB5nBGrSWLSiiSXiJf7K4AyeCQwPU/UdLYlm0fdowcfYbkS0=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768222787;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=pviKvfNYVmPjJ7VaKc4CmEajJ1TjiCOjjGajHy0veHE=; \n\tb=gFBUWE/mq0Z95jD4Wk40rVbprCCm46ORzbaTjQnWHVIcBzj/alGgP+qG/KvB7uItM3H55pfcZ39m+MECfmEB4vnm9fOgBCMkHcdWk940LibZJrl2wjMpLzxYmhz+iHMNuUtxKiZINjbLrRlqPPiVkIu1a+RRNVvokNZVEl5cW7I=","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=1768222787;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=pviKvfNYVmPjJ7VaKc4CmEajJ1TjiCOjjGajHy0veHE=;\n\tb=BhDtEaJa2PBd8kNd3jpXgVgmTqtd7Z8zrkNvM/N+sVl7kfoI5ubMedSXrZnh4g8S\n\t2kxAX5RIB5U/ZHP16G0jr2kwm4A3yTiTQG5DToLj5A5Pz8D6eCBgfctuP+qvKDANcva\n\tN1/nOD+1i6casyIwHQelJVYL5mhTJkWP3qVoeoCI=","Message-ID":"<15ea9023-dd6d-4fc5-975d-cbc18c32aea7@collabora.com>","Date":"Mon, 12 Jan 2026 13:59:42 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"libcamera-devel@lists.libcamera.org","References":"<t2x3rPWmN1RTmftQ4fbzLZYotr_Tw5yK9A3b3doYtPY95pjNku_1syGfSipti3ht-euPRcVkgfMJNLvO3BLBZw==@protonmail.internalid>\n\t<20260110221337.145378-1-robert.mader@collabora.com>\n\t<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>\n\t<7f886f45-5866-4e4a-9028-12ed27c2c2f4@collabora.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<7f886f45-5866-4e4a-9028-12ed27c2c2f4@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":37579,"web_url":"https://patchwork.libcamera.org/comment/37579/","msgid":"<946d2e2c-5418-4d19-8be8-1e4a75d19c8e@linaro.org>","date":"2026-01-12T13:01:48","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":175,"url":"https://patchwork.libcamera.org/api/people/175/","name":"Bryan O'Donoghue","email":"bryan.odonoghue@linaro.org"},"content":"On 12/01/2026 12:51, Robert Mader wrote:\n> As far as I know this is controlled by the EGL_LINUX_DRM_FOURCC_EXT \n> attribute when creating the image with eglCreateImageKHR(). As we create \n> the target texture from that, it would be very surprising to me if a \n> driver would suddenly use a different format.\n> \n> Best regards,\n> \n> Robert\n> \n>>\n>> ---\n>> bod\n> \n> -- \n> Robert Mader\n> Consultant Software Developer\n> \n> Collabora Ltd.\n> Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK\n> Registered in England & Wales, no. 5513718\n\nOK great, good enough for me.\n\nI did a a bit of DD on this. We are specifying the FOURCC but also \nMODFIFIER_HI/LO = 0 which gives us untiled...\n\nGood stuff so.\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 85AD0BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 13:01:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id AC75361FBB;\n\tMon, 12 Jan 2026 14:01:51 +0100 (CET)","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 6C49F6142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 14:01:50 +0100 (CET)","by mail-wm1-x32d.google.com with SMTP id\n\t5b1f17b1804b1-477632b0621so39714355e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 05:01:50 -0800 (PST)","from [192.168.0.40] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-47d7f69e13bsm356821835e9.7.2026.01.12.05.01.49\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tMon, 12 Jan 2026 05:01:49 -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=\"DrT26nQI\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1768222910; x=1768827710;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:from\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=5ODlbyWWuetPo+fFtCI0QvjRopKvaHNSDuGrnLoLYHc=;\n\tb=DrT26nQIzeKNayI8Q6SBTZevviuO1OleuE9tln93cESQJZoqGMxPOfA/skRfnAJ102\n\tbIukOn0hC0xE+rYrBNYpHagolOkZx/8BijH11Jq6sVK5CmLn2AJO9v8ODiwODH97FiH9\n\tm2odo9HUSmq3eVmZh/R/Vuo0QCA2QoTKUkc8Aus2jDBQPm8ctHUZpBFr6sGbeDUPGsF9\n\tFIVVLEmiwgdEcNV067F1SDZGhFvPa5lSRanHAJ1Wvteqfem0HyobQ72OQN1kkt/McQKU\n\tka7RV18Pnx2g0C8hFBr/sYOzRB8OzD3foQdk3gDb7po9CXsG6cNzXnKGfX94AOz+7QjC\n\ts6Qw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1768222910; x=1768827710;\n\th=content-transfer-encoding:in-reply-to:content-language:from\n\t:references: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=5ODlbyWWuetPo+fFtCI0QvjRopKvaHNSDuGrnLoLYHc=;\n\tb=cjVONEnjxYg1UMR0HeI2+eojqP1wxyNOXr+flVYKv0VOiBeuIbkeJCqu1v0tbHq7u/\n\tpeUwvwp2OQ6QGfi5fpohLfRjkvHuo7Jwf7VQvFCn7eUbrCCnec4BQamW+nBhbEdD58UB\n\tLiTOkG4uWSQ5PLn81AFw/zOewGXElvjPIxujDgFgdn3byWoAl34edgkC+pfgFuWESYwv\n\tdKI5YcH1Zx1nUi7a72svvx8nOUKbHIj87Du+/knRTsUhCDu50AkZtSfYhE85feD5i1z/\n\tDxdRpIeFR0mnuvQlugwmleO5Y68bn5txKuK+c2FYe4X9K1aduedyNOd6nJ+RJVd/YE/I\n\tHI6w==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCVtnD8a7Rti7ikooH8AhPa+8/7pLszOhtVwCugqFY+E7FDEBfVaeTJLmA5aadAsyFD4lxDmZs9PBZwShY6Wq8Y=@lists.libcamera.org","X-Gm-Message-State":"AOJu0YwSbcnQ5zA2Y8wX3/xMJCOuxNKkNWY802fZCc2ji0jMcqxHfBPP\n\t5sYZJEmDrRbV3kFQojlFtHd+0X2jqOEOehMk8BPssi8kavFegj6dkRqgMyXjB83K1c6LLR2kyL/\n\t9f95Npys=","X-Gm-Gg":"AY/fxX6FPp5kVke44zsygynfjFVCLQw2bXOvyWTNqkLDBJIuFcq3uBoCwgSHYvgJZ/N\n\t6dNZEbmyUE9/a7+GxyMgdNAB5P1a8LELOWZymfFCDeyFX2TbGkqoB6Aoupahn+y+jTOeweV3QTx\n\taCOD67OnZCGQ2yrwtrlrmhbNtl+f3NkZc/fU3LgZI5LecG5QhXs1BOqOnuF9V8mnDh9vaSJ8xMN\n\tbH7cVIxX8rmZ+JXNS13DIdQVzU0wfiZELrpR7/zXmaOcvD3jVitlNqCFhvJXZ8m7kqhL6HGb93D\n\tC3888mOHs5sThVTq2I5f9zOHNpo6d8c8U+OwE7bDqqxL9e3nlLaghlzuwvaXEnmfVr3OwM0ZI+g\n\tMQtwNm5eXw/93+ny+ekbpTqtq9AktGzNWvYSeO3URoaWO9WFD3+GNUa9pvsQSvcUmp9/WBLWboi\n\tSVgKrbVdN2U7SQDtLy527p/W8+cuCNSpivr6hwdJxXuKEMVUia9ju9","X-Google-Smtp-Source":"AGHT+IFlslxmbjx4H1YQofNypYF9ImzA6909iRuhUyZx6foC772dURhl2rot1cgTs6Qi6fBTabG32A==","X-Received":"by 2002:a05:600c:4747:b0:479:2a3c:f31a with SMTP id\n\t5b1f17b1804b1-47d84b0aac6mr218929765e9.1.1768222909803; \n\tMon, 12 Jan 2026 05:01:49 -0800 (PST)","Message-ID":"<946d2e2c-5418-4d19-8be8-1e4a75d19c8e@linaro.org>","Date":"Mon, 12 Jan 2026 13:01:48 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<t2x3rPWmN1RTmftQ4fbzLZYotr_Tw5yK9A3b3doYtPY95pjNku_1syGfSipti3ht-euPRcVkgfMJNLvO3BLBZw==@protonmail.internalid>\n\t<20260110221337.145378-1-robert.mader@collabora.com>\n\t<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>\n\t<7f886f45-5866-4e4a-9028-12ed27c2c2f4@collabora.com>","From":"Bryan O'Donoghue <bryan.odonoghue@linaro.org>","Content-Language":"en-US","In-Reply-To":"<7f886f45-5866-4e4a-9028-12ed27c2c2f4@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":37580,"web_url":"https://patchwork.libcamera.org/comment/37580/","msgid":"<cc32c895-45f6-4960-8754-6c0473d89bcf@nxsw.ie>","date":"2026-01-12T13:02:52","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":226,"url":"https://patchwork.libcamera.org/api/people/226/","name":"Bryan O'Donoghue","email":"bod.linux@nxsw.ie"},"content":"On 12/01/2026 12:59, Robert Mader wrote:\n> P.S.: IIRC you mentioned that you ran into cases where the output ended\n> up using tiling/modifiers, however IIRC that was before before adding\n> the EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT /\n> EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT attributes which explicitly request\n> linear.\n\nI'll pretend I knew that all along :)\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 B9F7CBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jan 2026 13:02:57 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6C0B761FA0;\n\tMon, 12 Jan 2026 14:02:57 +0100 (CET)","from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AC93B6142F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jan 2026 14:02:55 +0100 (CET)","from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby tor.source.kernel.org (Postfix) with ESMTP id E046060130;\n\tMon, 12 Jan 2026 13:02:54 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 1F201C16AAE;\n\tMon, 12 Jan 2026 13:02:53 +0000 (UTC)"],"Message-ID":"<cc32c895-45f6-4960-8754-6c0473d89bcf@nxsw.ie>","Date":"Mon, 12 Jan 2026 13:02:52 +0000","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<t2x3rPWmN1RTmftQ4fbzLZYotr_Tw5yK9A3b3doYtPY95pjNku_1syGfSipti3ht-euPRcVkgfMJNLvO3BLBZw==@protonmail.internalid>\n\t<20260110221337.145378-1-robert.mader@collabora.com>\n\t<00718649-9fdd-4477-ac52-58cdd7e32dc5@linaro.org>\n\t<7f886f45-5866-4e4a-9028-12ed27c2c2f4@collabora.com>\n\t<RIm7OrLKYhgqIESPFAAGly1_D-P4aauTBUKr1V30sgzQEbi4COq2DeyYe2qX_o6G8eewQLrO-ex3PcRWDtDAuw==@protonmail.internalid>\n\t<15ea9023-dd6d-4fc5-975d-cbc18c32aea7@collabora.com>","From":"Bryan O'Donoghue <bod.linux@nxsw.ie>","Content-Language":"en-US","In-Reply-To":"<15ea9023-dd6d-4fc5-975d-cbc18c32aea7@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":37664,"web_url":"https://patchwork.libcamera.org/comment/37664/","msgid":"<858qe02lon.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-01-14T16:39:20","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Robert Mader <robert.mader@collabora.com> writes:\n\n> Which appears to be a better fit for the use-case at hand:\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\nTested-by: Milan Zamazal <mzamazal@redhat.com> # TI AM69\n\n(LIBGL_ALWAYS_SOFTWARE=1 fails but apparently I don't have llvmpipe\ndrivers on the system.)\n\n> ---\n>\n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\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 0ffd008c7..19c5ff48f 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> @@ -297,7 +295,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>  \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>  \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 0624CC3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 14 Jan 2026 16:39:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 21BD861FBC;\n\tWed, 14 Jan 2026 17:39:29 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 05E4E61F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 14 Jan 2026 17:39:26 +0100 (CET)","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-392-5hcend8VOBmojzyKBk-V-Q-1; Wed, 14 Jan 2026 11:39:24 -0500","by mail-wm1-f72.google.com with SMTP id\n\t5b1f17b1804b1-4779b3749a8so230055e9.1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 14 Jan 2026 08:39:24 -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-47f428ae0b9sm581595e9.5.2026.01.14.08.39.21\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 14 Jan 2026 08:39:21 -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=\"bO8WoJiT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1768408765;\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=ywD2eAgD4HJPzkf+SFLHSNawYdJGfxsegQ0RLKy/rQQ=;\n\tb=bO8WoJiTijqftu3i9rr63zgfzJJASuOSYXB69KGfeCTO8ynbvYtvD8Zqqc56w2OEd+NY/H\n\tyYMCNw4jIq7XRlB3NDNyl8G4KGt4wL5LEX4n08qeju3tEmXoZro+nvDxHJm+fD8nsLtQ9s\n\tURau4C30hlSPvZ2MutWuGjGzkpB502o=","X-MC-Unique":"5hcend8VOBmojzyKBk-V-Q-1","X-Mimecast-MFC-AGG-ID":"5hcend8VOBmojzyKBk-V-Q_1768408763","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1768408762; x=1769013562;\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=ywD2eAgD4HJPzkf+SFLHSNawYdJGfxsegQ0RLKy/rQQ=;\n\tb=qQvHz4ad0qgAiZRrK5rJoZlpq4A/jI9cl/3i/2TAEOxwWRUn3LA54fXQxBBrkuXmRR\n\tQFJcEnz6mR0GSBrxL2Lr+boRjkp+Qgxx1RgEVzq5bJqIT2LYoDNByD12oYZ8Wy2/PIzU\n\tyFaeZdBfH9/xKf+RQA3bLmGrGxvdYU29N4bM/5SKGzUGDwBXT66bCAs5KC/JFIErGfVM\n\tLrx4aworH+DDF6bTgdccTTyK0rXiKWW58LPcJfvwozu5xO+x+mTZik6g/Dc5mpEht6KV\n\t1JtvW1diBkwWGQ1yBJ3HjupBBi8SQQBNEpe89b3t9n+NaI5YDlF04Y18MyB/jvapAcHh\n\t2c3w==","X-Gm-Message-State":"AOJu0YyBLxZnOMAUKypysJILlAggUf22jHDrJcI0bekClD6bF8bkXXOe\n\tnS0EoaJttNVAQKSFQzQdHN6iftATcPJl9FGrqihSziWjXYaTx/hYN/qtHsqtixex5OoZifpkgry\n\trsFv6sW+ezfXr26YTJsY5VYEegxffF36JSwMFfXXMAefihZGyzrv/E8hfA6KFLGdol4mHYIR4f3\n\tSzgx1WvO2UD/C2mcaShymMpUKdq2z1ioDLQ5GWa+gEizp7Yb2gQJVzTRoAkGc=","X-Gm-Gg":"AY/fxX7lJDzo6mwEXRZutetWO+7YcQl5Zry6/GRBB4OImJ4mPshc6CrWE4PSpHsRgDS\n\ttJvOl1wbvSHMvd47nXbNwKPojxazB/jqIH7X0IeYRVhcapwiO3q/7jct5pTF/8ytX82U5pBukHm\n\tHRO1sJX+kcqJNgAlkgsFXibmDpoSJqo4lemqIVXxRhI6gFYO1yYlJiekOLPcFWlkpcJvOBtXVbI\n\tHWImSn+VbEnL7yHPOn3TSMBrmfGJeGbA8R1+QEZium5mtGcg0RGLF+KPlFkElDqLDjSeEOnmbiC\n\twzoHCjmYX/ZRbCorndfWGyXDBCpzybQF9VBjgpzwkgW7OOt08gmJGfV1ImHMeOlDPdKUeTskkbB\n\te40oivjyopzjwgPTzNnyopGSOCylnLDN5u5RACW3gJDTWeVZLZqF/l4accseazNw=","X-Received":["by 2002:a05:600c:500d:b0:47d:3ffb:16c9 with SMTP id\n\t5b1f17b1804b1-47ee33917d1mr33540845e9.23.1768408762531; \n\tWed, 14 Jan 2026 08:39:22 -0800 (PST)","by 2002:a05:600c:500d:b0:47d:3ffb:16c9 with SMTP id\n\t5b1f17b1804b1-47ee33917d1mr33540605e9.23.1768408762067; \n\tWed, 14 Jan 2026 08:39:22 -0800 (PST)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Robert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","In-Reply-To":"<20260110221337.145378-1-robert.mader@collabora.com> (Robert\n\tMader's message of \"Sat, 10 Jan 2026 23:13:36 +0100\")","References":"<20260110221337.145378-1-robert.mader@collabora.com>","Date":"Wed, 14 Jan 2026 17:39:20 +0100","Message-ID":"<858qe02lon.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":"owTalCuIaFyxsrC4BWQyDQTdJdZQgyypseEMelHlgZ8_1768408763","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":37667,"web_url":"https://patchwork.libcamera.org/comment/37667/","msgid":"<133e2641-3ede-4114-82e5-79670abc3f00@ideasonboard.com>","date":"2026-01-15T09:44:31","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","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> Which appears to be a better fit for the use-case at hand:\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> \n> ---\n> \n\nIt seems to work fine, LIBGL_ALWAYS_SOFTWARE=1 also works.\n\nTested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> # ThinkPad X1 Yoga Gen 7 + ov2740\n\n\n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\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 0ffd008c7..19c5ff48f 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> @@ -297,7 +295,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>   \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>   \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 DEEC8C3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jan 2026 09:44:37 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B154E61FBC;\n\tThu, 15 Jan 2026 10:44:36 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6AAB961F61\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 10:44:35 +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 D62524D3;\n\tThu, 15 Jan 2026 10:44:07 +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=\"XvYQxhgw\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768470247;\n\tbh=X/o9WFTGcADPafwTNrBW60blPKkfvJ547A3R7OcL9nA=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=XvYQxhgwFkqmOw4Hlhc1kE65axK0SGEVdv1Pu+1pCK8LBvCUnxF1ezOR4dW2Qmt2y\n\t5H8b394/vDDZToyyxxilfwSY9jf6EC0rRhEIEBufQdB1IlyK/Du5/+PFaVLRy7IXNj\n\tWAOSqRNFhazMgxWx1BOSERDaremgmri1wmkNhgyk=","Message-ID":"<133e2641-3ede-4114-82e5-79670abc3f00@ideasonboard.com>","Date":"Thu, 15 Jan 2026 10:44:31 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-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-1-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>"}},{"id":37670,"web_url":"https://patchwork.libcamera.org/comment/37670/","msgid":"<a1d3fc96-eccb-4104-85cb-43882dea88b1@oss.qualcomm.com>","date":"2026-01-15T09:58:00","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":242,"url":"https://patchwork.libcamera.org/api/people/242/","name":"Hans de Goede","email":"johannes.goede@oss.qualcomm.com"},"content":"Hi,\n\nOn 15-Jan-26 10:44, Barnabás Pőcze wrote:\n> 2026. 01. 10. 23:13 keltezéssel, Robert Mader írta:\n>> Which appears to be a better fit for the use-case at hand:\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>>\n>> ---\n>>\n> \n> It seems to work fine, LIBGL_ALWAYS_SOFTWARE=1 also works.\n> \n> Tested-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> # ThinkPad X1 Yoga Gen 7 + ov2740\n\nThank you for testing this on an IPU6 device. I was supposed to test\nthis yesterday but I thought this was part of the cleanup series.\n\nAnyways it is tested now, thank you.\n\nRegards,\n\nHans\n\n\n\n\n\n> \n> \n>> Should be applied on to of\n>> https://patchwork.libcamera.org/cover/25706/\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>>   -#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>>       eGL();\n>>       ~eGL();\n>>   -    int initEGLContext(GBM *gbmContext);\n>> +    int initEGLContext();\n>>         int createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n>>       int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n>> diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n>> index 0ffd008c7..19c5ff48f 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>>    * \\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>>       EGLint configAttribs[] = {\n>>           EGL_RED_SIZE, 8,\n>>           EGL_GREEN_SIZE, 8,\n>>           EGL_BLUE_SIZE, 8,\n>>           EGL_ALPHA_SIZE, 8,\n>> -        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n>> +        EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n>>           EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n>>           EGL_NONE\n>>       };\n>> @@ -297,7 +295,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n>>           goto fail;\n>>       }\n>>   -    display_ = eglGetDisplay(gbmContext->device());\n>> +    display_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n>>       if (display_ == EGL_NO_DISPLAY) {\n>>           LOG(eGL, Error) << \"Unable to get EGL display\";\n>>           goto 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>>        * Tell shaders how to re-order output taking account of how the\n>> -     * pixels are actually stored by GBM\n>> +     * pixels are actually stored by EGL\n>>        */\n>>       switch (outputFormat) {\n>>       case formats::ARGB8888:\n>> @@ -586,10 +586,7 @@ int DebayerEGL::start()\n>>   {\n>>       GLint maxTextureImageUnits;\n>>   -    if (gbmSurface_.createDevice())\n>> -        return -ENODEV;\n>> -\n>> -    if (egl_.initEGLContext(&gbmSurface_))\n>> +    if (egl_.initEGLContext())\n>>           return -ENODEV;\n>>         glGetIntegerv(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>>       Rectangle window_;\n>>       std::unique_ptr<SwStatsCpu> stats_;\n>>       eGL egl_;\n>> -    GBM gbmSurface_;\n>>       uint32_t width_;\n>>       uint32_t height_;\n>>       GLint glFormat_;\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id AC31AC3226\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 15 Jan 2026 09:58:07 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BADEF61FBC;\n\tThu, 15 Jan 2026 10:58:06 +0100 (CET)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n\t[205.220.168.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 91B8F61F61\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 10:58:05 +0100 (CET)","from pps.filterd (m0279862.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t60F6fkkC2074121 for <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 09:58:04 GMT","from mail-qk1-f198.google.com (mail-qk1-f198.google.com\n\t[209.85.222.198])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bpjj9j2sv-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 09:58:03 +0000 (GMT)","by mail-qk1-f198.google.com with SMTP id\n\taf79cd13be357-8b22ab98226so305763585a.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 15 Jan 2026 01:58:03 -0800 (PST)","from ?IPV6:2001:1c00:c32:7800:5bfa:a036:83f0:f9ec?\n\t(2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:5bfa:a036:83f0:f9ec])\n\tby smtp.gmail.com with ESMTPSA id\n\t4fb4d7f45d1cf-6541187745esm2034515a12.6.2026.01.15.01.58.01\n\t(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n\tThu, 15 Jan 2026 01:58:01 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"IAI5V354\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"iO9blhsS\"; dkim-atps=neutral","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcontent-transfer-encoding:content-type:date:from:in-reply-to\n\t:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n\tq+KY7F+E0czc68UddjJ/DDjPpabmTzYEJPEIfdD3aPw=; b=IAI5V354QdjWu5KV\n\th1KbGY+Zp76zd0JoFeTZRZUC9iyRbhkDQbrnfUqFjH3Fk1Deg6uHqmjMfI7mzyJr\n\tMeEt1neEURdRleYvNWU+XR80tOMulodrnrBbTxgozqz0J/5dscM4N+aSTKxs/Mf6\n\tH9B6xPiXgWPvHcC/DTXSPtHss1bWjFAnhGlRPzaPhQ/bKp8eDTK/sKiDDBBgV837\n\t07n9shC1ciWF2yNhNIJMLlL8AnfxyMYvmXhnz9h5Bbq/JgNNbPEYESzOnCTsD1hr\n\tK/0AY4XyUM0tCFE+UeI7OIQsBHiK01QyEvM+Dx4AbVUD/gFEMKQZloCam2HdCZ7w\n\t8eLqrQ==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1768471082; x=1769075882;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:in-reply-to:content-language:references\n\t:to:subject:from:user-agent:mime-version:date:message-id:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=q+KY7F+E0czc68UddjJ/DDjPpabmTzYEJPEIfdD3aPw=;\n\tb=iO9blhsSavz/nruWUEIR3atZvZiJegRl74oi8tFlmPofavNdb7AwiRByx5MA7Jlhtv\n\tSCpBTosz/ZsvAX0YT7loZzyhNU2W4wE0+NwyXxisM6mQkmhj+Cu3wk1YosB6e4m9UA2Z\n\tswSipXnffPtiZ0luTyzorLjiMzu/38MXD3we/SrRLv6ZbvUHs9LUaiHv4cgjKBiQ0Q+l\n\t36KOavTCm3jCsm3WvYwrtzuoIudFbrdAwKhIBTpKTGlVtpH+UnRideZQpqrppwd0jy33\n\tRe4lurkLGyD9x8cw5iI4UYBlfkgD2D2r5Y7a5dbywzGEObogRRe6Depq3N3KnBkCyFq4\n\t1r3g=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1768471082; x=1769075882;\n\th=content-transfer-encoding:in-reply-to:content-language:references\n\t:to:subject:from:user-agent:mime-version:date:message-id:x-gm-gg\n\t:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n\tbh=q+KY7F+E0czc68UddjJ/DDjPpabmTzYEJPEIfdD3aPw=;\n\tb=Dtuku3Gphf/zJ42E+Aa/vjcVXJaC3thrbkURVDGaN7uvz2kwagjGLqww7hcDwadjRv\n\tcx4UpWMX4b049jgxIoT8q2CUZ2WzpWe8z+BKe6b2Y+862CN//a9HuPKT3e8MROqgDNPy\n\tQH+/dRDWWNpoNTUpN0G0/YoTBbTbI7UhLo+URCnFhoeuRY1WRb+fX3J82MwjqeB/s9rZ\n\t2urVX7R9+xkxf8u02PFvVCDnT73huLUdqhTv9Hdov3SQv3N/egPMXABP5i6otD625qqb\n\tsNlJBD3IyjoPQToTh/GuPjrPEdUz3kF/MgSWOsoYPpSL9EbMs9pDrPdAqH59ldBQMda+\n\tIUEA==","X-Forwarded-Encrypted":"i=1;\n\tAJvYcCXvWYTrd+xNXD3NtsPl7vfBpNn20CaY5hLnNiT1m8U7rw05lt9ssfwEJzruyJYzA2x+tbx79M0BcYW6aDJVSkU=@lists.libcamera.org","X-Gm-Message-State":"AOJu0Yz1+ERlDlhUl2oM2qOlbdYw7lYfJMFFwSjXvmeawbxig6gIrTTc\n\tRjQyBZSN6OXmMj8bXjgrtbnV0suDxkfR60qFxpDBTpqx+ieWxPo5gsSjmTLKbxVY/c+PLS//IBc\n\t7aN06pICOoj+S0EWiYGZv1jVSL28zsNZ5lakhJIru18p3qzYnGT03k2H7Te7PE2vEpYsvZj/O8z\n\tbo35UkqGb1","X-Gm-Gg":"AY/fxX73AW2t/2pR0Nx93jD+L4CmmgHmmoUWxpWMftgFInBiBQs4/e78FOyCXxJfuqU\n\tUAOzReIT/DDJ8ArivQ6mWvXn3a5A/4WECQoNO3EuAw+QBpLagIovkGhXvnW846Oat7lGtfAV4q4\n\tnROXBXhOM0D3HT/vbs0GmAv5+O5ulT+vwr+VImYLsEz/hbci0hrUkz5wl1SGZQ4s7vvYI2sq1U1\n\tU1iNNPv+5HTZRI2CvnewHDJ0WAMl7xPJrl9NF1wqLGg7dq3lXfLQJ2O6qRU7CR/XX8pCs1/ZtKN\n\t/3VqvpHHV0Dtr0LUMHrQuWeDeE9V/dbjBX177AyqYFrJJ1bb06aIVQwdpRBVHdbPRUR0YoatTk0\n\tcNfcynhZEr/IpZNa5L1H/0+LGhwzjZANe0kpq2gMnKBQNNadVb2GXrqOkqtl3rVzvHcGb3sX3+d\n\tUqaNwVVk2Lh7Fu6nIMqSY50QnkRz817GQQ7KyElewlBm3lhCPEZY/jm89hQEpNOZ5SifcI6rOa7\n\tQJi","X-Received":["by 2002:a05:620a:170f:b0:8c3:55bf:735b with SMTP id\n\taf79cd13be357-8c52fbde2b0mr822147485a.81.1768471082478; \n\tThu, 15 Jan 2026 01:58:02 -0800 (PST)","by 2002:a05:620a:170f:b0:8c3:55bf:735b with SMTP id\n\taf79cd13be357-8c52fbde2b0mr822145085a.81.1768471082006; \n\tThu, 15 Jan 2026 01:58:02 -0800 (PST)"],"Message-ID":"<a1d3fc96-eccb-4104-85cb-43882dea88b1@oss.qualcomm.com>","Date":"Thu, 15 Jan 2026 10:58:00 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","From":"johannes.goede@oss.qualcomm.com","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tRobert Mader <robert.mader@collabora.com>, \n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<133e2641-3ede-4114-82e5-79670abc3f00@ideasonboard.com>","Content-Language":"en-US, nl","In-Reply-To":"<133e2641-3ede-4114-82e5-79670abc3f00@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-Proofpoint-ORIG-GUID":"FFRMXmu0hFA-ljVquza_BWOuziKttqpI","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwMTE1MDA3MSBTYWx0ZWRfX3CB+mnSejNdk\n\tGfXBnu8lOGACnJzwQicKlUtaw2S+wrnfNk6BVAjbBxB2K2QQofcDjPdVw2i+9ZuEgJOvsqqJ8YI\n\tKKa/7EWDYPQuuRNFLD0quLQBIhTegORUk5NBPR4iHdTDJvdrQqKzlkCrvtwXhKdjgfagJZHJe8V\n\tPRTyRvdj0bZhSF63O6Pi1GfnwefwRAjxWbcPkl74DlVQ/kld5FLd/8zHr3zSLsGV040EjTTJiLZ\n\tNy/ObHCGG1fsXOqKigrAcbPA8uf92ByGLQZS3yjnJ/2i1nOLpOP3EfZwBSm2Tnw7DRFY9zEbdx2\n\tQyyn4gdRukrXj+2ZhhYdnkP9Q7rwNyAoyDpAlb+wupx7Jha2ByK6nSTx7D7k0pa/wNHWtD08p6B\n\tZHXjT9ni4denFJc9QWMnDUHziiHM02aLqCJT5DcEU7nQIHdeoP9tbVk8yUKHHofCheV3ANHcuyw\n\tDlTKfG2UG2lm9e2Dx6w==","X-Authority-Analysis":"v=2.4 cv=dcCNHHXe c=1 sm=1 tr=0 ts=6968ba2b cx=c_pps\n\ta=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10\n\ta=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22\n\ta=YAyIRdgMAAAA:8 a=QX4gbG5DAAAA:8 a=P1BnusSwAAAA:8\n\ta=59yVEXqvIhr4O7m3ENYA:9\n\ta=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22\n\ta=o1rO4XtwZBNj6n05oSJ_:22 a=AbAUZ8qAyYyZVLSsDulk:22\n\ta=D0XLA9XvdZm18NrgonBM:22","X-Proofpoint-GUID":"FFRMXmu0hFA-ljVquza_BWOuziKttqpI","X-Proofpoint-Virus-Version":"vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1121, Hydra:6.1.9,\n\tFMLib:17.12.100.49\n\tdefinitions=2026-01-15_03,2026-01-14_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tpriorityscore=1501 malwarescore=0 phishscore=0 clxscore=1015\n\timpostorscore=0\n\tadultscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0\n\tbulkscore=0\n\tclassifier=typeunknown authscore=0 authtc= authcc= route=outbound\n\tadjust=0\n\treason=mlx scancount=1 engine=8.22.0-2512120000\n\tdefinitions=main-2601150071","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":37724,"web_url":"https://patchwork.libcamera.org/comment/37724/","msgid":"<85y0lt3kac.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","date":"2026-01-19T11:37:47","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":177,"url":"https://patchwork.libcamera.org/api/people/177/","name":"Milan Zamazal","email":"mzamazal@redhat.com"},"content":"Robert Mader <robert.mader@collabora.com> writes:\n\n> Which appears to be a better fit for the use-case at hand:\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\nMakes sense and works:\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\n\n> ---\n>\n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\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 0ffd008c7..19c5ff48f 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> @@ -297,7 +295,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>  \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>  \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 52876C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 11:37:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C6D061FBC;\n\tMon, 19 Jan 2026 12:37:55 +0100 (CET)","from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2D48C606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 12:37:54 +0100 (CET)","from mail-wm1-f70.google.com (mail-wm1-f70.google.com\n\t[209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-584-W9GqGR45N_Ok4U-xQq4u2A-1; Mon, 19 Jan 2026 06:37:52 -0500","by mail-wm1-f70.google.com with SMTP id\n\t5b1f17b1804b1-47edc79ff28so26836195e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 03:37:51 -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-4801fe65883sm77341105e9.15.2026.01.19.03.37.48\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 19 Jan 2026 03:37:48 -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=\"PraFzUJi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1768822673;\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=GfKEFqMdED02giN/oM13yxXyQGBRsCtYaqyaSLiK+60=;\n\tb=PraFzUJiaXWfKFX7bgTWaEMWE1z+Ueg8OSEK/r16p6x4VVehCNjqwoLZQm6chMicalvWxp\n\tPzGAVGNHWyoM1y/s6R8czSYKK3l2shnTRXM7fCfcU4jZt9xgnqGQhMJN/ZuYfIBb0X7CMV\n\tOON/0RkoriMhehXwSFkz1a17OTvlWgQ=","X-MC-Unique":"W9GqGR45N_Ok4U-xQq4u2A-1","X-Mimecast-MFC-AGG-ID":"W9GqGR45N_Ok4U-xQq4u2A_1768822671","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1768822670; x=1769427470;\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=GfKEFqMdED02giN/oM13yxXyQGBRsCtYaqyaSLiK+60=;\n\tb=v1VHZYEpyO3hxmkwZCg0h1iaC1xultRkMMV1DQ6vlZfBfmj5OjqLY0WBElpl24jqqw\n\tPwkeRbqXz5Erbly0tjpy9oqQMLdJxr2EiU1uEKW1U0A5Kit1iO8eWBM1hE/4Fyiqrckv\n\trZL11smbyfVYOoXy01PQwh+ikRuzbNwGkitsE4+eu3cYfVx0eRDyaKECja3+ttZVooAV\n\t+i6e8FEDxkKC5u6QkNOI6EX/wIvmRsj8dtHVC2IZ0NwwZIhWFeR2XSxcHheORvzAjJxZ\n\t7usVgVhehgpGVReTqOgMUmWn/ra15F02FVgzUcyR8qY9aN3uo85mzMq0yAG9KFzH2M7a\n\trmYw==","X-Gm-Message-State":"AOJu0YwAaKtYCK4+61a972xBW+OhUqZacswC6l3ghulqJ/2hktoDayst\n\ti+QpY9GJT/Oz9sOFP+Iq0szIAN80/HZ7MnXSpeg+6P+/8hXTk/wDeROfzhjsZ+mCBAWswbCW0Ys\n\t3byzecQCKjkMyf/MyxQpsefArIQVEH7QNlOMPs0ENy4GinubjDcwVL16fGwyBy35zGM1coPgT9T\n\tRuIrN7Rgnoz9ezT9Bd+q23N0VNaUDpv3EPndlulq3SJSsoZqzaVg5bDFa+AkA=","X-Gm-Gg":"AY/fxX5+rGqrFeGLdokhtoTrFv/Z7iHgiNtw+yPWcTWlfJiIy+0QU3z8rqotFHY0Wbi\n\tl1TLXnlaRPJRwZy+sIuriNX3NHt9SOE9Rhtfnb5F/pVoC+/M2uZx/Z0T4+NTRn7WijtI9LAwoYX\n\tmlqvGaYXT++ZVFmxNQNCtdGUm63I5kdgJtrjJOr40atOj1XBkzhgbo4oSN6euMmsltl8dd2w6TQ\n\tVXwUuDRqhRX1jQ6ftZ2BroxqOgNOJlNSAb+kMebRJfPat+5m93zvoWRMHdKSF+x1dlR+KJs2MQu\n\tIKcgYqdjXwqNIHJwIXLuwIC4qQSnZCCi8BHkIS3enwQG/eVRBW2x0sp2U96raKvbrxO0om5BtJe\n\tWj2SwG1XDwHQvPwEvwH2zy4zyYSpljsC4cIxzrnbleoHczk4DGdxHYEwGPMhIzIc=","X-Received":["by 2002:a05:600c:64c3:b0:47d:92bb:2723 with SMTP id\n\t5b1f17b1804b1-4801e30a168mr110368855e9.3.1768822669942; \n\tMon, 19 Jan 2026 03:37:49 -0800 (PST)","by 2002:a05:600c:64c3:b0:47d:92bb:2723 with SMTP id\n\t5b1f17b1804b1-4801e30a168mr110368505e9.3.1768822669400; \n\tMon, 19 Jan 2026 03:37:49 -0800 (PST)"],"From":"Milan Zamazal <mzamazal@redhat.com>","To":"Robert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","In-Reply-To":"<20260110221337.145378-1-robert.mader@collabora.com> (Robert\n\tMader's message of \"Sat, 10 Jan 2026 23:13:36 +0100\")","References":"<20260110221337.145378-1-robert.mader@collabora.com>","Date":"Mon, 19 Jan 2026 12:37:47 +0100","Message-ID":"<85y0lt3kac.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":"UTliCvtdlxo0ybD5ijzr_o2VJQE0CvKL-Z6LvxIPjrw_1768822671","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":37729,"web_url":"https://patchwork.libcamera.org/comment/37729/","msgid":"<176882655346.3486172.14036786901778364033@ping.linuxembedded.co.uk>","date":"2026-01-19T12:42:33","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2026-01-19 11:37:47)\n> Robert Mader <robert.mader@collabora.com> writes:\n> \n> > Which appears to be a better fit for the use-case at hand:\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\nDo we need to document these additional environment variables\nsomewhere/somehow [0]? - or are they just 'external' to libcamera?\n\n[0] https://git.libcamera.org/libcamera/libcamera.git/tree/Documentation/runtime_configuration.rst\n\n--\nKieran\n\n> > Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> \n> Makes sense and works:\n> \n> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n> \n> > ---\n> >\n> > Should be applied on to of\n> > https://patchwork.libcamera.org/cover/25706/\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> >       eGL();\n> >       ~eGL();\n> >  \n> > -     int initEGLContext(GBM *gbmContext);\n> > +     int initEGLContext();\n> >  \n> >       int createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n> >       int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n> > diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n> > index 0ffd008c7..19c5ff48f 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> >       EGLint configAttribs[] = {\n> >               EGL_RED_SIZE, 8,\n> >               EGL_GREEN_SIZE, 8,\n> >               EGL_BLUE_SIZE, 8,\n> >               EGL_ALPHA_SIZE, 8,\n> > -             EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n> > +             EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n> >               EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n> >               EGL_NONE\n> >       };\n> > @@ -297,7 +295,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n> >               goto fail;\n> >       }\n> >  \n> > -     display_ = eglGetDisplay(gbmContext->device());\n> > +     display_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n> >       if (display_ == EGL_NO_DISPLAY) {\n> >               LOG(eGL, Error) << \"Unable to get EGL display\";\n> >               goto 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> >       /*\n> >        * Tell shaders how to re-order output taking account of how the\n> > -      * pixels are actually stored by GBM\n> > +      * pixels are actually stored by EGL\n> >        */\n> >       switch (outputFormat) {\n> >       case formats::ARGB8888:\n> > @@ -586,10 +586,7 @@ int DebayerEGL::start()\n> >  {\n> >       GLint maxTextureImageUnits;\n> >  \n> > -     if (gbmSurface_.createDevice())\n> > -             return -ENODEV;\n> > -\n> > -     if (egl_.initEGLContext(&gbmSurface_))\n> > +     if (egl_.initEGLContext())\n> >               return -ENODEV;\n> >  \n> >       glGetIntegerv(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> >       Rectangle window_;\n> >       std::unique_ptr<SwStatsCpu> stats_;\n> >       eGL egl_;\n> > -     GBM gbmSurface_;\n> >       uint32_t width_;\n> >       uint32_t height_;\n> >       GLint glFormat_;\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5C84BBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 12:42:39 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6847F61FBC;\n\tMon, 19 Jan 2026 13:42:38 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1AA30606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 13:42:37 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 896F4BE1;\n\tMon, 19 Jan 2026 13:42:06 +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=\"qbLBSesY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768826526;\n\tbh=fdFo9Zzr8G3oZNMqmZMBoqcACDnUSlKWT9coB8ubK+I=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=qbLBSesY2FsA3aEvua1SvXVM0UQFgz/9xY3+q20hyo8EYS2ckdljVhNHppzdUqVtw\n\t0r6jVMDTLvyNeidVdqeLixBYe1fUbSflzC4QfK67Kz3x1F80odpNvCCpd4TTmCNuqh\n\tNAB8G5EM2ALbP/9PzSXU8B8NKVpqwYnKq1XctVZo=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<85y0lt3kac.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<85y0lt3kac.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","To":"Milan Zamazal <mzamazal@redhat.com>,\n\tRobert Mader <robert.mader@collabora.com>","Date":"Mon, 19 Jan 2026 12:42:33 +0000","Message-ID":"<176882655346.3486172.14036786901778364033@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":37730,"web_url":"https://patchwork.libcamera.org/comment/37730/","msgid":"<14375ca4-b392-4c41-b66f-8e7ce63f013c@ideasonboard.com>","date":"2026-01-19T12:47:39","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 01. 19. 13:42 keltezéssel, Kieran Bingham írta:\n> Quoting Milan Zamazal (2026-01-19 11:37:47)\n>> Robert Mader <robert.mader@collabora.com> writes:\n>>\n>>> Which appears to be a better fit for the use-case at hand:\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> \n> Do we need to document these additional environment variables\n> somewhere/somehow [0]? - or are they just 'external' to libcamera?\n> \n> [0] https://git.libcamera.org/libcamera/libcamera.git/tree/Documentation/runtime_configuration.rst\n\nI wouldn't list it there because it is an external thing, but maybe it could be\nmentioned in a separate document specifically about the software isp.\n\n\n> \n> --\n> Kieran\n> \n>>> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n>>\n>> Makes sense and works:\n>>\n>> Reviewed-by: Milan Zamazal <mzamazal@redhat.com>\n>>\n>>> ---\n>>>\n>>> Should be applied on to of\n>>> https://patchwork.libcamera.org/cover/25706/\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>>>        eGL();\n>>>        ~eGL();\n>>>\n>>> -     int initEGLContext(GBM *gbmContext);\n>>> +     int initEGLContext();\n>>>\n>>>        int createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n>>>        int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n>>> diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n>>> index 0ffd008c7..19c5ff48f 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>>>        EGLint configAttribs[] = {\n>>>                EGL_RED_SIZE, 8,\n>>>                EGL_GREEN_SIZE, 8,\n>>>                EGL_BLUE_SIZE, 8,\n>>>                EGL_ALPHA_SIZE, 8,\n>>> -             EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n>>> +             EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n>>>                EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n>>>                EGL_NONE\n>>>        };\n>>> @@ -297,7 +295,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n>>>                goto fail;\n>>>        }\n>>>\n>>> -     display_ = eglGetDisplay(gbmContext->device());\n>>> +     display_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n>>>        if (display_ == EGL_NO_DISPLAY) {\n>>>                LOG(eGL, Error) << \"Unable to get EGL display\";\n>>>                goto 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>>>        /*\n>>>         * Tell shaders how to re-order output taking account of how the\n>>> -      * pixels are actually stored by GBM\n>>> +      * pixels are actually stored by EGL\n>>>         */\n>>>        switch (outputFormat) {\n>>>        case formats::ARGB8888:\n>>> @@ -586,10 +586,7 @@ int DebayerEGL::start()\n>>>   {\n>>>        GLint maxTextureImageUnits;\n>>>\n>>> -     if (gbmSurface_.createDevice())\n>>> -             return -ENODEV;\n>>> -\n>>> -     if (egl_.initEGLContext(&gbmSurface_))\n>>> +     if (egl_.initEGLContext())\n>>>                return -ENODEV;\n>>>\n>>>        glGetIntegerv(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>>>        Rectangle window_;\n>>>        std::unique_ptr<SwStatsCpu> stats_;\n>>>        eGL egl_;\n>>> -     GBM gbmSurface_;\n>>>        uint32_t width_;\n>>>        uint32_t height_;\n>>>        GLint glFormat_;\n>>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 88C0AC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 12:47:47 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 70CDE61FC3;\n\tMon, 19 Jan 2026 13:47:46 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1020F606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 13:47:45 +0100 (CET)","from [192.168.33.17] (185.221.143.114.nat.pool.zt.hu\n\t[185.221.143.114])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 26FE7BE1;\n\tMon, 19 Jan 2026 13:47:12 +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=\"a2V9NWgj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768826834;\n\tbh=aOEhAUcloFgu6hD8aWtt/072S+bb4y+lNFVrbNu2oJw=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=a2V9NWgj2vtkXx+Q5xZLbhgvl4Mr1VJJo9UX2boleTGS1hSfRregtVEb+RZWvkQGC\n\tVXCkOu3QFCtDgihIxL6ZavttgC+/+PDSpR9xjwlelbs0HEAGADAXCtVmds5iDVLWxY\n\tlcpNXoFqe4AMFxWB84UMc6SM31HB38EET/lkhSSc=","Message-ID":"<14375ca4-b392-4c41-b66f-8e7ce63f013c@ideasonboard.com>","Date":"Mon, 19 Jan 2026 13:47:39 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMilan Zamazal <mzamazal@redhat.com>,\n\tRobert Mader <robert.mader@collabora.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<85y0lt3kac.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<n_h-13FmOL4_nCYv2sC7InUfG2aMEvbebp7s_HlPJoHcKsctjsFCRDWnltlMagNXXxzxSUWM3htTqAREccYMjA==@protonmail.internalid>\n\t<176882655346.3486172.14036786901778364033@ping.linuxembedded.co.uk>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<176882655346.3486172.14036786901778364033@ping.linuxembedded.co.uk>","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>"}},{"id":37731,"web_url":"https://patchwork.libcamera.org/comment/37731/","msgid":"<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>","date":"2026-01-19T12:51:54","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Robert Mader (2026-01-10 22:13:36)\n> Which appears to be a better fit for the use-case at hand:\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\n\n> Signed-off-by: Robert Mader <robert.mader@collabora.com>\n> \n> ---\n> \n> Should be applied on to of\n> https://patchwork.libcamera.org/cover/25706/\n\nNow that the above series is merged, I kicked these patches into CI but\nI'm afraid they failed to compile on all targets. Can you take a look\nplease?\n\nhttps://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1586726\n\nhttps://gitlab.freedesktop.org/camera/libcamera/-/jobs/91366140\n\n--\nKieran\n\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>         eGL();\n>         ~eGL();\n>  \n> -       int initEGLContext(GBM *gbmContext);\n> +       int initEGLContext();\n>  \n>         int createInputDMABufTexture2D(eGLImage &eglImage, int fd);\n>         int createOutputDMABufTexture2D(eGLImage &eglImage, int fd);\n> diff --git a/src/libcamera/egl.cpp b/src/libcamera/egl.cpp\n> index 0ffd008c7..19c5ff48f 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>         EGLint configAttribs[] = {\n>                 EGL_RED_SIZE, 8,\n>                 EGL_GREEN_SIZE, 8,\n>                 EGL_BLUE_SIZE, 8,\n>                 EGL_ALPHA_SIZE, 8,\n> -               EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n> +               EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,\n>                 EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n>                 EGL_NONE\n>         };\n> @@ -297,7 +295,7 @@ int eGL::initEGLContext(GBM *gbmContext)\n>                 goto fail;\n>         }\n>  \n> -       display_ = eglGetDisplay(gbmContext->device());\n> +       display_ = eglGetPlatformDisplay(EGL_PLATFORM_SURFACELESS_MESA, nullptr, nullptr);\n>         if (display_ == EGL_NO_DISPLAY) {\n>                 LOG(eGL, Error) << \"Unable to get EGL display\";\n>                 goto 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>         /*\n>          * Tell shaders how to re-order output taking account of how the\n> -        * pixels are actually stored by GBM\n> +        * pixels are actually stored by EGL\n>          */\n>         switch (outputFormat) {\n>         case formats::ARGB8888:\n> @@ -586,10 +586,7 @@ int DebayerEGL::start()\n>  {\n>         GLint maxTextureImageUnits;\n>  \n> -       if (gbmSurface_.createDevice())\n> -               return -ENODEV;\n> -\n> -       if (egl_.initEGLContext(&gbmSurface_))\n> +       if (egl_.initEGLContext())\n>                 return -ENODEV;\n>  \n>         glGetIntegerv(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>         Rectangle window_;\n>         std::unique_ptr<SwStatsCpu> stats_;\n>         eGL egl_;\n> -       GBM gbmSurface_;\n>         uint32_t width_;\n>         uint32_t height_;\n>         GLint glFormat_;\n> -- \n> 2.52.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 1242EBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 12:52:00 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F2A6B61FC3;\n\tMon, 19 Jan 2026 13:51:58 +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 6A51D606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 13:51:57 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DFF58B3;\n\tMon, 19 Jan 2026 13:51:26 +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=\"LzrOhxhY\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768827087;\n\tbh=muXQvQFd9aCByAuS4td4kDu9x9ecmXIWipowslVKDt8=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=LzrOhxhYVjGyRCmNRnt2O/NBNxpysLH0lgcTRlr0PS7TKx3Ski2QJBIcxlA0hWZwH\n\tNXmaTYPMV14Gblh5sJssSra81sv4iBo66aMiMnxPEweYEz0ElAhwiXMs0jjgujFhr3\n\tp5rXudWSgfgrjJkEhFMMQWuShrp9ILrg8B6JI6oI=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260110221337.145378-1-robert.mader@collabora.com>","References":"<20260110221337.145378-1-robert.mader@collabora.com>","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Robert Mader <robert.mader@collabora.com>","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 19 Jan 2026 12:51:54 +0000","Message-ID":"<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":37736,"web_url":"https://patchwork.libcamera.org/comment/37736/","msgid":"<0458b0d8-b87f-4a98-b636-0e629d52d1e4@collabora.com>","date":"2026-01-19T13:06:58","subject":"Re: [PATCH 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":"On 19.01.26 13:47, Barnabás Pőcze wrote:\n> 2026. 01. 19. 13:42 keltezéssel, Kieran Bingham írta:\n>> Quoting Milan Zamazal (2026-01-19 11:37:47)\n>>> Robert Mader <robert.mader@collabora.com> writes:\n>>>\n>>>> Which appears to be a better fit for the use-case at hand:\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 \n>>>> 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 \n>>>> LIBGL_ALWAYS_SOFTWARE=1).\n>>>>\n>>\n>> Do we need to document these additional environment variables\n>> somewhere/somehow [0]? - or are they just 'external' to libcamera?\n>>\n>> [0] \n>> https://git.libcamera.org/libcamera/libcamera.git/tree/Documentation/runtime_configuration.rst\n>\n> I wouldn't list it there because it is an external thing, but maybe it \n> could be\n> mentioned in a separate document specifically about the software isp.\n\nI'd also argue it's an external thing that\n\n 1. is quite specific to developers wanting to debug driver issues. This\n    small group will usually want to learn about various Mesa env\n    variables eventually - and LIBGL_ALWAYS_SOFTWARE is probably the\n    best known one amongst them.\n 2. may not work if llvmpipe isn't installed or a proprietary (but\n    compatible) driver is used, such as Nvidia.\n\nBut if requested I'd be happy to add it in some SW/GPU-ISP specific \npart, like Barnabás suggested.","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 6A7F9BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 13:07:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5185861FC4;\n\tMon, 19 Jan 2026 14:07:10 +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 07258606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 14:07:07 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768828021540706.6210968147715;\n\tMon, 19 Jan 2026 05:07:01 -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=\"adw6Kpn8\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768828023; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=MIYLwx8I51S8TE7XMl406CkYgZWcxgkIRry0yOLLw31aRUh3El4dGbGXZKGsX0xqBtjZzmt7fXZiASYWtuL2LeewfOEo8WSqffUqG+Sz0srpx+2yjIFQFqXaxlgIbXUCVeT8c1tHKip4rgYAhCKUfU1mPPqLLL2yjidFWeSpSLI=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768828023;\n\th=Content-Type:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To;\n\tbh=fnmMJGRPCcQ5ny3KQK+c9LFOqQVxjNKUup+LQ89pkCY=; \n\tb=WIVkwlik8YpTad9qt8K71e+8ch5HGEmbXFz0dPAKInPnRhp+nF4drSTF2ybVtBKfG0uVsoZ7o9j3OOkAQJF0xA+mDb08+z0eJQQRc6GPNtQeDebWt6Z4Y8I2AUSSXEpayjjx910PJuEJeHtEQcbtIoaHRz2ygKeIRm9nwOBR+Mg=","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=1768828023;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Message-Id:Reply-To;\n\tbh=fnmMJGRPCcQ5ny3KQK+c9LFOqQVxjNKUup+LQ89pkCY=;\n\tb=adw6Kpn8PtHJ5lX/ClCeTnPrMx9l6Eosjkay/4aPC2frHM5YSibbKUo880/eZDYz\n\tjEHppqwIQVLIu1dexk3XTRm9gUAcSuQG4pZSjMCXvRpFaa+hWgQkkmoDzG9waBL7dIH\n\tB6DQLZcPV5tI7E3GMJ52PGVTU17r2T8hbaV6GvNw=","Content-Type":"multipart/alternative;\n\tboundary=\"------------h0QQdnyl4BhUR2gWs3hsijzK\"","Message-ID":"<0458b0d8-b87f-4a98-b636-0e629d52d1e4@collabora.com>","Date":"Mon, 19 Jan 2026 14:06:58 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, \n\tMilan Zamazal <mzamazal@redhat.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<85y0lt3kac.fsf@mzamazal-thinkpadp1gen7.tpbc.csb>\n\t<n_h-13FmOL4_nCYv2sC7InUfG2aMEvbebp7s_HlPJoHcKsctjsFCRDWnltlMagNXXxzxSUWM3htTqAREccYMjA==@protonmail.internalid>\n\t<176882655346.3486172.14036786901778364033@ping.linuxembedded.co.uk>\n\t<14375ca4-b392-4c41-b66f-8e7ce63f013c@ideasonboard.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<14375ca4-b392-4c41-b66f-8e7ce63f013c@ideasonboard.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":37737,"web_url":"https://patchwork.libcamera.org/comment/37737/","msgid":"<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>","date":"2026-01-19T13:09:37","subject":"Re: [PATCH 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":"On 19.01.26 13:51, Kieran Bingham wrote:\n> Now that the above series is merged, I kicked these patches into CI but\n> I'm afraid they failed to compile on all targets. Can you take a look\n> please?\n>\n> https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1586726\n>\n> https://gitlab.freedesktop.org/camera/libcamera/-/jobs/91366140\nSure, will do! And urg, Debian 11 - happy to see it going EOL later this \nyear.\n>\n> --\n> Kieran\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D0947C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 13:09:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E357461FC0;\n\tMon, 19 Jan 2026 14:09:45 +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 233EC61FB9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 14:09:43 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768828180031653.7616137030207;\n\tMon, 19 Jan 2026 05:09:40 -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=\"jWcW66Wg\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768828182; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=iWNlj5nJMQtNBVAzL7CrEBqHrOttM2gMtZ1xCDwQyhzP4l1yQzTwJob9OaUvbhNh3vzcA8luaWQEzMRoiF+DjYUrYjQgWhKA3ffSwPLdvk7jeiqarOCH1GsdflVryftznc+WKLblhq4QoCiSsUQ+Vm+iOwAuvar4iF28g7n6D2M=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768828182;\n\th=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=pQSnbmooJ6ACoqil1AWkAt293TIa5EZ4ZUx01G0qTGs=; \n\tb=WTB536BQPX37nCVCAxQKbplRMD0zEv9tJpiGS6epvIL4D0Y/KDjYUIyDKVjm/YWNOAcqwqB9PyKN9fG8/GntWbViISmb3Bqqe5qtOD6kngiTNlBnNfKwLib55iQfbx6CeSuLEPYJ0Liwz8UGR+VmPskAfDgZ6X4wjH3SsCFtdWo=","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=1768828182;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Message-Id:Reply-To:Cc;\n\tbh=pQSnbmooJ6ACoqil1AWkAt293TIa5EZ4ZUx01G0qTGs=;\n\tb=jWcW66WgYHUqOx3S9k0Kw+p4fiXpjFyEDyZI0IP4OPHRsBOSGtosM3BPGjr+xy7I\n\tMJ0sOGCax2kxUsBYEB3PDk/HOxy+R/GUVzUeNsfmm+u7I6JsbDO8wfmqDPJggssWqq9\n\tooulFnwiyrZkaKGg1S5YwIwMi8Ed/Yh03h1klNAs=","Content-Type":"multipart/alternative;\n\tboundary=\"------------k0s2VdXO4Ir5pXSVlbxMOLCf\"","Message-ID":"<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>","Date":"Mon, 19 Jan 2026 14:09:37 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>","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":37738,"web_url":"https://patchwork.libcamera.org/comment/37738/","msgid":"<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>","date":"2026-01-19T13:34:39","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Robert Mader (2026-01-19 13:09:37)\n> On 19.01.26 13:51, Kieran Bingham wrote:\n> > Now that the above series is merged, I kicked these patches into CI but\n> > I'm afraid they failed to compile on all targets. Can you take a look\n> > please?\n> >\n> > https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1586726\n> >\n> > https://gitlab.freedesktop.org/camera/libcamera/-/jobs/91366140\n> Sure, will do! And urg, Debian 11 - happy to see it going EOL later this \n> year.\n\nIndeed, we'll drop it from our CI once it's EOL I believe. But until\nthen ... :-S\n\n--\nKieran\n\n> >\n> > --\n> > Kieran\n> >\n> -- \n> Robert Mader\n> Consultant Software Developer\n> \n> Collabora Ltd.\n> Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK\n> Registered in England & Wales, no. 5513718","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 DE1B8C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 13:34:44 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4887561FB9;\n\tMon, 19 Jan 2026 14:34:44 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9FC4D606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 14:34:42 +0100 (CET)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 15ACC2D9;\n\tMon, 19 Jan 2026 14:34:12 +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=\"LPlCkHQy\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768829652;\n\tbh=LYgXKkqFllWb/05Pw4YPoSJ4HSG8Fedy+WuCNoiM4DA=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=LPlCkHQyYV+xGEU3Cc975PMj4G7YeWpxDsnG9f3XErocYSNxF8H+DqJRS7CqSX31f\n\tvnFskLqm8rOh37RNKhPlQZF5BjQ4KaEGRziIprfiNNUp3Dx3i7TnCsNlAFNsMTxpf2\n\tRLSaPvLW1Pir7pxd8b/pawYE6Gt8Tv2tI1d8oIi4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>\n\t<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"Robert Mader <robert.mader@collabora.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 19 Jan 2026 13:34:39 +0000","Message-ID":"<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":37741,"web_url":"https://patchwork.libcamera.org/comment/37741/","msgid":"<03a164c0-7734-4193-909f-4218e62322c7@collabora.com>","date":"2026-01-19T16:12:39","subject":"Re: [PATCH 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":"On 19.01.26 14:34, Kieran Bingham wrote:\n> Quoting Robert Mader (2026-01-19 13:09:37)\n>> On 19.01.26 13:51, Kieran Bingham wrote:\n>>> Now that the above series is merged, I kicked these patches into CI but\n>>> I'm afraid they failed to compile on all targets. Can you take a look\n>>> please?\n>>>\n>>> https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1586726\n>>>\n>>> https://gitlab.freedesktop.org/camera/libcamera/-/jobs/91366140\n>> Sure, will do! And urg, Debian 11 - happy to see it going EOL later this\n>> year.\n> Indeed, we'll drop it from our CI once it's EOL I believe. But until\n> then ... :-S\n\nHad a quick look and the issue appears to be the revert: previously the \nEGL parts were not build on Debian 11 because of\n\nRun-time dependency gbm found: NO (tried pkgconfig and cmake)\nCheck usable header \"gbm.h\" : NO\n...\n|SoftISP GPU acceleration : False|\n\ni.e. rather by mistake if IIUC. Not sure yet how to handle that - maybe \njust require a minimum g++ version, if used?\n\nI tried wrapping the imports in 'external \"C\"' but that didn't work :/\n\n>\n> --\n> Kieran\n>\n>>> --\n>>> Kieran\n>>>\n>> -- \n>> Robert Mader\n>> Consultant Software Developer\n>>\n>> Collabora Ltd.\n>> Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK\n>> Registered in England & Wales, no. 5513718","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 94ECEBDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 16:12:51 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BDFBA61FBF;\n\tMon, 19 Jan 2026 17:12:50 +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 8B4B6606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 17:12:48 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768839162779631.098717502283;\n\tMon, 19 Jan 2026 08:12:42 -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=\"jECKVG9p\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768839165; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=QBrNCzBmxl/b2x6hUgveW4pV3xbTpFP8LKbkHxfFBzntPbGmjVgv+OWBZR9xlluHaRYm6h5kjbpYNE78WIV+1vwqtM9f9d1Rmlh/xwus1Q6Z20cexKsTh/7bI3JsbgQXmVbn8VQy3rH8g3L82rvh99pojprFgzg21Q9BoSo3K4Y=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768839165;\n\th=Content-Type:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=WJ2d1klpT7ZGkwSeVzA7zMHlTcjGbT75CVTeshMpnX0=; \n\tb=KsknT2hJ1WLQYQTEaWmFrEuyf5fAEH2FwbORGRKyKNtJVDUEmNoSGkmCYfCevClxz/kcTiFhjI3izBoXx5lRn2KkYx8nN3yP/6SJyXL/mgLF5P2lZMYMxzBs6XyKpF5wf97qwYaMkew4cv6LiayoZ+lML4xDrSfOwAMDTvGtqVU=","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=1768839165;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Content-Type:Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Message-Id:Reply-To:Cc;\n\tbh=WJ2d1klpT7ZGkwSeVzA7zMHlTcjGbT75CVTeshMpnX0=;\n\tb=jECKVG9p9o1ARNetjGKWsXpkcrusHdBWH/aXj7IKk3maj/7uB+dP6Sk4DlVJo4Wp\n\tQ+VqB5u3Oe5Cdr1dtv2usPpe4i8VCnD+lRgVBDL61wG8rFQhZKz6K0jqjqs2RdR1ah3\n\t+WuogRhOkaHs5KCDB0LJ2/u/K9pmPo/xhBqnLwDA=","Content-Type":"multipart/alternative;\n\tboundary=\"------------4x6dzx9jB19Q4Q6gUl52U81i\"","Message-ID":"<03a164c0-7734-4193-909f-4218e62322c7@collabora.com>","Date":"Mon, 19 Jan 2026 17:12:39 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>\n\t<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>\n\t<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>","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":37749,"web_url":"https://patchwork.libcamera.org/comment/37749/","msgid":"<686a55de-c58c-46aa-8d07-241f1a3cd7f7@ideasonboard.com>","date":"2026-01-19T17:46:15","subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 01. 19. 17:12 keltezéssel, Robert Mader írta:\n> \n> On 19.01.26 14:34, Kieran Bingham wrote:\n>> Quoting Robert Mader (2026-01-19 13:09:37)\n>>> On 19.01.26 13:51, Kieran Bingham wrote:\n>>>> Now that the above series is merged, I kicked these patches into CI but\n>>>> I'm afraid they failed to compile on all targets. Can you take a look\n>>>> please?\n>>>>\n>>>> https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1586726\n>>>>\n>>>> https://gitlab.freedesktop.org/camera/libcamera/-/jobs/91366140\n>>> Sure, will do! And urg, Debian 11 - happy to see it going EOL later this\n>>> year.\n>> Indeed, we'll drop it from our CI once it's EOL I believe. But until\n>> then ... :-S\n> \n> Had a quick look and the issue appears to be the revert: previously the EGL parts were not build on Debian 11 because of\n> \n> Run-time dependency gbm found: NO (tried pkgconfig and cmake)\n> Check usable header \"gbm.h\" : NO\n> ...\n> |SoftISP GPU acceleration : False|\n> \n> i.e. rather by mistake if IIUC. Not sure yet how to handle that - maybe just require a minimum g++ version, if used?\n> \n> I tried wrapping the imports in 'external \"C\"' but that didn't work :/\n\nBased on https://github.com/KhronosGroup/EGL-Registry/pull/130,\nhave you tried `#define EGL_NO_X11` before all includes in egl.cpp?\n\n\n> \n>> --\n>> Kieran\n>>\n>>>> --\n>>>> Kieran\n>>>>\n>>> -- \n>>> Robert Mader\n>>> Consultant Software Developer\n>>>\n>>> Collabora Ltd.\n>>> Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK\n>>> Registered in England & Wales, no. 5513718\n> \n> -- \n> Robert Mader\n> Consultant Software Developer\n> \n> Collabora Ltd.\n> Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK\n> Registered in England & Wales, no. 5513718\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 29E15BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 19 Jan 2026 17:46:22 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3051861FC6;\n\tMon, 19 Jan 2026 18:46:21 +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 9813C606D5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 19 Jan 2026 18:46:19 +0100 (CET)","from [192.168.33.17] (185.221.143.114.nat.pool.zt.hu\n\t[185.221.143.114])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A88EFC1;\n\tMon, 19 Jan 2026 18:45:48 +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=\"vL3/6zgc\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1768844748;\n\tbh=DcF9YFDs6KlUlwYQ0AV/qi+Exk9JRnf34XZhIHBZEw8=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=vL3/6zgciVZACDKx9dmTrrFWXmRG47/eClPTYGsRl1OdcRdyCq2aqrHp3kQjhKUFo\n\tXUmc3NUawSo8VDGwXJ6pg9r8US3poXg9MzM1fAWJlSFcKhD3aN/8YPO8ZKfnYhwM8x\n\tn0TdvmMiHryPPgnOhWojc2tfcWWlaVnJ1+mbWoR4=","Message-ID":"<686a55de-c58c-46aa-8d07-241f1a3cd7f7@ideasonboard.com>","Date":"Mon, 19 Jan 2026 18:46:15 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"Robert Mader <robert.mader@collabora.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>\n\t<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>\n\t<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>\n\t<03a164c0-7734-4193-909f-4218e62322c7@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":"<03a164c0-7734-4193-909f-4218e62322c7@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>"}},{"id":37758,"web_url":"https://patchwork.libcamera.org/comment/37758/","msgid":"<754e838d-4a95-470f-9832-3512ce60863c@collabora.com>","date":"2026-01-20T12:25:27","subject":"Re: [PATCH 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":"On 19.01.26 18:46, Barnabás Pőcze wrote:\n> Based on https://github.com/KhronosGroup/EGL-Registry/pull/130,\n> have you tried `#define EGL_NO_X11` before all includes in egl.cpp?\n>\nNice, thanks a lot for digging that out! Did that now in v2/v3.","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 D4E13BDCBF\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 20 Jan 2026 12:25:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8E74361FC7;\n\tTue, 20 Jan 2026 13:25:34 +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 198FC61A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 20 Jan 2026 13:25:32 +0100 (CET)","by mx.zohomail.com with SMTPS id 1768911929689609.4278586548147;\n\tTue, 20 Jan 2026 04:25:29 -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=\"TjjkOCNq\"; \n\tdkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1768911930; cv=none; \n\td=zohomail.com; s=zohoarc; \n\tb=OlMW/O+L10fFah1Kp/6han/MmZuucPxwxy4Qh2lIvymymqW+jylZqxVt6518GoDDphG4QYEKgJuobGLUT2knFDlLknfYasrF3nF8U5Li1WJS3YW7Ii0X9qM2OzZ2SokJyDr0brU3zqX7GD+SBiYnTBrGNKHA9gpoi3PuaB8fbLA=","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; \n\ts=zohoarc; t=1768911930;\n\th=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc;\n\tbh=gTGbE2V60nDd0MtnzSYtzb7DW7hSK2hrU/b9cbDi4qo=; \n\tb=eCzTuNgV4Y7mFxk6I3rqZNRskfLtEwcTS3skY9cpWSDhXwAM/G7VeguzPXSq6asSk4irLKAauiYvBI3KIRn9VjC4kjDlSJ8246bUPllQkoYpMH8C7hf5pF8wHiz/KD5DEtuOP5EK+PCBacYNOvTp3V05GlxA9PG0ZhykxcT5rVo=","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=1768911930;\n\ts=zohomail; d=collabora.com; i=robert.mader@collabora.com;\n\th=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;\n\tbh=gTGbE2V60nDd0MtnzSYtzb7DW7hSK2hrU/b9cbDi4qo=;\n\tb=TjjkOCNqbBe+0jKFPyAbsj7y3tapi7ztlrgm1eWLUf7i6ZWDg7/NBTm/Ucm11k2y\n\tRx8jXDgrYHVsTS0g2LC8b8EON8XAL4eNHFF1ZJ+BLNu7ZGkmWEj7oUfvRPE1TroZqFm\n\tObUPJUjnVrHBlkr9sr+UQ4Hta36hUOhe6RtTECbQ=","Message-ID":"<754e838d-4a95-470f-9832-3512ce60863c@collabora.com>","Date":"Tue, 20 Jan 2026 13:25:27 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 1/2] egl: Use the Mesa surfaceless platform instead of\n\tGBM","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","References":"<20260110221337.145378-1-robert.mader@collabora.com>\n\t<176882711451.3520004.2707418450539332522@ping.linuxembedded.co.uk>\n\t<c2591630-ec73-4aee-8aae-5aca468e9994@collabora.com>\n\t<176882967971.344978.9522989780098289726@ping.linuxembedded.co.uk>\n\t<03a164c0-7734-4193-909f-4218e62322c7@collabora.com>\n\t<686a55de-c58c-46aa-8d07-241f1a3cd7f7@ideasonboard.com>","Content-Language":"en-US, de-DE","From":"Robert Mader <robert.mader@collabora.com>","In-Reply-To":"<686a55de-c58c-46aa-8d07-241f1a3cd7f7@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>"}}]