ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 硬件3D加速指南(转)

硬件3D加速指南(转)

原创 Linux操作系统 作者:ilg 时间:2019-07-08 09:30:07 0 删除 编辑
硬件3D加速指南(转)

  内容简介:本指南描述了如何在Gentoo Linux的XFree86中使用XFree-DRM以获得3D加速。

  1. 前言

  


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

  硬件3D加速可以允许你使用显示卡上的图形处理器来处理三维图形渲染而不需要占用宝贵的CPU资源。作为“软件加速”的反面,它也被称作“硬件加速”。在没有硬件3D加速的情况下,CPU自身会被强制使用 Mesa软件渲染函数库来进行贴图处理,这会占用相当多的CPU资源。虽然XFree86一般都支持2D硬件加速,但它却常常缺乏硬件3D加速功能。而对于某些需要进行3D渲染的工作(比如3D CAD和三维建模),三维硬件加速将会显得非常重要。

  我如何才能使用硬件3D加速? 

  在大多数情况下,你可以选择二进制编码驱动程序或者开放源代码驱动程序。由于我们使用的操作系统是Linux 并且开放源代码是Linux的基本准则,因此我们推荐你使用开放源代码的驱动程序。但有时二进制编码驱动程序也许是你唯一的选择??比如对于nVidia显示卡。二进制编码驱动程序包含了适用于nVidia显示卡的 media-video/nvidia-kernel以及media-video/nvidia-glx、适用于Matrox显示卡的media-video/mgavideo,以及适用于ATI显示卡的media-video/ati-drivers。而开放源代码的驱动程序则包含了适用于 KyroII的media-video/kyro-kernel以及适用于ATI显示卡的media-video/ati-gatos,后者为 ATI显示卡提供了更为全面的视频功能的支持。

  什么是 DRI? 

  Direct Rendering Infrastructure (dri.sourceforge.net),也就是所说的DRI,是一个允许应用程序以高效安全的方式直接访问图形处理硬件的框架控制系统。它包含了对X 服务器、一些客户端函数库以及系统内核的某些修改。DRI最主要的用处是实现OpenGL的快速高效执行。

  什么是XFree-DRM?它是如何与普通的XFree86进行关联的? 

  XFree-DRM是一套为XFree86提供增强性能的组件,它通过为直接渲染添加必要的内核模块来为你的显示卡提供3D加速。

  目的 

  本指南是为那些无法在XFree中使用DRI的用户准备的。XFree-DRM适用于3dfx, gamma, i8x0, matrox, rage128, radeon, mach64(从xfree-drm-4.3.0-r7开始支持)以及 sis300系列驱动程序。由于2.4系统内核的直接渲染管理器(DRM)不再支持XFree 4.3,因此你需要安装xfree-drm软件包,不过,2.6系统内核可以支持XFree 4.3。但是Gentoo的 XFree-DRM软件包尚无法在2.6系统内核中工作。请参看DRI 主页以获得更多信息。

  意见反馈 

  如果你有任何建议或者疑问,请将E-mail发送到这里: Donnie Berkholz.

  2. 安装XFree86并配置你的系统内核

  


  安装 XFree86 

代码 2.1: 安装 XFree86

# emerge x11-base/xfree

  配置你的系统内核 

  检测你的芯片组并且打开相应的内核支持。

代码 2.2: 检查你所使用的AGP芯片组

# emerge pciutils; lspci | grep AGP

# 00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)// 以上的输出结果会因为不同的硬件而有所差异。

  在大多数情况下,系统内核应该含有以下的选项。以下是在使用gentoo-sources-2.4.20-r5的情况下进行配置的:

代码 2.3: 配置内核

# ls -l /usr/src/linux

lrwxrwxrwx  1 root   root      22 May 29 18:20 /usr/src/linux -> linux-2.4.20-gentoo-r5

// 请确保 /usr/src/linux 已经指向当前内核.

# cd /usr/src/linux

# make menuconfig

代码 2.4: make menuconfig 选项

Processor type and features --->

<*> MTRR (Memory Type Range Register) support

Character devices --->

