驱动开发系列12 - Linux Graphics 图形驱动概述(一)
目录
一:概述
二:图形硬件
2.1 硬件概述
2.2 总线类型
PCI(外设组件互连)
AGP(加速图形端口)
PCI-X
PCI-Express (PCI-E)
2.3 虚拟内存和物理内存
显存
表面
3D引擎
层(Overlays)
2.5 显卡访问
MMIO
DMA
中断
2.6 图形硬件示例
2.6.1 前向渲染GPU
2.6.2 延迟渲染GPU
一:概述
图形加速是一门复杂的艺术,常常受到不公正的“巫术”声誉的困扰。本文旨在介绍Linux下图形驱动程序的内部工作原理。本文都需要具备C语言编程知识,并对图形处理器有一定的了解。尽管其主要读者是图形驱动开发者,但本文详细介绍了完整的Linux图形栈的内部结构,因此对希望增强对Linux图形世界理解的应用程序开发者也很有帮助:人们可以通过更好地理解Linux图形栈来提高应用程序的性能。在当今这个3D图形和GPU计算普及的时代,深入理解图形是必不可少的。
本文以相关硬件概念的介绍开始(第2节)。这里只介绍与图形驱动程序业务直接相关的概念。然后,我们在第3节中描绘了Linux图形堆栈的高层视图及其多年来的演变。第4节介绍了帧缓冲驱动程序,这是一种基本的Linux图形驱动程序形式,尽管原始,但在嵌入式领域得到了广泛应用。第5节介绍了直接渲染管理器(或DRM),这是一个负责调解Linux系统中所有图形活动的内核模块。下一节(第6节)重点介绍X.Org驱动程序和开发者可用的现有加速API。视频解码在第7节中有其专门部分。接下来,我们在第8节中讨论3D加速,并介绍OpenGL的基本概念。第9节和第10节专门讨论