Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2420384
  • 博文数量: 384
  • 博客积分: 10193
  • 博客等级: 上将
  • 技术积分: 3785
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-09 18:02
文章分类

全部博文(384)

文章存档

2011年(10)

2010年(29)

2009年(39)

2008年(36)

2007年(43)

2006年(198)

2005年(29)

分类: LINUX

2009-06-27 17:09:42

hp6515b笔记本的显卡是ATI X1250的显卡, 之前使用的是ati fglrx驱动, 内核升级到2.6.29后,很长时间一直没有合适的补丁可以让fglrx运行于2.6.29上, 一狠心, 决定换用开源的radeon驱动. 卸载了fglrx相关的所有包, 将/etc/X11/xorg.conf中的

Driver      "fglrx"

改成

Driver      "radeonhd"

重启X, 感觉用起来还可以, 虽然慢一些, 不过以后升级内核至少不用考虑显卡驱动的问题了.

然而随之遇到的一个问题就是不能使用Direct Render, 设置LIBGL_DEBUG=verbose后运行glxinfo提示如下信息:

libGL: XF86DRIGetClientDriverName: 4.3.0 r300 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/r300_dri.so      
libGL error: dlopen /usr/lib/dri/r300_dri.so failed (/usr/lib/dri/r300_dri.so: undefined symbol: _glapi_tls_Context)
libGL error: unable to load driver: r300_dri.so

在google中搜索 _glapi_tls_Context 找到了, 这个bug说, 虽然这个问题现象是r300_dri.so中有未定义的符号, 事实上这个问题并不是libdrm2的bug, 而是是由于libgl1-mesa-dri引起的, 也没有给出一个合适的解决方案.

我查了一下mesa相关的软件包, libgl1-mesa-glx, 发现其中的几个文件被fglrx-driver给替换了, 删除fglrx-driver后也没有被替换回去:

blueice2:~# dpkg -L libgl1-mesa-glx
/.                                 
/usr                               
/usr/share                         
/usr/share/doc                     
/usr/share/doc/libgl1-mesa-glx     
/usr/share/doc/libgl1-mesa-glx/copyright
/usr/share/doc/libgl1-mesa-glx/changelog.Debian.gz
/usr/lib                                          
/usr/lib/libGL.so.1.2                             
diverted by fglrx-glx to: /usr/lib/fglrx/diversions/libGL.so.1.2
/usr/lib/libGL.so.1                                             
diverted by fglrx-driver to: /usr/lib/fglrx/diversions/libGL.so.1

那有没有可能是由于这两个文件不是libgl1-mesa-glx本身的文件而造成的呢? 不管怎么样, 先把这两个文件替换回来再说, 反正fglrx相关的东西已经被删除了, 不论如何, 也不会引起fglrx不正常.

dpkg-divert   --remove /usr/lib/libGL.so.1
dpkg-divert   --remove /usr/lib/libGL.so.1.2
cd /tmp/
ar x /var/cache/apt/archives/libgl1-mesa-glx_7.4.1-1_i386.deb
tar zxf  data.tar.gz
cd usr/lib
cp libGL.so.1.2 /usr/lib/libGL.so.1.2

然后进行检查

blueice2:/tmp/usr/lib# ls -al /usr/lib/libGL.so*
lrwxrwxrwx 1 root root     10 2009-05-15 22:29 /usr/lib/libGL.so -> libGL.so.1
lrwxrwxrwx 1 root root     12 2008-08-22 18:08 /usr/lib/libGL.so.1 -> libGL.so.1.2
-rw-r--r-- 1 root root 391696 2009-05-03 22:26 /usr/lib/libGL.so.1.2
blueice2:~# dpkg -L libgl1-mesa-glx
/.                                
/usr                              
/usr/share                        
/usr/share/doc                    
/usr/share/doc/libgl1-mesa-glx    
/usr/share/doc/libgl1-mesa-glx/copyright
/usr/share/doc/libgl1-mesa-glx/changelog.Debian.gz
/usr/lib                                         
/usr/lib/libGL.so.1.2                            
/usr/lib/libGL.so.1 

现在运行glxinfo已经提示Direct Rendering 已经是Yes了.

阅读(2671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~