libcamera: mali-c55: Do not rely on bufferCount

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 <jacopo.mondi@ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
This commit is contained in:
Jacopo Mondi
2026-03-31 17:17:07 +02:00
parent 3b6c01fd94
commit e14c06c19a

View File

@@ -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<std::unique_ptr<FrameBuffer>> &buffers,
std::queue<FrameBuffer *> &queue,
std::vector<IPABuffer> &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, &paramsBuffers_);
ret = params_->allocateBuffers(kMaliC55BufferCount, &paramsBuffers_);
if (ret < 0)
return ret;