什么是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的一组数据。