Debian - Compile corretamente libdrm e Mesa

0

Post atualizado, a nova pergunta está agora na minha "própria" resposta aqui em baixo.

Penso em jogar o Team Fortress 2 no Kali Linux (uma distribuição estável do Debian Wheezy com o kernel personalizado do Debian Sid) há muito tempo, mas não consegui devido às seguintes falhas gráficas:

  • Texturas escuras ruins
  • FPS muito baixo
  • Baixo brilho
  • Textura verde no vídeo de treinamento

A solução após muita pesquisa foi compilar uma versão mais recente do Mesa acima da 8.0.5. Hoje encontrei um guia muito promissor que foi planejado para o Fedora, mas alguém conseguiu fazê-lo no Debian:

http://dri.freedesktop.org/wiki/Building/ -> Guia Oficial

https://lists.debian.org/debian-x/2013/03/msg00014.html -> Wheezy way

Mas agora estou preso ao processo de criação, porque nenhum nouveau.h foi encontrado no sistema. Então a questão é:

Alguém conseguiu superar esse problema do arquivo ausente do nouveau.h e concluir o processo completo de construção ou instalação?

Eu tenho o mesmo problema que: https://stackoverflow.com/questions/20827233/installing-mesa-10-on-debian , mas desde que eu uso o Mesa 9.0.3, encontro esse problema em vez do da libdrm-intel.

Eu tentei:

  • Verificando o arquivo ausente com updatedb + localize
  • Verificando se o arquivo existe em alguma dependência ou pacote no repositório
  • Compile com o Mesa 10.2.8, 10.1.6, 10.0.5, 9.2.5, 9.1.7 e 9.0.3

PS: Seria muito melhor ter o Mesa 10.2.8 mais recente, mas eu realmente não quero compilar nenhum outro driver intel, radeon ou nouveau para fazê-lo funcionar. Se existe uma maneira de fazer isso, eu mudaria para a 10.2.8 imediatamente, sabendo que ele suporta o OpenGL 3.3! : D

Aqui está o meu computador:

  • Core I5 ​​com HD 3000 e GT 540M
  • Kali Linux 1.0.9 atualizado
  • Kernel 3.14 i686-pae com módulos de kernel nvidia 331.67
  • bumblebee-nvidia instalado através do repositório wheezy-backports

Meus passos:

> # 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

E o make bug report:

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

Eu desisti de usar a implementação libdrm do Debian, pois ela se comporta de maneira diferente das fontes oficiais. Por isso, ainda prefiro usar a maneira anterior para o Mesa 10.0.5 ou mais recente, pois não precisarei compilar uma libdrm mais recente e manter uma estabilidade mais garantida.

Agora estou enfrentando um novo problema, o Mesa 10.0.5 que eu consegui compilar - com o libdrm 2.4.58 - parece não estar em uso durante a execução do glxheads, pois ele me mostra:

GL_VERSION:  1.4 (2.1 Mesa 8.0.5)

Qual é o próprio Mesa estável do Debian. Também descobri que algumas pessoas também estão presas nesse problema: http://forums.linuxmint.com/viewtopic.php?f=190&p=696973

A questão é: como compilar corretamente o libdrm e o Mesa a partir das fontes com os sinalizadores, exportações e pacotes / instalação / desinstalação corretos?

Seria realmente útil se um mantenedor relacionado do Debian pudesse responder.

Aqui estão os meus passos:

Pacotes comuns instalados e suas dependências implícitas usando o 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

Pacotes comuns instalados manualmente:

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

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

Para libdrm, deste pacote: http://dri.freedesktop.org/libdrm/libdrm-2.4.58.tar.gz :

# ./configure
# make
# checkinstall

Para o Mesa, deste pacote: 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

Aqui estão os dois guias seguidos:

http://dri.freedesktop.org/wiki/Building/

http://verahill.blogspot.fr/2012/11/mesa-901-64-bit-on-debian-wheezy.html


Consegui ir mais longe dessa vez e quase usando o bom Mesa 10.0.5.

Agora, minhas etapas para as fontes do Mesa 10.0.5 são:

# 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

Mas o problema é que, quando estou usando glxheads, isso mostra que estou usando o Mesa 10.0.5, mas que apenas uso o OpenGL 2.1 em vez do OpenGL 3.3. Além disso, ainda é muito lento no Team Fortress 2, e todas as texturas têm um efeito de grão feio, mas não há mais textura verde no vídeo de treinamento.

A pergunta é: como posso disponibilizar corretamente o OpenGL 3.3 para o Mesa 10.0.5 e evitar o problema de textura de grão feio?

Antes:

GL_VERSION:  3.0 Mesa 8.0.5
GL_VENDOR:   Tungsten Graphics, Inc
GL_RENDERER: Mesa DRI Intel(R) Sandybridge Mobile x86/MMX/SSE2

Agora:

GL_VERSION:  2.1 Mesa 10.0.5
GL_VENDOR:   VMware, Inc.
GL_RENDERER: Gallium 0.4 on llvmpipe (LLVM 3.0, 128 bits)

Apesar do GL_VENDOR mostrar que é o VMware, estou fazendo tudo de maneira simples e não em uma máquina virtual.

Note que desta vez eu ainda compilei ingenuamente o libdrm-2.4.58 como dito no arquivo README. E então compilou o Mesa 10.0.5 sem x11proto-dri3-dev, x11-proto-present-dev e inxi agora.

Aqui está o guia que usei para compilar o Mesa e, até agora, o melhor: http://x.debian.net/howto/build-mesa.html

X.LINK
fonte
2
Então, qual é exatamente a sua pergunta? O erro do compilador parece bastante claro, você tem um erro no vinculador.
Ramhound 30/09
11
O problema é que não consigo realmente encontrar o cabeçalho nouveau.h com um localizador b + atualizado. O arquivo nem existe nos pacotes de repositórios. Acho que o cara encontrou uma maneira de superar esse problema de arquivo ausente, mas como?
X.LINK
11
@Ramhound: "libdrm / nouveau.h: Nenhum tal lima ou diretório" <- não é um erro de vinculador :)
akira
3
Não edite continuamente sua pergunta com edições triviais inúteis. Se alguém soubesse, responderia. Você sempre pode tentar adicionar uma recompensa para tentar obter atenção para o seu problema.
Mokubai
11
Como alternativa, se você editar sua pergunta para limpá-la, poderíamos considerar a possibilidade de migrá-la para o Unix e Linux, onde pode ter uma audiência melhor. Antes disso, embora eu recomendo que você publique uma pergunta sobre a meta deles, e se você tiver algum suporte para uma migração, poderemos movê-la para você. Você não simplesmente repassar o presente lá.
Mokubai