Patch Detail
Show a patch.
GET /api/patches/24189/?format=api
{ "id": 24189, "url": "https://patchwork.libcamera.org/api/patches/24189/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24189/", "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": "<20250824-b4-v0-5-2-gpuisp-v2-a-v2-6-96f4576c814e@linaro.org>", "date": "2025-08-24T00:48:18", "name": "[v2,06/37] libcamera: MappedFrameBuffer: Add MappedFrameBuffer::getPlaneFD()", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "a47d360aa93a527be7b17005de28adec316d0bba", "submitter": { "id": 175, "url": "https://patchwork.libcamera.org/api/people/175/?format=api", "name": "Bryan O'Donoghue", "email": "bryan.odonoghue@linaro.org" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24189/mbox/", "series": [ { "id": 5400, "url": "https://patchwork.libcamera.org/api/series/5400/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5400", "date": "2025-08-24T00:48:12", "name": "Add GLES 2.0 GPUISP to libcamera", "version": 2, "mbox": "https://patchwork.libcamera.org/series/5400/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24189/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24189/checks/", "tags": {}, "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 CF37FBEFBE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 24 Aug 2025 00:48:53 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 049CF692FD;\n\tSun, 24 Aug 2025 02:48:52 +0200 (CEST)", "from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com\n\t[IPv6:2a00:1450:4864:20::32e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 1FDA8692F4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 24 Aug 2025 02:48:42 +0200 (CEST)", "by mail-wm1-x32e.google.com with SMTP id\n\t5b1f17b1804b1-45b5c12dd87so3404785e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 23 Aug 2025 17:48:42 -0700 (PDT)", "from [192.168.0.13] (188-141-3-146.dynamic.upc.ie. [188.141.3.146])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-45b4e1d530esm69347225e9.0.2025.08.23.17.48.40\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSat, 23 Aug 2025 17:48:41 -0700 (PDT)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"gAayJoIV\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=linaro.org; s=google; t=1755996522; x=1756601322;\n\tdarn=lists.libcamera.org; \n\th=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n\t:mime-version:subject:date:from:from:to:cc:subject:date:message-id\n\t:reply-to; bh=tJg4W7XvV4RX190Y3LBbTV0mnGTCxezpMPVHDsEmziY=;\n\tb=gAayJoIVxcSeZI0RHdnOcKTQkW8uSLuSxO6jwIh3DnEv0XuwD4nTFfEvD88w0CCuK8\n\tD0y+aUUiz881uPDD1ufIM7HWR5yJzNXY4B7XwbeGph5trjEA5SCQLXXnfeoiOAUcLSjD\n\t3R66QFC5ZtO3B5zgzNdxTGlxE/Gzuz66V7sWqUYllx3Fs8gX7W1JMStgnCeMq3cFwWzk\n\tLiOXvhLiuj9BIqq8PRKfVToL/3ghykZ+QycHbQ2Tfjlu03jEu6XCt1Wc9mCC5if7nTtV\n\tW4Uo3WrnnLe31+ZNIea8q/Vor5Fo+pcrYgdxbniHbqfiRhP+j4nHmLJxHhWNUWRiNjph\n\tGwtA==", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1755996522; x=1756601322;\n\th=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n\t:mime-version:subject:date:from:x-gm-message-state:from:to:cc\n\t:subject:date:message-id:reply-to;\n\tbh=tJg4W7XvV4RX190Y3LBbTV0mnGTCxezpMPVHDsEmziY=;\n\tb=gtasYvGWFaxoMhY61kgiS+vMBo8Sc19048TXz4VMmZKHKTDvguK3OGnwp6LandZqQ+\n\tss21OoigRtdJDGSUkpqHac20gPkoVpghGUgIjeh7wxQqWlCc7qmJB4Ru2k033qcsOPOt\n\ti8vN1Qd8exOXWO+uk/CLAk5Fe1qgexbOr2Wp4JsApn+4AQsZlLce2dI/m5afmjT0tQmZ\n\tJuXTE/It4CXRRnsobUoACSyLKp8qS33jsMFyuuqEMQ+9au9NBCPRbDYGk5LkjEJfChsF\n\tQfmLcCpWrn+CYxpgPose0b/B8cq+DC7x6eEHe9sdFTrz6ALWlJpY+jliRc4typDCOg2J\n\tc3Ww==", "X-Gm-Message-State": "AOJu0Yx04f/kmV2u27ntj/cDX1oP+rITrem01jiaHdXDfFTexDCXBKG1\n\tdA9kOMkYrKL2k4hdCSp2pS9inTfFQVdHP/CHzbgkWzlLMz8/JvDZ935dXhKq5bzMFdFpphe6HRs\n\tq5ClRZBY=", "X-Gm-Gg": "ASbGncs0amb3gTwew7QCeY0rDMZbX7ob9pn81KV5Hc+EamfRs4ix1TdCaZZT/UoAmxv\n\tPBfiu0k50Z/DPdhmFhXKE6lwkpJ/cTqgTgxREJB1YjDOODJAWuTDmNzOIX7FWZX6p0tl8nnBT4I\n\tHoUK0wCXJgIoQc6ZlmtAUBaXGYAVrDIE1ginWg0qf4XuWjMgH+Nmg4bjGOgn885JjRC0RExzZgP\n\t4vvl2K80Gmc/akcc+oj/3LyN0Tlf2EC2vDOyMXMvttHMcUZJVNzo224dwWOevbSPYnEb6LqmD7o\n\tcrUimmjRJS7j5uzTOqzlCoM84wBhg3chs/FGAt8nZ4wBCKvxjjiF2RVnn8QtxGO5ulUHQdnFfGJ\n\t+i19ry4Wk6IxbPVGNKjd+z6DZu6TudMhvqIEiIX3FKi4d1fg+45n1dMTnxIOLxbs5M1SC5SW8tJ\n\tXNvFVTYRe66d2nWHag5ukf", "X-Google-Smtp-Source": "AGHT+IGHJUcFlLcMzLARueAew8ikbm5r0IQf+3nyms/NpIQQs7YpdCCEY9VHxi4xjBJ8uy6l2o5Uew==", "X-Received": "by 2002:a05:600c:1988:b0:458:bd2a:496f with SMTP id\n\t5b1f17b1804b1-45b517cbf19mr56877175e9.21.1755996521641; \n\tSat, 23 Aug 2025 17:48:41 -0700 (PDT)", "From": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>", "Date": "Sun, 24 Aug 2025 01:48:18 +0100", "Subject": "[PATCH v2 06/37] libcamera: MappedFrameBuffer: Add\n\tMappedFrameBuffer::getPlaneFD()", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20250824-b4-v0-5-2-gpuisp-v2-a-v2-6-96f4576c814e@linaro.org>", "References": "<20250824-b4-v0-5-2-gpuisp-v2-a-v2-0-96f4576c814e@linaro.org>", "In-Reply-To": "<20250824-b4-v0-5-2-gpuisp-v2-a-v2-0-96f4576c814e@linaro.org>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Bryan O'Donoghue <bryan.odonoghue@linaro.org>, \n\tMilan Zamazal <mzamazal@redhat.com>", "X-Mailer": "b4 0.14.2", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=1906;\n\ti=bryan.odonoghue@linaro.org; h=from:subject:message-id;\n\tbh=092EHdwSf+5Rt7hozTx/KrEY70u8ynItZ52MVZPGE5A=;\n\tb=owEBbQKS/ZANAwAKASJxO7Ohjcg6AcsmYgBoqmFdbIkGja6JJej9jP0/5WwrdeetoxArXcrBt\n\tZKCvNTT+uaJAjMEAAEKAB0WIQTmk/sqq6Nt4Rerb7QicTuzoY3IOgUCaKphXQAKCRAicTuzoY3I\n\tOkxND/0R1LrpsCuA4GrNJgOqLSNxj8mWwGo69073laNzkzzF1FZXmqCKJV5rWUBZxWfKv4ldPE+\n\tnhbJRdnOJmSRJucb5+Zw+XEbUf9Qra6RECRLsUDHVCkJj5X7MiT8sel0Pb/Q2U2fr0hoYoi67b8\n\tXzOmPkQW8qnYBxm8DEi/K8Uu80WabINfTugZ8IhBaYdvaJHHWTSum9LnCHXPe1kQhtUMpY6mrCX\n\t9ktm7R848N1jfiO+Cptpp6swRzLa8vsnNSEB7cVbcmavo85X/KQdQFOFlwicBrJPa7WKsXVcxeY\n\tiQbgF3a5DlbeQ4gnQeIPcGfyUKHi/ouhOvXA/TazZga2QXMs1ZItaoMDUdZHIfWhKx7L5KgeHLO\n\tZ7OmOvUfOoM3aOjrM8uS1hEwaAW6dqBd60JrPi7LEJjqEylMu8q3eU96kR60a/Y52+pnVTJqvB3\n\tJZt/pxzjcyo9nzdIjEhXj8ni05nvnNwx06cDK78mYpg/5vg0gAU2wfJm81Cd2vwGctCAr+l05Hg\n\twYCz6MfXpwDoVyAxW9TMnabuIqG/s7M0SvdKeSKsSymymIO0ty2tEcZUZcQhMfU8Zrepd5c56ru\n\tctPjCUmvX4QsssI1fDR6pMtLyMp5DakBdorDOijMpi0fjbckE/9ikTUeQeQ3QVZbv3u0275otUq\n\t7mVnriRyQPaig6g==", "X-Developer-Key": "i=bryan.odonoghue@linaro.org; a=openpgp;\n\tfpr=E693FB2AABA36DE117AB6FB422713BB3A18DC83A", "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": "Add MappedFrameBuffer::getPlaneFD() which takes a plane index and returns\nthe file descriptor associated with it.\n\nThis fd will be used to feed into eglCreateImageKHR for both texture\ncreation on upload and directly render-to-texture where the texture buffer\ncomes from the fd given to eglCreateImageKHR.\n\nReviewed-by: Milan Zamazal <mzamazal@redhat.com>\nSigned-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>\n---\n include/libcamera/internal/mapped_framebuffer.h | 4 ++++\n src/libcamera/mapped_framebuffer.cpp | 10 ++++++++++\n 2 files changed, 14 insertions(+)", "diff": "diff --git a/include/libcamera/internal/mapped_framebuffer.h b/include/libcamera/internal/mapped_framebuffer.h\nindex 6aaabf5086b4658363e4e2ed02242248bfffdcbc..f7a6870764c4d035f77544354aa46a70095952a0 100644\n--- a/include/libcamera/internal/mapped_framebuffer.h\n+++ b/include/libcamera/internal/mapped_framebuffer.h\n@@ -55,6 +55,10 @@ public:\n \tusing MapFlags = Flags<MapFlag>;\n \n \tMappedFrameBuffer(const FrameBuffer *buffer, MapFlags flags);\n+\tint getPlaneFD(unsigned int plane);\n+\n+private:\n+\tconst FrameBuffer *buffer_;\n };\n \n LIBCAMERA_FLAGS_ENABLE_OPERATORS(MappedFrameBuffer::MapFlag)\ndiff --git a/src/libcamera/mapped_framebuffer.cpp b/src/libcamera/mapped_framebuffer.cpp\nindex f54bbf21f10987aecdf02c0a946edbb4931dd4c0..e85030d904ffaa5cd8cfae7b02d4b1b7010452a5 100644\n--- a/src/libcamera/mapped_framebuffer.cpp\n+++ b/src/libcamera/mapped_framebuffer.cpp\n@@ -238,6 +238,16 @@ MappedFrameBuffer::MappedFrameBuffer(const FrameBuffer *buffer, MapFlags flags)\n \n \t\tplanes_.emplace_back(info.address + plane.offset, plane.length);\n \t}\n+\n+\tbuffer_ = buffer;\n+}\n+\n+int MappedFrameBuffer::getPlaneFD(unsigned int plane)\n+{\n+\tif (plane > buffer_->planes().size())\n+\t\treturn -EINVAL;\n+\n+\treturn buffer_->planes()[plane].fd.get();\n }\n \n } /* namespace libcamera */\n", "prefixes": [ "v2", "06/37" ] }