Debian - 正确编译 libdrm 和 Mesa

Debian - 正确编译 libdrm 和 Mesa

帖子已更新,新的问题现在出现在我下面的“自己的”答案中。

我很久以前就想在 Kali Linux(带有定制的 Debian Sid 内核的 D​​ebian 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

常见的、手动安装的软件包:

https://packages.debian.org/jessie/x11proto-dri3-dev

https://packages.debian.org/jessie/x11proto-present-dev

对于 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

相关内容