FreeBSD中启用3D加速功能的方法
一、freebsd下实现3d的原理。
其实这不仅仅是freebsd下的原理,也是整个*nix家族的原理。
3d功能的实现其实也是分层的,近似于osi的分层模型。
(1)、在最上端,是应用层,就是应用程序提出3d渲染的申请。这个申请通过一个函数调用,从而调用下面一层的3d加速的调用接口。
(2)、3d加速的函数接口(api)。它将应用层的各个应用转换为系统的调用,从而可以让x系统去和硬件打交道。最流行的api包括:directx,opengl等。在*nix的领域,就不得不提到一个windows领域比较陌生的名词:mesa。最原始的mesa就是一个opengl的实现,现在的mesa在许多地方都有所突破。详情可以参看:
http://www.mesa3d.org/
而这些函数和x系统的接口,就是glx。glx是运行在x上的一种协议,能过它,函数调用才能和x系统打交道。
(3)、dri。这是实现3d功能最重要的部分。
dri是direct rendering infrastructure,可以简单得把它理解为x和硬件间的接口。但它包含很多独立的模块,负责从x到硬件的各个环节,包括内核。
它最主要的工作就是将mesa或opengl的函数调用转换为硬件的指令,从而指挥硬件进行渲染等工作。
(4)、dri驱动程序。这是直接和硬件相关的程序。它提供对硬件的支持。
二、实现的条件
由前面的介绍可以知道,最重要的事情就是让你dri支持你的显卡。目前为止,在freebsd中,dri支持以下几个系统的显卡(在/usr/src/sys/i386/conf/notes中有介绍):
device drm # drm core module required by drm drivers
device i915drm # intel i830 through i915
device mach64drm # ati rage pro, rage mobility p/m, rage xl
device mgadrm # agp matrox g200, g400, g450, g550
device r128drm # ati rage 128
device radeondrm # ati radeon
device savagedrm # s3 savage3d, savage4
device sisdrm # sis 300/305, 540, 630
device tdfxdrm # 3dfx voodoo 3/4/5 and banshee
如果你的显卡没在上面列出,那么你就要做好打不开3d的准备!
如果你的显卡是nvidia的,那么你不要悲伤,接着往下看,你会发现你选择nvidia是没错的!
如果你的显卡在上面列出了,那么你也不要高兴得太早,因为这些当中都有例外,就比如说我的笔记本显卡:ati igp 340m,就是很难实现3d的一款。
测试你的显卡是不是能实现3d功能,可以采取以下办法:
(1):dmesg | grep agp,如果出现
引用: agp0: <via 82c691 (apollo pro) host to pci bridge> mem 0xe0000000-0xe3ffffff at device 0.0 on pci0
的字样,那么你的显卡就有可能实现3d功能。如果什么也没有的话,那么恭喜你,你再也不用为3d功能而费心了,你应该毫不犹豫地关上这篇文章,并且在你得到新的显卡前也不用再打开。
(2):kldload drm,如果没报错的话,那么你的显卡基本上就可以实现3d功能了。
如果很遗憾地报错了,那么你成功的机率就减小了一半,或者说希望不很大。
(3):前两关都过了,就可以实验了。
三、3d功能的实现。
1、普通显卡产:
(1):安装好xorg和kde(gnom也可以)。
(2):xorg -configure。这样在我的home里有一个xorg.conf.new的文件,把这复制到/etc/x11/xorg.conf。
(3):startx。这时候会出现三个窗口和一个时钟。有的人可能觉得是什么地方出错了,其实这是对的,因为这个时候,你还没有进入kde。
(4):退出x。在最左边的窗口中输入:exit。或者按ctrl+alt+backspace。
(5):cat /var/log/xorg.0.log | grep " direct rendering enabled",如果出现下面的字样,引用:(ii) radeon(0): direct rendering enabled
那么你的3d就启用的。
如果没有,那么你要仔细读/var/log/xorg.0.log。它会在某一行告诉你没启用的原因的。
2、nvidia的显卡:
如果你用的是nvidia的显卡,那就到http://www.nvidia.com/object/freebsd_1.0-8756.html去下载最新的freebsd的官方驱动,下载后直接安装。
安装完成后,用kldstat 查看,会多了linux的模块。nvidia的说明书上说这是为了兼容而设的。freebsd的驱动是一个纯freebsd的驱动,不是linux兼容的。可以将它去掉。(/boot/load.conf)。
安装完成再启动x,这时候就会在kde之前出现一个nvidia的图标,很快就闪过去。(但本人现在已经没有测试环境,要不也可以用相机拍下来。)只要出现这个图标。那就说明你已经安装成功了。
四、3d功能的确认
也就是说,怎么样才能确定是3d加速启用?
(1)最正式的是:打开一个终端,运行:glxinfo。在第二行或第三行,如果出现”direct rendering: yes“字样,那就说明已经启用3d加速了。
(2)经实践,最好用的一个就是运行屏幕保护程序,选中带gl的那几个,然后测试,如果不卡,那么就是已经启用了。最明显的就是:幻想。
如果能平滑地显示,那么就已经启用了。
五、可能会出现的问题
(1)你的显卡关列表中,但是还是加载不上。
解决办法:用google或baidu去搜吧。
(2)用共享内存的显卡,结果老出问题。
解决办法:如果能在bios中调节共享内存的大小,那么就设成>16m。如果不能调节,就是/etc/x11/xorg.conf中,把”ramsize"的值设置成>4096。
(3)ibm r40e系统的笔记本显卡不能用,老提示“不支持agp”。
解决办法:升级到6.1-release。这可是6.1-release的一个大改进,把我的笔记本显卡问题给解决了。(感谢freebsd的开发团队!)
(4)我的显卡应该没问题,但我还是不能启用3d加速。
解决办法:这个问题不好回答。有很多显卡不支持24或32位的模式,在/etc/x11/xorg.conf里面设置成16位试试。有很多人都卡在这个地方。
(5)我想启用双显模式,应该怎么办?
解决办法:去man吧。
(6)启用3d加速后有什么好处?
答:首先,你可以玩quake;其次,你的所有和图形相关的软件都明显提速;第三,你可以看一个绚丽的屏保;第四,由于很多工作都让显卡干了,可以明显延长你的cpu的寿命!最后,还有你自己的理由。
上一篇: 光盘安装OpenBSD3.6的方法