framebuffer
/dev/graphic/fb0
/dev/graphic/fb1
opengl
sync
高级DMA操作(比如multimedia, camera, gpu, display)中,缓存的消费者需要知道生产者何时完成该缓存的填充;相似的,生产者也需要知道消费者何时完成缓存的使用,然后他可以继续填充新的内容。一个缓存可能同时被多个消费者持有不同的时间,一个消费者也可能同时消费多个缓存。
Sync框架用来支持生产者与消费者间用统一的方式进行同步,同时也允许平台利用硬件同步实现。
对象模型:
- sync_timeline
描述一个工作流水线。
- sync_pt
代表流水线上的一个点,一个sync_pt只有一个sync_timeline父亲。sync_pt有三个状态:active、signaled、error。开始于active状态,当流水线进行到该点时,变成signaled状态。
- sync_fence
sync_fence是驱动之间协调缓存使用的主要机制。sync_fence是sync_pt的集合,这些sync_pt可能不在同一个流水线上。一个sync_pt只能存在与一个sync_fence中,sync_fence一旦创建就不能修改了。sync_fence可以被同步或者异步等待。两个sync_fence可以合并创建一个新的包含所有sync_pt的sync_fence。sync_fence由文件描述符支持,这样用户程序也可以参与同步。
/dev/sw_sync
打开该设备文件,创建软件流水线,用ioctl创建fence,模拟流水线进程。