在android系统中fence用于不同模块需要访问同一块buffer的同步,例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。
camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。
camera sync是高通camx框架里面用于各个node之间进行buffer同步的一套机制,其利用了v4l2 event机制来实现KMD与UMD通信。
camx fence(chi fence/csl fence)与camera sync驱动的sync object一一对应。
camera sync作用:
1. sensor 直连到 TFE ,不会经过内存处理
2. 当上层下request 经过TFE后,TFE为输出port创建一个fence id(通过CSL、syncManager、cam_sync driver创建一个sync object row,返回fence id)
3. TFE 拿到 fence id后,同时将fence id和buffer送给ISP驱动,ISP填充buffer后,通知row已经完成,这时 cam_sync driver上层一个event给syncManager,
syncManager回调给DRQ,此时说明fence已经ready,DRQ将buffer送给OPE
4. OPE 同样为输出port创建一个fence id、同3
5. facebauty为软件NODE 通过ioctrol 通知syncManager已经完成,此时流程全部完成。