information : ce tuto est une mise à jour plus propre de mon ancien tuto ( http://forums.fedora-fr.org/viewtopic.php?id=51681 )
information : une version plus à jour pour Fedora 23 est disponible ici (http://forums.fedora-fr.org/viewtopic.php?pid=558758)
Le but de ce tuto est de vous permettre de compiler une version upstream de Mesa, utilisable sur Fedora 20/21. J'ai testé ce tuto pour compiler le pilote "r600g" et "nouveau". Mais ça devrait marcher aussi pour "r300g", "radeonsi", et d'autres (Intel, etc).
En fait il n'y a rien d'extraordinaire, ça se résume à faire un "configure/make/make install".
Vous allez pouvoir compiler un pilote 32 ou 64 bits. C'est certainement le pilote 32 bits qui vous intéressera le plus car la plupart des jeux commerciaux (sur Steam notamment) sont en 32 bits.
Dans ce tuto, la librairie Mesa compilée n'écrasera pas la version Mesa de Fedora.
ÉTAPE 1
*******
Récupérer tout le nécessaire pour compiler (commande valable pour le pilote 32 ou 64 bits) :
# yum install git gcc automake autoconf make makedepend gcc-c++ glibc-devel.i686 glibc-devel.x86_64 libX11-devel.i686 libX11-devel.x86_64 libXfixes-devel.i686 libXfixes-devel.x86_64
# yum install libXfixes.x86_64 libXfixes.i686 expat-devel.i686 expat-devel.x86_64 libgudev1.i686 libgudev1.x86_64 libgudev1-devel.i686 libgudev1-devel.x86_64 libXext.x86_64 libXext.i686
# yum install libtool libxcb-devel.i686 libxcb.i686 libXxf86vm.i686 libXxf86vm-devel.i686 flex bison git libXext-devel.i686 libXmu-devel.i686 udis86-devel.i686 libXext-devel.i686
# yum install libdrm-devel.x86_64 libdrm-devel.i686 libdrm.i686 libdrm.x86_64 libxcb-devel.x86_64 libxcb-devel.i686 libXdamage-devel.x86_64 libXdamage-devel.i686
# yum install libXext-devel.x86_64 libXi-devel.i686 libXdamage.i686 libXdamage.x86_64 systemd-compat-libs.i686 systemd-compat-libs.x86_64 systemd-devel.i686 systemd-devel.x86_64
# yum install libomxil-bellagio.x86_64 libomxil-bellagio.i686 libomxil-bellagio-devel.x86_64 libomxil-bellagio-devel.i686 libva.i686 libva.x86_64 libva-devel.x86_64 libva-devel.i686 python-mako python3-mako
Remarque : Mesa nécessite régulièrement une version récente de libdrm. Parfois elle n'est pas encore dans Fedora et donc vous ne pourrez plus compiler Mesa. Vous pouvez dans ce cas chercher une version plus à jour de libdrm depuis le dépôt updates-testing, ou bien sinon directement sur koji (
http://koji.fedoraproject.org/koji/packageinfo?packageID=770 ).
ÉTAPE 2
*******
1. Récupérer la version upstream de Mesa :
$ git clone git://anongit.freedesktop.org/mesa/mesa
Note : lorsque vous voudrez récupérer les Màj du git de Mesa, il vous suffira d'aller dans le dossier "mesa" et de faire un "make clean && git pull" :
$ cd mesa
$ git pull
2. Installer la libtxc_dxtn (S3TC) depuis
RPM Fusion (recommandé) :
# yum install libtxc_dxtn.i686 libtxc_dxtn.x86_64
Ça installera la version 32 et 64 bits de la lib.
ÉTAPE 3
*******
Allons donc compiler Mesa, placez-vous dans le répertoire mesa :
$ cd mesa
Préparer la compilation de r600g (Mesa 32 bits sur un système 64 bits) :
$ ./autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --disable-dri3 --enable-texture-float --disable-r600-llvm-compiler --disable-gallium-llvm --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu CFLAGS="-O2 -march=native" CXXFLAGS="-O2 -march=native" --libdir=/usr/local/lib --prefix=/usr/local
Si par contre vous souhaitez compiler un Mesa 64 bits, alors la commande est la suivante :
$ ./autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --disable-dri3 --enable-texture-float --disable-r600-llvm-compiler --disable-gallium-llvm CFLAGS="-O2 -march=native" CXXFLAGS="-O2 -march=native" --libdir=/usr/local/lib64 --prefix=/usr/local
Si tout s'est bien passé vous devriez voir un récapitulatif de la configuration choisie, la dernière ligne devant être : "Run 'gmake' to build Mesa".
Vous pouvez choisir quel pilote compiler en modifiant l'option "with-gallium-drivers".
On peut maintenant compiler Mesa :
$ make -j6
Et enfin pour installer les libs sur le système (à faire en root !):
# cd /home/<user>/mesa (chemin à adapter chez vous)
# make install
Note :
Avant de refaire une compilation il vaut mieux effectuer un "make clean" et relancer l'autogen.sh
Note 2 :
Si vous voulez voir toutes les options disponibles pour la compilation (compiler un autre pilote, activer certaines fonctions, etc.) :
$ ./autogen.sh --help
ÉTAPE 4 - TEST
*******
La librairie Mesa qui vient d'être compilé n'a pas écrasé celle de Fedora car elle n'a pas été installé dans le même répertoire.
Ça veut donc dire aussi que si vous lancez maintenant un jeu, il utilisera encore la lib Mesa de Fedora.
Pour dire aux jeux d'utiliser notre version de Mesa, vous devrez lancer le jeu depuis le terminal en spécifiant des variables d'environnement qui vont indiquer où chercher la lib Mesa.
Par exemple pour lancer le jeu "Enemy Territory: QUAKE Wars" :
$ LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" /usr/local/games/etqw/etqw
ANNEXE (Si vous modifiez du code)
*******
Si vous voulez soumettre un patch, une commande très simple permet de générer le patch à envoyer à la mailing-list mesa-dev :
$ git diff > le_nom_de_mon_amelioration.patch
Si vous avez effectué des changements dans le code et que vous faites un git pull ultérieurement pour récupérer les dernières modifs, git risque de gueuler. Pour supprimer toutes vos modifications et revenir avec la base upstream :
$ git stash
Pour appliquer un patch :
$ git apply --check patch_a_appliquer.patch
Cette commande va juste vérifier que le patch peut-être appliquer correctement.
S'il n'y a pas de message d'erreur, c'est que tout va bien, vous pouvez l'appliquer réellement :
$ git apply patch_a_appliquer.patch
Une fois appliqué, il ne vous reste plus qu'à compiler Mesa.