/dev/agpgart (AGP Support)

[*] Intel 440LX/BX/GX and I815/I820/I830M/I830MP/I840/I845/I850/I860 support

// 请为你自己所使用的芯片组打开相应的内核支持

[ ] Direct Rendering Manager (XFree86 DRI support)

  请确保Direct Rendering Manager (DRM,直接渲染管理器)已经处于关闭状态。 XFree-DRM软件包将会提供它所附带的直接渲染管理器。2.4版本的系统内核可以支持 XFree 4.2。

  编译并安装你的系统内核 

代码 2.5: 编译并安装你的系统内核

# make dep && make clean bzImage modules modules_install

# mount /boot

# cp arch/i386/boot/bzImage /boot

  如果你想让你的新内核使用一个bzImage以外的其他名称,请将它复制到/boot/yourname 。当然,不要忘记修改grub.conf和lilo.conf,如果你使用的是LILO,你还需要运行/sbin/lilo 。

  3. 安装 XFree-DRM 并配置直接渲染

  


  安装 XFree-DRM 

代码 3.1: 安装 XFree-DRM

# ACCEPT_KEYWORDS="~x86" emerge xfree-drm

  配置 XF86Config 

  用你喜欢的编辑器打开/etc/X11/XF86Config,然后编辑这个文件以让它启用DRI和GLX。

代码 3.2: XF86Config

...

Section "Module"

 Load "dri"

 Load "glx"

 ...

EndSection

...

Section "Device"

 Driver "radeon"

 ...

EndSection

...

Section "dri"

 Mode 0666

EndSection

  如果你正在使用其它显示卡,请将"radeon"替换为你自己的驱动程序名称。

  4. 测试3D加速

  


  用你的新内核启动系统 

  用你的新内核启动系统。现在你可以看看直接渲染是否已经开启并且体验它为你的系统所带来的改善。

代码 4.1: 测试渲染功能

# startx// 如果agpgart已经被编译为模块,你则不必为你的驱动程序或者agpgart加载模块,// 它们会被自动加载。

# glxinfo | grep rendering

direct rendering: Yes

// 如果你得到的提示是"No," 说明你的3D加速没有被打开或者你的显示卡不支持3D加速.

# glxgears// 以默认大小测试你的FPS,你所得到的数字// 应该会比在安装xfree-drm之前有显著提高,我们建议你在CPU足够空闲的情况下做这项测试。

  5. 使用CVS源代码

  


警告: 如果一切都已经正常工作的话,请不要轻易尝试。

注释: CVS源代码程序是一直在更新和变化的,因此也许你的配置不会和下面的讲解完全一样。

  你需要CVS源代码版本吗? 

  首先你得弄明白xfree-drm是否可以正常工作,如果它确实有问题并且不是由于你的配置错误而引起的话(你可以检查Log文件来进行验证),你也许可以考虑一下CVS源代码版本了。但是如果你不想编译完整的CVS,你也可以找到许多daily driver snapshots(每日驱动程序更新快照)。

  CVS源代码版本支持你的显示卡吗? 

  浏览一下DRI 已经支持的显示卡列表,看看CVS版本的程序是否可以支持你的显示卡,即便你没有找到,你也可以尝试一个与你的显示卡类似型号的CVS程序。

