Linux Framebuffer對應的源文件在linux/drivers/video/目錄下。在這個目錄下還有與各類顯卡驅動相關的源文件。linux
Linux FrameBuffer適配層有如下兩個文件很是重要的文件。
web
1. linux/include/linux/fb.h ,包含了幾個很是重要的數據結構數據結構
fb_var_screeninfoide
描述了對應的framebuffer當前的配置情況,應用程序能夠經過ioctl直接對fb_var_screeninfo中的某些參數進行調整,例如xres、yres、height、width等等。函數
fb_fix_screeninfospa
描述了對應的framebuffer當前的特性,這些特性不能經過ioctl直接修改,只能經過修改fb_var_screeninfo中的某些參數間接調整fb_fix_screeninfo中描述的特性,其中常常關注的特性包括:smem_start、smem_len、line_length,從事QT開發的工程師尤爲要注意line_length的值,不然UI界面會出現"詭異"的花屏。接口
fb_cmapci
描述設備無關的顏色映射信息,和調色板的配置相關,若使用DirectFB圖形引擎,尤爲要考究這個結構的使用,能夠經過FBIOGETCMAP 和 FBIOPUTCMAP 對應的ioctl操做設定或獲取顏色映射信息。開發
fb_infoit
當前顯示設備的綜合屬性,其成員中有上述三個結構體的實例。
fb_ops
經過該結構體,應用程序能夠使用ioctl()系統調用來操做顯示設備。
2. linux/drivers/video/fbmem.c
fbmem.c 處於Framebuffer設備驅動技術的中心位置.它爲上層應用程序提供系統調用也爲下一層的特定硬件驅動提供接口;那些底層硬件驅動須要用到這兒的接口來向系統內核註冊它們本身. fbmem.c 爲全部支持FrameBuffer的設備驅動提供了通用的接口,避免重複工做.
fbmem.c 中有一個很關鍵的全局變量:
struct fb_info *registered_fb[FB_MAX] //存放全部入駐的fb_info實例的地址,FB_MAX最大爲32.
底層framebuffer驅動一般在xxxfb_probe(...)中,經過上述函數將一個fb_info實例註冊到Linux系統中。