DMA-BUF
学习资料:
https://blog.csdn.net/hexiaolong2009/category_10838100.html
https://www.cnblogs.com/sky-heaven/category/1288321.html
https://www.kernel.org/doc/html/v6.6/driver-api/dma-buf.html#dma-fences-functions-reference
DMA-BUF 是一种用于在不同设备间共享内存的机制,通常用于图形处理器 (GPU)、视频处理器、显示器等设备之间的数据传输。DMA-BUF 的工作原理是在内核中创建一个特殊类型的内存区域,允许一个设备(exporter)将其内容共享给另一个设备(importer),而无需复制数据。这可以提高性能并减少系统资源的使用。
DMA-BUF Exporter:
DMA-BUF Exporter 是负责将内核内存区域共享给其他设备的组件。当一个设备希望共享其内存时,它将创建一个 DMA-BUF 对象,并将其传递给需要访问该内存的其他设备。一旦有其他设备导入了这个 DMA-BUF 对象,它们就可以直接访问共享的内存区域,而无需通过复制数据来进行数据传输。
DMA-BUF Importer:
DMA-BUF Importer 是负责接收并使用被共享的内存的组件。它通过获取 DMA-BUF 对象来引用共享内存区域,然后可以在自己的操作中使用这些数据,通常是作为输入或输出数据。导入设备可以直接访问共享的内存,而无需复制数据,这提高了效率并减少了系统的开销。
在 Linux 内核中,DMA-BUF 提供了相应的 API 供设备驱动程序进行操作,以实现内存共享。在用户空间,一些图形驱动程序和多媒体框架使用 DMA-BUF 来共享图像、视频和其他数据。 DMA-BUF Exporter 和 Importer 的实现通常是由各个设备的驱动程序提供的,并且需要符合一定的规范以确保正确地共享内存并处理同步问题。
此处初步记录,后学习总结