[PATCH] libcamera: dma_heaps: Add support for using udmabuf to alloc DMA heaps

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed May 29 01:25:31 CEST 2024


On Wed, May 29, 2024 at 12:07:08AM +0100, Kieran Bingham wrote:
> Quoting Hans de Goede (2024-05-27 15:16:47)
> > Add support for using udmabuf to alloc DMA heaps, this is basically:
> > https://patchwork.libcamera.org/patch/18922/
> > 
> > ported from the never merged HeapAllocator class to the current DmaHeap
> > class.
> > 
> > Co-developed-by: Harvey Yang <chenghaoyang at chromium.org>
> > Signed-off-by: Harvey Yang <chenghaoyang at chromium.org>
> > Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> > ---
> >  include/libcamera/internal/dma_heaps.h |   3 +
> >  src/libcamera/dma_heaps.cpp            | 127 +++++++++++++++++++++----
> >  2 files changed, 109 insertions(+), 21 deletions(-)
> > 
> > diff --git a/include/libcamera/internal/dma_heaps.h b/include/libcamera/internal/dma_heaps.h
> > index f0a8aa5d..7e1271ed 100644
> > --- a/include/libcamera/internal/dma_heaps.h
> > +++ b/include/libcamera/internal/dma_heaps.h
> > @@ -30,7 +30,10 @@ public:
> >         UniqueFD alloc(const char *name, std::size_t size);
> >  
> >  private:
> > +       UniqueFD allocFromHeap(const char *name, std::size_t size);
> > +       UniqueFD allocFromUDmaBuf(const char *name, std::size_t size);
> >         UniqueFD dmaHeapHandle_;
> > +       bool useUDmaBuf_;
> >  };
> >  
> >  LIBCAMERA_FLAGS_ENABLE_OPERATORS(DmaHeap::DmaHeapFlag)
> > diff --git a/src/libcamera/dma_heaps.cpp b/src/libcamera/dma_heaps.cpp
> > index d4cb880b..bb707786 100644
> > --- a/src/libcamera/dma_heaps.cpp
> > +++ b/src/libcamera/dma_heaps.cpp
> > @@ -10,10 +10,14 @@
> >  #include <array>
> >  #include <fcntl.h>
> >  #include <sys/ioctl.h>
> > +#include <sys/mman.h>
> > +#include <sys/stat.h>
> > +#include <sys/types.h>
> >  #include <unistd.h>
> >  
> >  #include <linux/dma-buf.h>
> >  #include <linux/dma-heap.h>
> > +#include <linux/udmabuf.h>
> 
> Hrm. this fails on CI. Perhaps it's a new header, and we might have to
> bring this into include/linux in libcamera.
> 
>  - https://gitlab.freedesktop.org/camera/libcamera/-/jobs/59258127

Please update and use utils/update-kernel-headers.sh to fix that.

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list