[libcamera-devel] [PATCH v2 2/4] pipeline: rpi: Remove additional external dma buf handling logic

Jacopo Mondi jacopo.mondi at ideasonboard.com
Thu Jul 27 11:33:42 CEST 2023


Hi Naush

On Tue, Jul 25, 2023 at 09:55:38AM +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>

Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

Thanks
  j

> ---
>  .../pipeline/rpi/common/pipeline_base.cpp        | 16 ----------------
>  .../pipeline/rpi/common/pipeline_base.h          |  1 -
>  src/libcamera/pipeline/rpi/common/rpi_stream.cpp | 11 +----------
>  src/libcamera/pipeline/rpi/common/rpi_stream.h   |  2 --
>  4 files changed, 1 insertion(+), 29 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/pipeline_base.h b/src/libcamera/pipeline/rpi/common/pipeline_base.h
> index f648e81054bb..8ee20a1b6d9b 100644
> --- a/src/libcamera/pipeline/rpi/common/pipeline_base.h
> +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.h
> @@ -193,7 +193,6 @@ protected:
>  	unsigned int ispOutputTotal_;
>
>  private:
> -	void handleExternalBuffer(FrameBuffer *buffer, Stream *stream);
>  	void checkRequestCompleted();
>  };
>
> diff --git a/src/libcamera/pipeline/rpi/common/rpi_stream.cpp b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
> index e9ad1e6f0848..74b5abf447c7 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