• [supprimé]

  • Modifié
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.
... alors ta aussi la création direct des paquet avec mock en se basant sur le .spec du src.rpm. Il faut le modifier un peut, surtout au niveau de dri3 qui doit être désactivé pour le moment.

Au moins tu suis les recommandations pour Fedora et tu peux donc remplacer les paquets officiels sans problèmes.

Si tu veux je te donne la marche à suivre.
  • [supprimé]

Merci de ta proposition mais mon but n'est pas de fournir un RPM, mais juste de pouvoir aider n'importe qui à compiler une version à jour de Mesa sur son système.
Après si tu as des suggestions, toute amélioration est la bienvenue.
Cela te permet aussi d'avoir la dernière version de développement sans avoir à refaire les étapes de compilations vu que ça le fais automatiquement.

D'ailleurs j'ai l'intention d'ouvrir un dépôt avec des paquets de développements à jours à ce sujet.
  • [supprimé]

VINDICATORs wrote:D'ailleurs j'ai l'intention d'ouvrir un dépôt avec des paquets de développements à jours à ce sujet.
Un peu comme le dépôt Oibaf Ubuntu ?
Sans doute, je ne connais pas, d'ailleurs il doit y avoir la possibilité de faire en sorte que le .spec puisse récupérer les mises à jours dans la branche de développements (master) directement la compresser et la mettre dans le bon répertoire. Mais là j'ai pas fini de voir cela.
  • [supprimé]

  • Modifié
VINDICATORs, tu as toujours une 4850 ?
Est-ce tu as des jeux Valve (HL², L4D2, Counter Strike Source) ?
Oui et ça fonctionne plus que bien. J'ai quelques blocage dût à un souci de gestion de la VRAM

Je dois passer à une R9 d'ici quelques mois, comme je dois tout renouveler.

Là je test les paquets sur une machine en F20 de base pour voir si ça passe sans soucis et proposer le petit dépôt.
  • [supprimé]

  • Modifié
Ok, parce que moi j'ai quelques bugs bizarres, mais c'est peut-être ma carte graphique qui n'est pas en grande forme.
Genre par exemple, dans Counter Strike: Source, il y a des fumées bleues, mais seulement à des endroits de la map EXTRÊMEMENT précis ! cf. la capture d'écran sur "de_aztec". Si je tire sur le mur d'à côté, y'a pas de problème.

J'ai pas CS source, L4D2 ça passe impec avec quelques bogues par moment.

Là je test avec les dernières mises à jours noyau (bon la dernière dispo sur rawhide déconne)/serveur graphique/pilote/mesa 10-1-devel du jour. J'ai moins de déchirement sur DOTA2 à voir si c'est mieux sous L4D2.

Après certains jeux ont les textures qui fichent le camps par moment, mais je pense que c'est dût au jeux en eux même, exemple sous Wargame EE ça déconne alors que sur Wargame airland battle non.

J'ai plus qu'a trouver un espace de partage pour mettre mon dépôt. Là je travail sur la prise en charge de DRI3, mais je bloque sur libxcb 1.10 qui reste la dernière étape pour l'avoir.

Par contre il y a un gros travail de corrections, optimisation et nettoyage sur mesa qui arrive. Mais bon comme je l'ai dit, je n'ai pas de carte radeon plus récente, donc ce n'est pas simple de suivre le développement à ce niveau.