libcamera v0.3.1
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
dma_buf_allocator.h
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * Copyright (C) 2020, Raspberry Pi Ltd
4 *
5 * Helper class for dma-buf allocations.
6 */
7
8#pragma once
9
10#include <stddef.h>
11
14
15namespace libcamera {
16
18{
19public:
21 CmaHeap = 1 << 0,
22 SystemHeap = 1 << 1,
23 UDmaBuf = 1 << 2,
24 };
25
27
30 bool isValid() const { return providerHandle_.isValid(); }
31 UniqueFD alloc(const char *name, std::size_t size);
32
33private:
34 UniqueFD allocFromHeap(const char *name, std::size_t size);
35 UniqueFD allocFromUDmaBuf(const char *name, std::size_t size);
36 UniqueFD providerHandle_;
38};
39
41
42} /* namespace libcamera */
Helper class for dma-buf allocations.
Definition dma_buf_allocator.h:18
bool isValid() const
Check if the DmaBufAllocator instance is valid.
Definition dma_buf_allocator.h:30
DmaBufAllocator(DmaBufAllocatorFlags flags=DmaBufAllocatorFlag::CmaHeap)
Construct a DmaBufAllocator of a given type.
Definition dma_buf_allocator.cpp:94
DmaBufAllocatorFlag
Type of the dma-buf provider.
Definition dma_buf_allocator.h:20
@ CmaHeap
Allocate from a CMA dma-heap, providing physically-contiguous memory.
@ SystemHeap
Allocate from the system dma-heap, using the page allocator.
@ UDmaBuf
Allocate using a memfd + /dev/udmabuf.
~DmaBufAllocator()
Destroy the DmaBufAllocator instance.
UniqueFD alloc(const char *name, std::size_t size)
Allocate a dma-buf from the DmaBufAllocator.
Definition dma_buf_allocator.cpp:235
Type-safe container for enum-based bitfields.
Definition flags.h:16
unique_ptr-like wrapper for a file descriptor
Definition unique_fd.h:18
bool isValid() const
Check if the UniqueFD owns a valid file descriptor.
Definition unique_fd.h:61
Enum-based bit fields.
#define LIBCAMERA_FLAGS_ENABLE_OPERATORS(_enum)
Enable bitwise operations on the enum enumeration.
Definition flags.h:189
Top-level libcamera namespace.
Definition backtrace.h:17
File descriptor wrapper that owns a file descriptor.