1. frame buffers 介绍
frame buffers 是一个抽象出来的内存对象,用于向 CRTC 扇出像素数据。应用程序通过 DRM_IOCTL_MODE_ADDFB(2) ioctls 来显示的申请创建 frame buffers。内核空间代码创建完成后返回 handle 值,该值可以用于控制 CRTC、PLANE 等模块。后面以 fb 代替 frame buffer。
内核空间需要实现显存管理器以支持 fb 的创建。例如应用程序可以发送 GEM handle 值触其发申请内存空间。对于图显系统而言,fb 可以兼容多种显存管理器,除了支持 GEM 外还可以支持 wmwgfx 所使用的 TTM 显存管理器。
在 kernel 中使用 struct drm_framebuffer 来描述 fb。fb 除了包含 GEM 之外,还包括显存中像素格式等其他信息。
struct drm_framebuffer {
struct drm_device *dev;
struct list_head head;