From patchwork Mon Jun 29 16:30:06 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 27122 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id D6273C3303 for ; Mon, 29 Jun 2026 16:31:35 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7FB1465FC1; Mon, 29 Jun 2026 18:31:35 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="lsnPwV1Q"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BEA5065F68 for ; Mon, 29 Jun 2026 18:30:30 +0200 (CEST) Received: from pb-laptop.local (185.221.140.128.nat.pool.zt.hu [185.221.140.128]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 96621E91 for ; Mon, 29 Jun 2026 18:29:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1782750587; bh=hLyydRT7gnfRwyUIKcRyO2xfLAfGw2wn7YD6yupxNQo=; h=From:To:Subject:Date:In-Reply-To:References:From; b=lsnPwV1QjOrCmTsb3zFHMTjweiHdUz81VZLu9sc+Wh+RUY01mPK8ih/Y3JYfehpsV 0TG6pWSkAHCQxkTev2jEDWtEPcLnqQeNRVRJYOwBjUlIumXXgJt3oAVfBV56FQwSLp 0+5ro+bl0a0xQUOZ9iWD4XBgxFdYNXOlyrSrMJS0= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [RFC PATCH v1 43/54] test: Use camera buffer pool Date: Mon, 29 Jun 2026 18:30:06 +0200 Message-ID: <20260629163017.863145-44-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260629163017.863145-1-barnabas.pocze@ideasonboard.com> References: <20260629163017.863145-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Port to using the camera's buffer pool. Reviewed-by: Barnabás Pőcze --- test/camera/buffer_import.cpp | 21 +++++++++++++++------ test/camera/camera_reconfigure.cpp | 22 +++++++++++++++------- test/camera/capture.cpp | 23 ++++++++++++++++------- test/camera/statemachine.cpp | 4 +++- 4 files changed, 49 insertions(+), 21 deletions(-) diff --git a/test/camera/buffer_import.cpp b/test/camera/buffer_import.cpp index c6f35a3135..0fd1749acc 100644 --- a/test/camera/buffer_import.cpp +++ b/test/camera/buffer_import.cpp @@ -55,7 +55,12 @@ protected: completeRequestsCount_++; - request->reuse(Request::ReuseBuffers); + for (const auto &[stream, buffer] : request->buffers()) + camera_->addBuffer(stream, buffer); + + request->reuse(); + request->enableStream(config_->at(0).stream(), true); + camera_->queueRequest(request); dispatcher_->interrupt(); @@ -98,17 +103,14 @@ protected: if (ret != TestPass) return ret; - for (const std::unique_ptr &buffer : source.buffers()) { + for ([[maybe_unused]] const auto &buffer : source.buffers()) { std::unique_ptr request = camera_->createRequest(); if (!request) { std::cout << "Failed to create request" << std::endl; return TestFail; } - if (request->addBuffer(stream, buffer.get())) { - std::cout << "Failed to associating buffer with request" << std::endl; - return TestFail; - } + request->enableStream(stream, true); requests_.push_back(std::move(request)); } @@ -124,6 +126,13 @@ protected: return TestFail; } + for (const std::unique_ptr &buffer : source.buffers()) { + if (camera_->addBuffer(stream, buffer.get())) { + std::cout << "Failed to add buffer" << std::endl; + return TestFail; + } + } + for (std::unique_ptr &request : requests_) { if (camera_->queueRequest(request.get())) { std::cout << "Failed to queue request" << std::endl; diff --git a/test/camera/camera_reconfigure.cpp b/test/camera/camera_reconfigure.cpp index ae9941c16b..0688a24582 100644 --- a/test/camera/camera_reconfigure.cpp +++ b/test/camera/camera_reconfigure.cpp @@ -46,8 +46,12 @@ private: if (request->status() != Request::RequestComplete) return; - /* Reuse the request and re-queue it with the same buffers. */ - request->reuse(Request::ReuseBuffers); + for (const auto &[stream, buffer] : request->buffers()) + camera_->addBuffer(stream, buffer); + + request->reuse(); + request->enableStream(config_->at(0).stream(), true); + camera_->queueRequest(request); } @@ -80,17 +84,14 @@ private: allocated_ = true; } - for (const unique_ptr &buffer : allocator_->buffers(stream)) { + for ([[maybe_unused]] const auto &buffer : allocator_->buffers(stream)) { unique_ptr request = camera_->createRequest(); if (!request) { cerr << "Failed to create request" << endl; return TestFail; } - if (request->addBuffer(stream, buffer.get())) { - cerr << "Failed to associate buffer with request" << endl; - return TestFail; - } + request->enableStream(stream, true); requests_.push_back(std::move(request)); } @@ -102,6 +103,13 @@ private: return TestFail; } + for (const unique_ptr &buffer : allocator_->buffers(stream)) { + if (camera_->addBuffer(stream, buffer.get())) { + cerr << "Failed to add buffer" << endl; + return TestFail; + } + } + for (unique_ptr &request : requests_) { if (camera_->queueRequest(request.get())) { cerr << "Failed to queue request" << endl; diff --git a/test/camera/capture.cpp b/test/camera/capture.cpp index bc8cf4c59d..35ceabf87a 100644 --- a/test/camera/capture.cpp +++ b/test/camera/capture.cpp @@ -51,7 +51,12 @@ protected: completeRequestsCount_++; - request->reuse(Request::ReuseBuffers); + for (const auto &[stream, buffer] : request->buffers()) + camera_->addBuffer(stream, buffer); + + request->reuse(); + request->enableStream(config_->at(0).stream(), true); + camera_->queueRequest(request); dispatcher_->interrupt(); @@ -99,17 +104,14 @@ protected: if (ret < 0) return TestFail; - for (const std::unique_ptr &buffer : allocator_->buffers(stream)) { - std::unique_ptr request = camera_->createRequest(); + for ([[maybe_unused]] const auto &buffer : allocator_->buffers(stream)) { + unique_ptr request = camera_->createRequest(); if (!request) { cout << "Failed to create request" << endl; return TestFail; } - if (request->addBuffer(stream, buffer.get())) { - cout << "Failed to associate buffer with request" << endl; - return TestFail; - } + request->enableStream(stream, true); requests_.push_back(std::move(request)); } @@ -125,6 +127,13 @@ protected: return TestFail; } + for (const unique_ptr &buffer : allocator_->buffers(stream)) { + if (camera_->addBuffer(stream, buffer.get())) { + cout << "Failed to add buffer" << endl; + return TestFail; + } + } + for (std::unique_ptr &request : requests_) { if (camera_->queueRequest(request.get())) { cout << "Failed to queue request" << endl; diff --git a/test/camera/statemachine.cpp b/test/camera/statemachine.cpp index 9c2b0c6a7d..97bd5344cd 100644 --- a/test/camera/statemachine.cpp +++ b/test/camera/statemachine.cpp @@ -150,9 +150,11 @@ protected: return TestFail; Stream *stream = *camera_->streams().begin(); - if (request->addBuffer(stream, allocator_->buffers(stream)[0].get())) + if (camera_->addBuffer(stream, allocator_->buffers(stream)[0].get())) return TestFail; + request->enableStream(stream, true); + if (camera_->queueRequest(request.get())) return TestFail;