[PATCH 01/27] libcamera: MappedFrameBuffer: Add tracking of mmap file descriptors to MappedFrameBuffer

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Apr 23 11:35:12 CEST 2025


Quoting Bryan O'Donoghue (2025-04-22 22:58:54)
> In order to import via eglCreateImageKHR via an file descriptor we need to
> have access to the file descriptor associated with the plane.
> 
> Extend MappedFrameBuffer to track the file descriptor giving an accessor
> method in-line with the existing planes_ accessor.
> 

I expect the answers are later in the series, but I would expect if you
need the file descriptors - you should get them from the FrameBuffer
directly, not the 'MappedFrameBuffer' otherwise you're just making a
copy of something you already have to be able to access it ? (It could
be fine - but depends on what the use case is)



> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue at linaro.org>
> ---
>  include/libcamera/internal/mapped_framebuffer.h | 2 ++
>  src/libcamera/mapped_framebuffer.cpp            | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/include/libcamera/internal/mapped_framebuffer.h b/include/libcamera/internal/mapped_framebuffer.h
> index 6aaabf50..cb81243e 100644
> --- a/include/libcamera/internal/mapped_framebuffer.h
> +++ b/include/libcamera/internal/mapped_framebuffer.h
> @@ -31,6 +31,7 @@ public:
>         bool isValid() const { return error_ == 0; }
>         int error() const { return error_; }
>         const std::vector<Plane> &planes() const { return planes_; }
> +       const std::vector<int> &fds() const { return fds_; }
>  
>  protected:
>         MappedBuffer();
> @@ -38,6 +39,7 @@ protected:
>         int error_;
>         std::vector<Plane> planes_;
>         std::vector<Plane> maps_;
> +       std::vector<int> fds_;
>  
>  private:
>         LIBCAMERA_DISABLE_COPY(MappedBuffer)
> diff --git a/src/libcamera/mapped_framebuffer.cpp b/src/libcamera/mapped_framebuffer.cpp
> index f54bbf21..82ab132c 100644
> --- a/src/libcamera/mapped_framebuffer.cpp
> +++ b/src/libcamera/mapped_framebuffer.cpp
> @@ -237,6 +237,7 @@ MappedFrameBuffer::MappedFrameBuffer(const FrameBuffer *buffer, MapFlags flags)
>                 }
>  
>                 planes_.emplace_back(info.address + plane.offset, plane.length);
> +               fds_.emplace_back(fd);
>         }
>  }
>  
> -- 
> 2.49.0
>


More information about the libcamera-devel mailing list