ANDROID ION_BUFFER

对于想从事Android多媒体底层开发的工程师,我们需要了解DMA buf。不管是vedio,camera还是display,GPU的buf都来自于ION,而ION是基于DMA buf实现的。

一 DMA BUF的历史

想要深层次的认识DMA buf,我们需要了解DMA buf的历史。dma-buf 最初的原型为 shrbuf,由 Marek Szyprowski (Samsung)于2011年8月2日首次提出,他实现了 “Buffer Sharing” 的概念验证(Proof-of-Concept),并在三星平台的 V4L2 驱动中实现了 camera 与 display 的 buffer 共享问题。

Buffer sharing proof-of-concept [LWN.net]https://lwn.net/Articles/455098/DMA buffer sharing in 3.3 [LWN.net]https://lwn.net/Articles/474819/Marek Szyprowski发布的缓冲区共享补丁集,让多个内核子系统在用户空间的控制下共享内存成为可能。这种功能想要安全的导出到应用程序,必须解决几个关键的挑战:

(1) 应用程序不允许在任意内核地址上创建缓冲区。

(2) 用户空间无法访问内核空间,因此内核必须为应用程序提供一些方法引用特定缓冲区。

(3) 共享缓冲区必须在所有用户都释放它之前是不会消失的。

后来 Sumit Semwal (Linaro) 基于 Marek Szyprowski 的 patch 重构了一套新的框架,也就是我们今天看到的 dma-buf 核心代码,它经历了社区开发人员给出的重重考验,并最终于 2012 年 2 月 merge 到了 Linux-3.3 主线版本中,这也是 dma-buf 的第一个正式版本。此后 dma-buf 被广泛应用于内核多媒体驱动开发中,尤其在 V4L2、DRM 子系统中得到了充分应用。
DMA buffer sharing in 3.3 [LWN.net]

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值