[libcamera-devel] [PATCH v1 2/4] pipeline: rpi: Remove additional external dma buf handling logic
Naushir Patuck
naush at raspberrypi.com
Mon Jul 24 09:49:25 CEST 2023
Hi Jacopo,
Thank you for your feedback.
On Mon, 24 Jul 2023 at 08:34, Jacopo Mondi
<jacopo.mondi at ideasonboard.com> wrote:
>
> Hi Naush
>
> On Fri, Jul 21, 2023 at 10:37:57AM +0100, Naushir Patuck via libcamera-devel wrote:
> > There is no need to distinguish between dma bufs allocated outside of
> > libcamera and internally allocated buffers. As such, remove all the
> > special case handling of such buffers.
> >
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
>
> Should you remove the function declaration too ?
>
> src/libcamera/pipeline/rpi/common/pipeline_base.h: void handleExternalBuffer(FrameBuffer *buffer, Stream *stream);
>
> I'm surprised the compiler doesn't generate a linkage error..
Yes it definitely should be removed. I'm also a bit surprised the
compiler didn't shout!
Regards,
Naush
>
>
>
> > ---
> > .../pipeline/rpi/common/pipeline_base.cpp | 16 ----------------
> > src/libcamera/pipeline/rpi/common/rpi_stream.cpp | 11 +----------
> > src/libcamera/pipeline/rpi/common/rpi_stream.h | 2 --
> > 3 files changed, 1 insertion(+), 28 deletions(-)
> >
> > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > index 179a5b81a516..f244edc68a85 100644
> > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > @@ -1391,11 +1391,6 @@ void CameraData::handleStreamBuffer(FrameBuffer *buffer, RPi::Stream *stream)
> > */
> > Request *request = requestQueue_.empty() ? nullptr : requestQueue_.front();
> > if (!dropFrameCount_ && request && request->findBuffer(stream) == buffer) {
> > - /*
> > - * Check if this is an externally provided buffer, and if
> > - * so, we must stop tracking it in the pipeline handler.
> > - */
> > - handleExternalBuffer(buffer, stream);
> > /*
> > * Tag the buffer as completed, returning it to the
> > * application.
> > @@ -1435,17 +1430,6 @@ void CameraData::handleState()
> > }
> > }
> >
> > -void CameraData::handleExternalBuffer(FrameBuffer *buffer, RPi::Stream *stream)
> > -{
> > - unsigned int id = stream->getBufferId(buffer);
> > -
> > - if (!(id & MaskExternalBuffer))
> > - return;
> > -
> > - /* Stop the Stream object from tracking the buffer. */
> > - stream->removeExternalBuffer(buffer);
> > -}
> > -
> > void CameraData::checkRequestCompleted()
> > {
> > bool requestCompleted = false;
> > diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > index 1d05c5acc0d9..07b8de6875fe 100644
> > --- a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > +++ b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> > @@ -78,16 +78,7 @@ unsigned int Stream::getBufferId(FrameBuffer *buffer) const
> >
> > void Stream::setExternalBuffer(FrameBuffer *buffer)
> > {
> > - bufferMap_.emplace(BufferMask::MaskExternalBuffer | id_.get(), buffer);
> > -}
> > -
> > -void Stream::removeExternalBuffer(FrameBuffer *buffer)
> > -{
> > - unsigned int id = getBufferId(buffer);
> > -
> > - /* Ensure we have this buffer in the stream, and it is marked external. */
> > - ASSERT(id & BufferMask::MaskExternalBuffer);
> > - bufferMap_.erase(id);
> > + bufferMap_.emplace(id_.get(), buffer);
> > }
> >
> > int Stream::prepareBuffers(unsigned int count)
> > diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.h b/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > index 6edd304bdfe2..ca591f99cc45 100644
> > --- a/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > +++ b/src/libcamera/pipeline/rpi/common/rpi_stream.h
> > @@ -28,7 +28,6 @@ enum BufferMask {
> > MaskStats = 0x010000,
> > MaskEmbeddedData = 0x020000,
> > MaskBayerData = 0x040000,
> > - MaskExternalBuffer = 0x100000,
> > };
> >
> > /*
> > @@ -78,7 +77,6 @@ public:
> > unsigned int getBufferId(FrameBuffer *buffer) const;
> >
> > void setExternalBuffer(FrameBuffer *buffer);
> > - void removeExternalBuffer(FrameBuffer *buffer);
> >
> > int prepareBuffers(unsigned int count);
> > int queueBuffer(FrameBuffer *buffer);
> > --
> > 2.34.1
> >
More information about the libcamera-devel
mailing list