警告: “Linux 2.4内核不支持AGP 8X,所以我不得不去寻找一个backport。现在这个backport可以正常工作了… 但是它修补得并不是那样完美,而且它需要2.4.21的系统内核(使用vanilla成功运行,直接通过tarball 方式编译)。首先从kernel.org上下载2.4.20-2.4.21的补丁,然后下载AGP 8X的补丁??你可以从邮件列表上的某个地方找到它。在打补丁的过程中会遇到一个有关pci_ids.h文件的小问题,但是如果你打开这个文件并且看一下 reject list,这个问题便可以很容易的解决。现在有关AGP 8X的问题确实得到修复了,我可以使用 xfree-drm 在1600x1200分辨率下进行工作(但是由于缺少DGA,因此速度有点慢)。(来自#gentoo频道上的SanityInAnarchy)

重要: 这个补丁需要一点技巧才能安装成功,你可以在这里 找到下载的地方。如果你可以在BIOS中关掉8X AGP并且打开AGP 4X的话,也许你就可以不必使用这个补丁了。

  安装CVS源代码版本程序 

  按照本文档完成到“编译并安装你的系统内核”这一节,然后从DRI 编译指南 的第6步做到第8.3步即可。

  匿名CVS下载 

  为你的CVS文件创建一个存放目录:

代码 5.1: 为CVS创建一个目录

# cd ~

# mkdir DRI-CVS

  查看CVS源代码程序更新:

代码 5.2: 查看CVS源代码程序更新

# cd ~/DRI-CVS

# cvs -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri login// (当提示你输入密码时请按ENTER键)

# cvs -z3 -d:pserver:anonymous@cvs.dri.sourceforge.net:/cvsroot/dri co xc// -z3参数允许你在下载时启用压缩以节省时间

  更新你的CVS源代码 

  也许以后你想要更新你的DRI源代码本地副本以获得最新的CVS版本,这时你可以使用以下的步骤:

代码 5.3: 更新本地副本

# cd ~/DRI-CVS

# cvs -z3 update -dA xc// -d参数允许自动创建子目录。// -A参数允许你下载最近的主干源代码文件而不是分支源代码文件。

  创建编译树 

  所有的目标文件和库文件都应放在平行编译树而不是源代码树下面。你可以使用lndir 命令来创建编译树:

代码 5.4: 创建平行编译树

# cd ~/DRI-CVS

# ln -s xc XFree40

# mkdir build; cd build

# lndir -silent -ignorelinks ../XFree40

  编译树由指向CVS源代码树的符号连接构成。我们建议有经验的用户创建多个编译树以方便你使用不同的选项进行编译和测试。

  编辑 host.def 文件 

  ~/DRI-CVS/build/xc/config/cf/host.def文件用于配置XFree86的编译过程。你可以通过对这个文件的修改来定义你的编译选项或者为你自己的系统进行某些特定的调整。默认的host.def看起来应该像这个样子:

代码 5.5: host.def

#define DefaultCCOptions -Wall

// 适用于 i386 构架:

#define DefaultGcc2i386Opt -O2

// 适用于 Alpha 构架:

#define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar)

// 适用于所有计算机构架

#define LibraryCDebugFlags -O2

#define BuildServersOnly YES

#define XF86CardDrivers vga tdfx mga ati i810

#define LinuxDistribution LinuxRedHat

#define DefaultCCOptions -ansi GccWarningOptions -pipe

#define BuildXF86DRI YES

/* Optionally turn these on for debugging */

/* #define GlxBuiltInTdfx YES */

/* #define GlxBuiltInMga YES */

/* #define GlxBuiltInR128 YES */

/* #define GlxBuiltInRadeon YES */

/* #define DoLoadableServer NO */

#define SharedLibFont NO

代码 5.6: host.def的后续内容

// 请注意,你的显示卡驱动程序名称应该加入到XF86CardDrivers这一行// 如果你想在Mesa和DRI驱动程序中使用3DNow!优化指令,请加入以下的代码:

#define MesaUse3DNow YES

// 如果你没有AMD处理器,你同样可以使用这个选项。// DRI将在运行时自动检查你的处理器是否支持3DNow!,如果支持的话,DRI将自动启用它。

  如果你想在Mesa和DRI驱动程序中使用SSE优化指令,你必须将你的系统内核升级到2.4.X版本。 Mesa将在运行过程中检查你的处理器和操作系统是否都支持SSE指令。另外,如果你要将Mesa编译进DRI,你需要保证/usr/src/linux下面已经包含了Linux 2.4.x 的内核头文件。如果你的/usr/src/linux下面是较早的Linux内核文件而且你又开启了SSE优化指令支持, Mesa将给你发出一个警告并且停止编译。如果你确实已经安装了2.4.x内核,请在host.def中加入以下的内容:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-116547/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-06-18

  • 博文量
    1715
  • 访问量
    1300018