Show a cover letter.

GET /api/covers/27602/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 27602,
    "url": "https://patchwork.libcamera.org/api/covers/27602/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/27602/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260804101949.353266-1-barnabas.pocze@ideasonboard.com>",
    "date": "2026-08-04T10:19:39",
    "name": "[RFC,v1,00/10] libcamera: software_isp: debayer_egl: Remove some leaks",
    "submitter": {
        "id": 216,
        "url": "https://patchwork.libcamera.org/api/people/216/?format=api",
        "name": "Barnabás Pőcze",
        "email": "barnabas.pocze@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/27602/mbox/",
    "series": [
        {
            "id": 6105,
            "url": "https://patchwork.libcamera.org/api/series/6105/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6105",
            "date": "2026-08-04T10:19:39",
            "name": "libcamera: software_isp: debayer_egl: Remove some leaks",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/6105/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/27602/comments/",
    "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 DBD03C3301\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  4 Aug 2026 10:19:55 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9C8366809C;\n\tTue,  4 Aug 2026 12:19:54 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6688F67F9E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Aug 2026 12:19:52 +0200 (CEST)",
            "from pb-laptop.local (185.221.141.208.nat.pool.zt.hu\n\t[185.221.141.208])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A52951C76\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Aug 2026 12:18:42 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"vyqUA70v\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1785838722;\n\tbh=73GLlYHZqzeWtEsKXpBYJzrBZjjFRBnRuDZljroMRzU=;\n\th=From:To:Subject:Date:From;\n\tb=vyqUA70vFoIBYpuekYH5iVa3g2Z/xL/KwAa/z+tEuz/gqGFbPCp2Vc6tRg+/FM9oi\n\tl9GsAyMjdNdva7XoJwXPA8e2L/VBP9j39rBUEorK1y70U0x+6nVYHCTa4CX20qrmiO\n\tK5t7uGauOKkUZh6dNWU+p5ubEEmNMktg3T/Az8y4=",
        "From": "=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Subject": "[RFC PATCH v1 00/10] libcamera: software_isp: debayer_egl: Remove\n\tsome leaks",
        "Date": "Tue,  4 Aug 2026 12:19:39 +0200",
        "Message-ID": "<20260804101949.353266-1-barnabas.pocze@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.55.0",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "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>"
    },
    "content": "Currently `eGL::initEGLContext()` is called each time the camera is started,\nso the `EGLContext` is leaked if the camera is started more than once.\n\nFurthermore, mesa does not seem to have any thread destructors to clean up\nthe bound context when the thread is stopped.\n\nSo these are some RFC changes intended to address the above leaks.\n(As well some other small changes.)\n\nThe effects can be observed with asan and e.g.\n\n  $ lc-compliance -f '*CaptureStartStop/StillCapture__8' -c '\\_SB_.PC00.LNK1'\n  (which does 3 start-stop sequences)\n\nbut I have also extended `cam` to be able to repeat the capture sessions, and that\nvery clearly shows a start-stop leak:\n\n  before:\n    repeat | result\n         4 | SUMMARY: AddressSanitizer: 8979617 byte(s) leaked in 72738 allocation(s).\n         8 | SUMMARY: AddressSanitizer: 17536873 byte(s) leaked in 144057 allocation(s).\n        16 | SUMMARY: AddressSanitizer: 34717529 byte(s) leaked in 286697 allocation(s).\n        32 | SUMMARY: AddressSanitizer: 69078457 byte(s) leaked in 571977 allocation(s).\n\n  after:\n    repeat | result\n        32 | SUMMARY: AddressSanitizer: 487117 byte(s) leaked in 1425 allocation(s).\n\nBarnabás Pőcze (10):\n  libcamera: egl: Remove `gl{Use,Delete}Program()`\n  libcamera: egl: Remove `eGL::surface_`\n  libcamera: egl: Do not load `glGetString` dynamically\n  libcamera: egl: Ensure all members are always initialized\n  libcamera: egl: Add `resetEGLContext()`\n  libcamera: software_isp: debayer_egl: Avoid EGL context leaks\n  libcamera: egl: initEGLContext(): Avoid double init\n  libcamera: software_isp: debayer_egl: Remove EGL context switch\n  libcamera: egl: Make it possible to unmake the context\n  libcamera: software_isp: debayer_egl: Unmake EGL context\n\n include/libcamera/internal/egl.h           | 17 ++--\n src/libcamera/egl.cpp                      | 97 +++++++++-------------\n src/libcamera/software_isp/debayer_egl.cpp |  8 +-\n 3 files changed, 49 insertions(+), 73 deletions(-)\n\n--\n2.55.0"
}