libcamera v0.3.2
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
12
13namespace libcamera {
14
16{
17public:
19 CmaHeap = 1 << 0,
20 SystemHeap = 1 << 1,
21 UDmaBuf = 1 << 2,
22 };
23
25
28 bool isValid() const { return providerHandle_.isValid(); }
29 UniqueFD alloc(const char *name, std::size_t size);
30
31private:
32 UniqueFD allocFromHeap(const char *name, std::size_t size);
33 UniqueFD allocFromUDmaBuf(const char *name, std::size_t size);
34 UniqueFD providerHandle_;
36};
37
39
40} /* namespace libcamera */
Helper class for dma-buf allocations.
Definition dma_buf_allocator.h:16
bool isValid() const
Check if the DmaBufAllocator instance is valid.
Definition dma_buf_allocator.h:28
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:18
@ 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:197
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.