The mention of DMA-BUF makes me suspect that it involves rendered video being copied from the GPU to the main RAM and back to the GPU, which wastes energy. Does someone have details about how the integration works?
It's the opposite. The point of using DMA-BUFs is that those are the handles which are passed around, and the data never leaves GPU memory. The handles can be directly accessed from EGL/Vulkan and used as render source/targets.
Do you maybe know, when frames rendered by GPU 1 (e.g. fast GPU) need to be sent to GPU 2 (e.g. slow GPU doing the compositing and outputting to the monitor), how does the data actually get transferred? I can imagine the following possibilities:
1) GPU 1 writes to CPU RAM, GPU 2 reads from CPU RAM
2) GPU 1 writes to GPU 2 RAM via PCI Express (DMA between devices)
3) GPU 2 reads from GPU 1 RAM via PCI Express (DMA between devices)
It's supposed to refer to an object that is in GPU RAM. You can map it to CPU RAM to access it, but obviously that is slow. The userspace function you normally want to call to do this is "gbm_bo_map".