LINUX硬件3D加速指南


1.  解释

什么是硬件3D加速,为什么我需要它?

使用硬件3D加速,三维渲染将会使用显卡上的图形处理器来进行,而不会占据宝贵的CPU资源来绘制3D图像。它也被称作“硬件加速”而不是“软件加速”,因为如果没有这个3D加速,你的CPU将只能使用Mesa软件渲染库来绘制所有的3D图像,这会占用相当多的处理器资源。虽然Xorg一般会支持2D硬件加速,它经常缺少硬件3D加速。三维硬件加速在游戏、3D CAD和建模等需要渲染3D对象的场合下非常有价值。

我怎样获得硬件3D加速?

在很多情况下,二进制驱动和开源驱动都存在。推荐使用开源驱动,因为我们使用的是Linux并且开源是它的本质特征之一。有些时候,二进制驱动是唯一的选择,比如nVidia的显卡。二进制驱动有针对nVidia显卡的x11-drivers/nvidia-drivers以及针对ATI显卡的x11-drivers/ati-drivers。

什么是DRI?

Direct Rendering Infrastructure——直接渲染架构,也称DRI,是一个允许在安全和高效的方式下直接访问显卡硬件的架构。它包括对X服务器的改动,以及对几个客户端库和内核的改动。DRI的第一个重要应用是创建快速的OpenGL实现。

什么是DRM,它和常规Xorg有何联系?

DRM(Direct Rendering Manager——直接渲染管理器)是Xorg的一个改进,它通过增加直接渲染所必要的内核模块来为显卡增加3D加速功能。

目的

本指南是给那些在Xorg里不能搞定直接渲染的人准备的。DRM对于下面这些驱动工作正常:

  • 3dfx
  • intel
  • matrox
  • rage128
  • radeon
  • mach64
  • sis300
  • via

请看DRI主页以获取更多信息和文档。

回馈

 

2.  安装Xorg和配置内核

安装Xorg

请阅读我们的Xorg配置指南来配置Xorg并使之运行起来。

配置你的内核

检测你的芯片组并只启用该芯片组


代码 2.1: 检查你的AGP芯片组


llvm给gpu添加一条指令 linux gpu加速_linux

如果你的芯片组不被内核所支持,尝试给内核加上agp=try_unsupported参数可能能够成功。这将会使用Intel的一般性函数来充当AGP支持。要添加这个参数,请修改你的引导程序配置文件!

大多数,如果不是全部,内核都应该有这些选项。这里配置时使用的是一个标准的gentoo-sources内核。


代码 2.2: 配置内核


llvm给gpu添加一条指令 linux gpu加速_linux_02


代码 2.3: make menuconfig选项


llvm给gpu添加一条指令 linux gpu加速_linux_03

编译和安装内核


代码 2.4: 编译和安装内核


llvm给gpu添加一条指令 linux gpu加速_llvm给gpu添加一条指令_04

不要忘记设置grub.conf或者lilo.conf并且执行/sbin/lilo如果你使用LILO的话。

3.  配置直接渲染

配置Xorg.conf

用你喜欢的文本编辑器打开/etc/X11/xorg.conf,编辑它以启用DRI和GLX。


代码 3.1: xorg.conf


llvm给gpu添加一条指令 linux gpu加速_测试_05

modules.autoload.d的改动

你需要把你的显卡所用的模块名字加入/etc/modules.autoload.d/kernel-2.6来确保系统启动时这个模块能被自动加载。


代码 3.2: 编辑/etc/modules.autoload.d/kernel-2.6


llvm给gpu添加一条指令 linux gpu加速_llvm给gpu添加一条指令_06


注意: 如果你把agpgart编译成了模块,你也需要把它加入/etc/modules.autoload.d/kernel-2.6。

4.  测试3D加速

重启使用新内核

重启你的电脑使用你的新内核并以普通用户登录。是时候看看你的直接渲染是否已经启用而且它究竟有多厉害了。glxinfo和glxgears是mesa-progs包的一部分,所以运行这两个命令前要确保它们已经被安装。


代码 4.1: 测试渲染


llvm给gpu添加一条指令 linux gpu加速_文本编辑_07

注意: FPS可能会受你的屏幕的刷新率所限,所以如果glxgears显示FPS只有70-100时不要忘了这一点。games-fps/ut2004-demo或者其他3D游戏是更好的测试工具,它们可以给你真实世界的表现结果。

获取直接渲染的最高性能

如果你想要设定更多的特性,以获取更高的性能和其他原因,请查看DRI网页上的特性矩阵或者Sourceforge上的特性列表