From e14c06c19ac8209161d9ffcacd83e2ec478aef64 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 31 Mar 2026 17:17:07 +0200 Subject: [PATCH] libcamera: mali-c55: Do not rely on bufferCount MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Do not rely on bufferCount for the allocation of parameters and stats buffers but add instead kMaliC55BufferCount which is also used to limit the number of in-flight requests supported by the pipeline handler. Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Reviewed-by: Barnabás Pőcze --- src/libcamera/pipeline/mali-c55/mali-c55.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp index eb2e658b..2b0e3c84 100644 --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp @@ -47,6 +47,8 @@ namespace { +static constexpr unsigned int kMaliC55BufferCount = 8; + bool isFormatRaw(const libcamera::PixelFormat &pixFmt) { return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding == @@ -777,7 +779,7 @@ private: }; PipelineHandlerMaliC55::PipelineHandlerMaliC55(CameraManager *manager) - : PipelineHandler(manager), dsFitted_(true) + : PipelineHandler(manager, kMaliC55BufferCount), dsFitted_(true) { } @@ -1226,14 +1228,8 @@ int PipelineHandlerMaliC55::allocateBuffers(Camera *camera) { MaliC55CameraData *data = cameraData(camera); unsigned int ipaBufferId = 1; - unsigned int bufferCount; int ret; - bufferCount = std::max({ - data->frStream_.configuration().bufferCount, - data->dsStream_.configuration().bufferCount, - }); - auto pushBuffers = [&](const std::vector> &buffers, std::queue &queue, std::vector &ipaBuffers) { @@ -1248,14 +1244,14 @@ int PipelineHandlerMaliC55::allocateBuffers(Camera *camera) } }; - ret = stats_->allocateBuffers(bufferCount, &statsBuffers_); + ret = stats_->allocateBuffers(kMaliC55BufferCount, &statsBuffers_); if (ret < 0) return ret; pushBuffers(statsBuffers_, availableStatsBuffers_, data->ipaStatBuffers_); - ret = params_->allocateBuffers(bufferCount, ¶msBuffers_); + ret = params_->allocateBuffers(kMaliC55BufferCount, ¶msBuffers_); if (ret < 0) return ret;