本文共 350 字,大约阅读时间需要 1 分钟。
调用drmModePageFlip来更换缓冲区,当下一次vblank时,内核会类似于调用drmModeSetCrtc()来执行framebuffer切换动作:fb->crtc->conn->mode.
drmModeSetCrtc是用户直接调用切换缓冲区并立即生效;而drmModePageFlip由内核去调用切换缓冲区,并且调用时机为下一个vblank。drmHandleEvent会处理两种消息 ,一种是 VBLANK , 一种是pageFlip complete;我们只关心上一次的pageFlip 完成,以便我们进行下一次pageFlip。
所以我们指定了ev.page_flip_handler回调函数。当该函数触发时,代表上次的备好的缓冲区内核更换完成,我们现在就要准备下一次缓冲区了。转载地址:http://sxbxi.baihongyu.com/