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:
@@ -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, ¶msBuffers_);
|
||||
ret = params_->allocateBuffers(kMaliC55BufferCount, ¶msBuffers_);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user