Electronic Joint Business

Solution for E-Business

Linux 图形系统和 AMD R600 显卡编程(1) —— Linux环境下的图形系统简介

Linux/Unix 环境下最早的图形系统是 Xorg 图形系统,Xorg 图形系统通过扩展的方式以适应显卡和桌面图形发展的需要,然而随着软硬件的发展,特别是嵌入式系统的发展,Xorg 显得庞大而落后。开源社区开发开发了一些新的图形系统,比如 Wayland 图形系统。 由于图形系统、3D 图形本身的复杂性以及历史原因,Linux 图形系统相关的源码庞大而且复杂,而且缺少学习的资料(所有源代码分析或者驱动编程的书籍都很少介绍显卡驱动)。在后续一系列文章中,笔者将从对 AMD 硬件编程的角度出发对部分问题做一个简单的介绍,当然,这种介绍是很初级的,旨在希望能够对初学着有所帮助。 内核 DRM、Xorg 以及 Mesa 三部分加起来的代码和整个 Linux 内核的体量是差不多大的。而且现代的显卡上的 GPU 的复杂程度在一定程度上可以和 CPU 相聘美,从程序员的角度看,操作系统(CPU 的驱动)包含的许多功能在 GPU 驱动上都能够找到。比如说,GPU 有自己的指令系统,着色器程序(GLSL、HLSL、Cg 这类着色语言)需要编译成 GPU 的指令集,然后才能够在 GPU 上运行,符合着色语言规范的 3D 驱动都包含这样的一个编译器。3D 应用程序需要使用大量内存,GPU 在进行运算时需要访问这些内存,所以 GPU 访问内存时也使用一套和 CPU 页表一样的机制。另外,在中断系统上,GPU 和 CPU 也有相似之处。后面的一些内容将会陆续对这些问题做一个简单的介绍。 传统上 Linux 是一个宏内核,设备驱动大部分都是包含在内核里面的,内核代码最庞大的部分就是 drivers 目录,如果你从 kernel.org 上面下载一个内核源码,你会发现编译时间大部分都耗在编译设备驱动上。 对于微内核操作系统,设备驱动不是内核的部分。不过出于调试方便以及其他一些原因,Linux 操作系统上面的一些驱动是放在核外的。比如说打印机、扫描仪这类设备,当前的打印机扫描仪通常都是通过 USB 接口连接到计算机上的,对于这些设备的 […]

, , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.