libdrm2 _glapi_tls_Context 问题的解决
时间:2009-06-27 来源:blue_stone
hp6515b笔记本的显卡是ATI X1250的显卡, 之前使用的是ati fglrx驱动, 内核升级到2.6.29后,很长时间一直没有合适的补丁可以让fglrx运行于2.6.29上, 一狠心, 决定换用开源的radeon驱动. 卸载了fglrx相关的所有包, 将/etc/X11/xorg.conf中的
改成
重启X, 感觉用起来还可以, 虽然慢一些, 不过以后升级内核至少不用考虑显卡驱动的问题了.
然而随之遇到的一个问题就是不能使用Direct Render, 设置LIBGL_DEBUG=verbose后运行glxinfo提示如下信息:
在google中搜索 _glapi_tls_Context 找到了Debian Bug 491520, 这个bug说, 虽然这个问题现象是r300_dri.so中有未定义的符号, 事实上这个问题并不是libdrm2的bug, 而是是由于libgl1-mesa-dri引起的, 也没有给出一个合适的解决方案.
我查了一下mesa相关的软件包, libgl1-mesa-glx, 发现其中的几个文件被fglrx-driver给替换了, 删除fglrx-driver后也没有被替换回去:
那有没有可能是由于这两个文件不是libgl1-mesa-glx本身的文件而造成的呢? 不管怎么样, 先把这两个文件替换回来再说, 反正fglrx相关的东西已经被删除了, 不论如何, 也不会引起fglrx不正常.
然后进行检查
现在运行glxinfo已经提示Direct Rendering 已经是Yes了.
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 找到了Debian Bug 491520, 这个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了.
相关阅读 更多 +