什么是DRI
DRI(Direct Rendering Infrastructure)是一個在X Windows System中允許直接訪問graphics hardware的一種framework(架構),並且這種訪問是安全和高效的。DRI的主要用途是為OpenGL的Mesa implementation(實現)提供硬件加速。DRI同樣也對沒有display server running的情況下,在framebuffer console中提供了OpenGL的加速。DRI的實現貫穿了X server和相關的client libraries, Mesa3D和DRM(Direct Rendering Manager) kernel subsystem.
什么是DRM
DRM(Direct Rendering Manager)是Linux kernel的子系統,用於連接現代顯卡的GPU。DRM暴露給user-space的程序一個API,user-space的程序可以用這個API發送命令和數據給GPU,還進行一些操作,比如配置display的mode setting。DRM首先是作為X server的Direct Rendering Infrastructure(DRM)的kernel-space的component被開發的,但是同時也被其他graphic stack使用,比如Wayland.
User-space的programs可以用DRM的API去命令GPU做一些3D渲染的硬件加速和video decoding,也可以用作GPGPU computing。
什么是framebuffer
framebuffer是RAM的一部分,包含了bitmap是用來驅動video display的。framebuffer是一個memory buffer,包含了所有video frame中的pixels data。
什么是 Linux framebuffer(fbdev)
Linux framebuffer(fbdev)是一個graphic hardware-independent抽象層,用來在顯示器上show圖像的,最典型的是跑在系統命令行上。他允許對framebuffer的直接訪問,framebuffer是計算機video memory的一部分,包含了video frame, 僅僅是通過Linux kernel自己的基本的facilities和device file system interface。他並不依賴user space的software,比如SVGALib.
什么是i915, i965, iris
i915分kernel-space的i915和use-space的i915。i915的kernel space就是intel顯卡的kernel driver。i915的user-space端是intel顯卡的mesa(mesa是OpenGL的開源實現)實現。
i965是intel顯卡的user-space端的mesa實現。那他和i915都是mesa的實現,有什么區別呢?是因為有一些老顯卡只能支持i915,而后來一些新的顯卡支持i965.
iris是intel顯卡的user-space端的mesa實現,那么他和i915,i965有啥區別呢?iris是比i965更加新的,是將來要替代i965的,已經被merge進了mesa的code里。
minigbm是HAL層,向上對接mesa的不同廠商的實現(amdgpu, iris, i965, i915)的buffer分配需求調用(gralloc)等等。向下對接kernel的buffer的申請等等。理解為是用來申請buffer的一個組件。
EDID(Extended Display Identification Data, 拓展顯示屏識別數據)是一組顯示設備的元數據格式,用來描述設備播放視頻流的能力。EDID數據結構包含了制造商的名字,序列號(SN號),產品類型,亮度,顯示大小,像素等數據。總的來說就是來描述display的一組數據。