本系列专栏《Linux图形驱动与桌面》
commit的过程分为两部:
异步提交
drm_atomic_helper_prepare_planes是提交之前最重要的一步,这一步和fb的设置有关。
这个函数异步提交一个状态,即不是vblank 同步的。只有在drm_atomic_async_check()成功的情况下,才可以在一个状态上使用。异步提交不应该像正常的同步提交那样交换状态,而只是对当前状态进行就地更改。
同步提交
第一步:设置commit的state
第二步:初始化提交worker
第三步:准备planes,设置fb的fence
第四步:交换state
第五步:对于非阻塞提交,启动提交线程,否则直接提交。
int drm_atomic_helper_commit(struct d