On Tue, May 07, 2024 at 04:34:24PM +0200, Hans de Goede wrote:
Hi Dmitry,
On 5/7/24 3:32 PM, Dmitry Baryshkov wrote:
On Mon, May 06, 2024 at 01:49:17PM +0200, Hans de Goede wrote:
Hi dma-buf maintainers, et.al.,
Various people have been working on making complex/MIPI cameras work OOTB with mainline Linux kernels and an opensource userspace stack.
The generic solution adds a software ISP (for Debayering and 3A) to libcamera. Libcamera's API guarantees that buffers handed to applications using it are dma-bufs so that these can be passed to e.g. a video encoder.
In order to meet this API guarantee the libcamera software ISP allocates dma-bufs from userspace through one of the /dev/dma_heap/* heaps. For the Fedora COPR repo for the PoC of this: https://hansdegoede.dreamwidth.org/28153.html
Is there any reason for allocating DMA buffers for libcamera through /dev/dma_heap/ rather than allocating them via corresponding media device and then giving them away to DRM / VPU / etc?
At least this should solve the permission usecase: if the app can open camera device, it can allocate a buffer.
This is with a software ISP, the input buffers with raw bayer data come from a v4l2 device, but the output buffers with the processed data are purely userspace managed in this case.
Ah, I see. Then why do you require the DMA-ble buffer at all? If you are providing data to VPU or DRM, then you should be able to get the buffer from the data-consuming device. If the data is further processed by a userspace app, then it should not require DMA memory at all.
My main concern is that dma-heaps is both too generic and too limiting for the generic library implementation.
linaro-mm-sig@lists.linaro.org