Patch Detail
Show a patch.
GET /api/1.1/patches/23279/?format=api
{ "id": 23279, "url": "https://patchwork.libcamera.org/api/1.1/patches/23279/?format=api", "web_url": "https://patchwork.libcamera.org/patch/23279/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/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": "<20250428090413.38234-8-s.pueschel@pengutronix.de>", "date": "2025-04-28T09:02:32", "name": "[v11,07/19] libcamera: pipeline: vimc, uvcvideo: Don't rely on bufferCount", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "f40d5e941e7d2fea4ec4cd118e88b5a2e6d5ce55", "submitter": { "id": 225, "url": "https://patchwork.libcamera.org/api/1.1/people/225/?format=api", "name": "Sven Püschel", "email": "s.pueschel@pengutronix.de" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/23279/mbox/", "series": [ { "id": 5148, "url": "https://patchwork.libcamera.org/api/1.1/series/5148/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5148", "date": "2025-04-28T09:02:25", "name": "lc-compliance: Add test to queue more requests than hardware depth", "version": 11, "mbox": "https://patchwork.libcamera.org/series/5148/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/23279/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/23279/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 6B1EFC3321\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 28 Apr 2025 09:05:23 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 148F468B38;\n\tMon, 28 Apr 2025 11:05:21 +0200 (CEST)", "from metis.whiteo.stw.pengutronix.de\n\t(metis.whiteo.stw.pengutronix.de [IPv6:2a0a:edc0:2:b01:1d::104])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3A71D68AD9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 28 Apr 2025 11:05:07 +0200 (CEST)", "from ptz.office.stw.pengutronix.de ([2a0a:edc0:0:900:1d::77]\n\thelo=peter.guest.stw.pengutronix.de)\n\tby metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92)\n\t(envelope-from <s.pueschel@pengutronix.de>)\n\tid 1u9KQE-0001au-TP; Mon, 28 Apr 2025 11:05:06 +0200" ], "From": "=?utf-8?q?Sven_P=C3=BCschel?= <s.pueschel@pengutronix.de>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "=?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4gUHJhZG8=?= <nfraprado@collabora.com>,\n\tPaul Elder <paul.elder@ideasonboard.com>, \n\tJacopo Mondi <jacopo@jmondi.org>, =?utf-8?q?Sven_P=C3=BCschel?=\n\t<s.pueschel@pengutronix.de>", "Subject": "[PATCH v11 07/19] libcamera: pipeline: vimc,\n\tuvcvideo: Don't rely on bufferCount", "Date": "Mon, 28 Apr 2025 11:02:32 +0200", "Message-ID": "<20250428090413.38234-8-s.pueschel@pengutronix.de>", "X-Mailer": "git-send-email 2.49.0", "In-Reply-To": "<20250428090413.38234-1-s.pueschel@pengutronix.de>", "References": "<20250428090413.38234-1-s.pueschel@pengutronix.de>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-SA-Exim-Connect-IP": "2a0a:edc0:0:900:1d::77", "X-SA-Exim-Mail-From": "s.pueschel@pengutronix.de", "X-SA-Exim-Scanned": "No (on metis.whiteo.stw.pengutronix.de);\n\tSAEximRunCond expanded to false", "X-PTX-Original-Recipient": "libcamera-devel@lists.libcamera.org", "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": "From: Nícolas F. R. A. Prado <nfraprado@collabora.com>\n\nInstead of using bufferCount as the number of V4L2 buffer slots to\nreserve in the vimc and uvcvideo pipeline handlers, use a reasonably\nhigh constant: 16. Overallocating isn't a problem as buffer slots are\ncheap. Having too few, on the other hand, could degrade performance. It\nis expected that this number will be more than enough for most, if not\nall, use cases.\n\nThis makes way for removing bufferCount.\n\nSigned-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\nSigned-off-by: Sven Püschel <s.pueschel@pengutronix.de>\n\n---\nChanges in v11:\n- rebased\n\nChanges in v9:\n- rebased\n\nChanges in v8:\n- New\n---\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 5 +++--\n src/libcamera/pipeline/vimc/vimc.cpp | 5 +++--\n 2 files changed, 6 insertions(+), 4 deletions(-)", "diff": "diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\nindex 60c82364..e1259cf3 100644\n--- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n+++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp\n@@ -109,6 +109,8 @@ private:\n \t{\n \t\treturn static_cast<UVCCameraData *>(camera->_d());\n \t}\n+\n+\tstatic constexpr unsigned int kUVCBufferSlotCount = 16;\n };\n \n namespace {\n@@ -291,9 +293,8 @@ int PipelineHandlerUVC::exportFrameBuffers(Camera *camera,\n int PipelineHandlerUVC::start(Camera *camera, [[maybe_unused]] const ControlList *controls)\n {\n \tUVCCameraData *data = cameraData(camera);\n-\tunsigned int count = data->stream_.configuration().bufferCount;\n \n-\tint ret = data->video_->importBuffers(count);\n+\tint ret = data->video_->importBuffers(kUVCBufferSlotCount);\n \tif (ret < 0)\n \t\treturn ret;\n \ndiff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp\nindex 8833647a..e66dbd78 100644\n--- a/src/libcamera/pipeline/vimc/vimc.cpp\n+++ b/src/libcamera/pipeline/vimc/vimc.cpp\n@@ -109,6 +109,8 @@ private:\n \t{\n \t\treturn static_cast<VimcCameraData *>(camera->_d());\n \t}\n+\n+\tstatic constexpr unsigned int kVimcBufferSlotCount = 16;\n };\n \n namespace {\n@@ -356,9 +358,8 @@ int PipelineHandlerVimc::exportFrameBuffers(Camera *camera,\n int PipelineHandlerVimc::start(Camera *camera, [[maybe_unused]] const ControlList *controls)\n {\n \tVimcCameraData *data = cameraData(camera);\n-\tunsigned int count = data->stream_.configuration().bufferCount;\n \n-\tint ret = data->video_->importBuffers(count);\n+\tint ret = data->video_->importBuffers(kVimcBufferSlotCount);\n \tif (ret < 0)\n \t\treturn ret;\n \n", "prefixes": [ "v11", "07/19" ] }