| Message ID | 20260331-mali-cru-v7-6-4caedc898a0e@ideasonboard.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series |
|
| Related | show |
Hi 2026. 03. 31. 18:36 keltezéssel, Jacopo Mondi írta: > 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(-) > > diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp > index 566fa0549675..ce1f0b65cd6e 100644 > --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp > +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp > @@ -48,6 +48,8 @@ > > namespace { > > +static constexpr unsigned int kMaliC55BufferCount = 16; Isn't 16 a bit too much? In any case, this change itself looks good to me. Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > + > 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; > >
Hi Barnabás On Wed, Apr 01, 2026 at 11:58:57AM +0200, Barnabás Pőcze wrote: > Hi > > 2026. 03. 31. 18:36 keltezéssel, Jacopo Mondi írta: > > 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(-) > > > > diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp > > index 566fa0549675..ce1f0b65cd6e 100644 > > --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp > > +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp > > @@ -48,6 +48,8 @@ > > namespace { > > +static constexpr unsigned int kMaliC55BufferCount = 16; > > Isn't 16 a bit too much? In any case, this change itself looks good to me. good question. RkISP1 has only 4 ... Should I make it 4 as well ? > > Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> > > > > + > > 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; > > >
diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp index 566fa0549675..ce1f0b65cd6e 100644 --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp @@ -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(-)