帖子已更新,新的问题现在出现在我下面的“自己的”答案中。
我很久以前就想在 Kali Linux(带有定制的 Debian Sid 内核的 Debian Wheezy 稳定发行版)上玩《军团要塞 2》,但由于以下图形故障而无法玩:
- 糟糕的暗色纹理
- 帧率非常低
- 低亮度
- 训练视频上的绿色纹理
经过大量研究后,解决方案是在 8.0.5 基础上编译更新版本的 Mesa。今天我发现了一个非常有前途的指南,它计划用于 Fedora,但有人设法在 Debian 中做到这一点:
http://dri.freedesktop.org/wiki/Building/ -> 官方指南
https://lists.debian.org/debian-x/2013/03/msg00014.html -> 喘息的方式
但是我现在卡在了 make 过程中,因为系统上找不到 nouveau.h。所以问题是:
有谁设法克服了这个 nouveau.h 丢失文件的问题,然后完成了完整的构建或安装过程?
我有同样的问题:https://stackoverflow.com/questions/20827233/installing-mesa-10-on-debian,但是由于我使用的是 Mesa 9.0.3,所以我遇到的是这个问题,而不是 libdrm-intel 的问题。
我努力了:
- 使用 updatedb +locate 检查丢失的文件
- 检查文件是否存在于存储库中的任何依赖项或包中
- 使用 Mesa 10.2.8、10.1.6、10.0.5、9.2.5、9.1.7 和 9.0.3 进行编译
PS:最好是使用最新的 Mesa 10.2.8,但我真的不想编译任何其他英特尔、radeon 或 nouveau 驱动程序来使其工作。如果有办法做到这一点,我会立即切换到 10.2.8,因为我知道它支持 OpenGL 3.3!:D
这是我的电脑:
- 配备 HD 3000 和 GT 540M 的 Core I5
- Kali Linux 1.0.9 更新
- 内核 3.14 i686-pae,带有 nvidia 331.67 内核模块
- 通过 wheezy-backports 存储库安装 bumblebee-nvidia
我的步骤:
> # export CFLAGS="-m32"
> # export CXXFLAGS="-m32"
> # ./autogen.sh --enable-driglx-direct --enable-gles-overlay --enable-gles1 --enable-gles2 --enable-glx-tls --with-driver=dri --with-dri-driverdir=/usr/lib/dri --with-egl-platforms='drm x11' --with-state-trackers=egl,glx,dri,vega --with-dri-drivers=i965 --enable-32-bit --disable-64-bit --enable-gallium-llvm=disabled --enable-gallium-gbm=disabled --enable-gallium-egl=disabled --with-gallium-drivers= --build=i686-pc-linux-gnu
> # ./configure --prefix=/usr
> # make
并生成错误报告:
Making all in nouveau
make[6]: Entering directory `/home/user/Data/Mesa-9.0.3/src/mesa/drivers/dri/nouveau'
CC nouveau_screen.lo
In file included from nouveau_screen.c:27:0:
nouveau_driver.h:41:28: fatal error: libdrm/nouveau.h: No such file or directory
compilation terminated.
make[6]: *** [nouveau_screen.lo] Error 1
make[6]: Leaving directory `/home/user/Data/Mesa-9.0.3/src/mesa/drivers/dri/nouveau'
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory `/home/user/Data/Mesa-9.0.3/src/mesa/drivers/dri'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/home/user/Data/Mesa-9.0.3/src/mesa/drivers'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/user/Data/Mesa-9.0.3/src/mesa'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/user/Data/Mesa-9.0.3/src/mesa'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/user/Data/Mesa-9.0.3/src'
make: *** [all-recursive] Error 1
我放弃使用 Debian 的 libdrm 实现,因为它的行为与官方源代码不同。因此,对于 Mesa 10.0.5 或更新版本,我仍然更喜欢使用以前的方式,因为我不必编译更新的 libdrm 并保持更稳定的稳定性。
我现在面临一个新问题,我设法编译的 Mesa 10.0.5(使用 libdrm 2.4.58)在运行 glxheads 时似乎未被使用,因为它向我显示:
GL_VERSION: 1.4 (2.1 Mesa 8.0.5)
这是 Debian 自己的稳定版 Mesa。我还发现有些人也遇到了这个问题:http://forums.linuxmint.com/viewtopic.php?f=190&p=696973
问题是:如何使用正确的标志、导出和包安装/卸载从源正确编译 libdrm 和 Mesa?
如果相关的 Debian 维护者能够回答的话,那将会很有帮助。
这是我的步骤:
使用 Synaptic 安装的常见软件包及其隐含的依赖关系:
checkinstall
automake
bison
flex
libdrm-dev
libx11-xcb-dev
libxcb-glx0-dev
libxcb-xfixes0-dev
llvm
x11proto-dri2-dev
x11proto-gl-dev
xutils-dev
pkg-config
libltdl-dev
libxdamage-dev
libexpat1-dev
libpciaccess-dev
gettext
常见的、手动安装的软件包:
对于 libdrm,来自此包:http://dri.freedesktop.org/libdrm/libdrm-2.4.58.tar.gz:
# ./configure
# make
# checkinstall
对于 Mesa,来自这个包:ftp://ftp.freedesktop.org/pub/mesa/older-versions/10.x/10.0.5/MesaLib-10.0.5.zip:
# ./autogen.sh
# make
# checkinstall
# aptitude install mesa-utils
then as standard user:
$ export LD_PRELOAD=/usr/local/lib/libGL.so.1
$ export LIBGL_DRIVERS_PATH=/lib/dri
$ glxheads
以下是两个遵循的指南:
http://dri.freedesktop.org/wiki/Building/
http://verahill.blogspot.fr/2012/11/mesa-901-64-bit-on-debian-wheezy.html
这次我成功走得更远,几乎很好地使用了 Mesa 10.0.5。
现在我针对 Mesa 10.0.5 源的步骤如下:
# autoreconf -vfi
# ./configure --prefix=/usr --enable-driglx-direct --enable-gles1 --enable-gles2 --enable-glx-tls --with-dri-driverdir=/usr/lib/dri --with-egl-platforms='drm x11' --with-dri-drivers=i965
# make
# checkinstall
# export LIBGL_DRIVERS_PATH=/usr/lib/dri
# export LD_LIBRARY_PATH=/usr/lib
# export EGL_DRIVERS_PATH=/usr/lib
但问题是,当我使用 glxheads 时,它显示我正在使用 Mesa 10.0.5,但我只使用 OpenGL 2.1,而不是 OpenGL 3.3。此外,它在《军团要塞 2》上仍然非常慢,并且每个纹理都有难看的颗粒效果,但训练视频上不再有绿色纹理。
问题是:如何才能正确地使 OpenGL 3.3 适用于 Mesa 10.0.5 并避免丑陋的纹理问题?
前:
GL_VERSION: 3.0 Mesa 8.0.5
GL_VENDOR: Tungsten Graphics, Inc
GL_RENDERER: Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2
现在:
GL_VERSION: 2.1 Mesa 10.0.5
GL_VENDOR: VMware, Inc.
GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.0, 128 bits)
尽管 GL_VENDOR 显示它是 VMware,但我所做的一切都是在裸机上进行的,而不是在虚拟机上。
注意,这次我还是按照 README 文件中说的,天真地编译了 libdrm-2.4.58。然后编译了 Mesa 10.0.5,现在没有 x11proto-dri3-dev、x11-proto-present-dev 和 inxi。
这是我用来编译 Mesa 的指南,也是迄今为止最好的指南: http://x.debian.net/howto/build-mesa.html