Fence-音视频设备资源同步
源码路径:
frameworks/native/include/ui/Fench.h
Fence是一个有关于渲染的过程中,CPU与GPU/HWC对数据进行操作时用于控制两者资源安全的类,注意Fence保证的是资源安全,并非是图形渲染的帧率同步,二者有本质区别。实现原理也不同!它在Android系统图形同步机制中是个重要的角色,并贯穿多个核心环节,其核心价值在于跨硬件资源操作的同步管理!来协调GPU与CPU之前的操作顺序。或者换一个说法。Fence是搞和设备硬件有关的跨进程同步用的一个工具类!
下文中我们抛开它作为渲染工具类的角色, 仅仅考虑它是如何做到支持跨进程资源同步的。
同步管理原理
mFenceFd是什么
上图API中我们可以看到有一个叫mFenceFd的变量, FD为Linux中的文件描述符,其本质就是一个整数值,用于标识进程内打开的“资源句柄”。 这些资源指的是系统对各类IO设备资源的统一抽象接口。
提及IO设备资源,肯定少不了DMA硬件, 详情