@@ -48,6 +48,8 @@
namespace {
+static constexpr unsigned int kMaliC55BufferCount = 16;
+
bool isFormatRaw(const libcamera::PixelFormat &pixFmt)
{
return libcamera::PixelFormatInfo::info(pixFmt).colourEncoding ==
@@ -778,7 +780,7 @@ private:
};
PipelineHandlerMaliC55::PipelineHandlerMaliC55(CameraManager *manager)
- : PipelineHandler(manager), dsFitted_(true)
+ : PipelineHandler(manager, kMaliC55BufferCount), dsFitted_(true)
{
}
@@ -1227,14 +1229,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) {
@@ -1249,14 +1245,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;
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> --- src/libcamera/pipeline/mali-c55/mali-c55.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)