android fence sync是android中引入的一个同步的机制,主要用在display的graphic buffer的同步管理上,可以让对buffer的操作可以并行执行以减少时间。
在BufferQueue中每个buffer都有一个对应的fence fd,他对应了一个fence object,它表明有角色在操作这块buffer,当fence object变为siganled状态的时候,表明这块buffer已经没有再被操作了。
可以简单的把fence理解为一把锁,当它active的时候表明了对buffer的控制,当它为signaled状态时候,表明不再控制buffer,每个需要使用buffer的角色,在使用前都要检查这把锁是否signaled了才能进行安全的操作,否则就要等待。
sync framework的3个重要元素
sync_timeline:sync的timeline,timeline最终具体的hardware去支持,简单来说可以把timeline看做是一个counter。
sync_pt:sync point,它是sync timeline上的某个点(可以看做是counter的某个值),每个sync point都属于某一个sync timeline。sync point有active,signaled,error3个状态,初始是active状态,之后会变为signaled或者error状态。
sync_fence:sync fence是由一组sync point构成的,这些sync point可以属于不同的sync timeline。
在BufferQueue中每个buffer都有一个对应的fence fd,他对应了一个fence object,它表明有角色在操作这块buffer,当fence object变为siganled状态的时候,表明这块buffer已经没有再被操作了。
可以简单的把fence理解为一把锁,当它active的时候表明了对buffer的控制,当它为signaled状态时候,表明不再控制buffer,每个需要使用buffer的角色,在使用前都要检查这把锁是否signaled了才能进行安全的操作,否则就要等待。
sync framework的3个重要元素
sync_timeline:sync的timeline,timeline最终具体的hardware去支持,简单来说可以把timeline看做是一个counter。
sync_pt:sync point,它是sync timeline上的某个点(可以看做是counter的某个值),每个sync point都属于某一个sync timeline。sync point有active,signaled,error3个状态,初始是active状态,之后会变为signaled或者error状态。
sync_fence:sync fence是由一组sync point构成的,这些sync point可以属于不同的sync timeline。