Fedora-Fr - Communauté francophone Fedora - Linux

Communauté francophone des utilisateurs de la distribution Linux Fedora.

  

Dernière news : Fedora 34 Beta est disponible

#1 12/01/2014 03:31:22

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

[Tuto] Compiler la version upstream de Mesa

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/pack … kageID=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.

Dernière modification par lecbee (27/12/2015 13:48:02)

Hors ligne

#2 12/01/2014 12:27:51

VINDICATORs
RédactWikix and the graphicatorix!
Modérateur
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 18 225
Site Web

Re : [Tuto] Compiler la version upstream de 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.

Dernière modification par VINDICATORs (12/01/2014 12:29:02)


AMD R7 2700X, MSI Pro Carbon X470, 32Go DDR4 3200@3333Mhz Gskill TridentZ CL14, RX 5700XT MSI Watercooling OC SSD: 1x 970 EVO NVME 500Go + 2x500Go 860 EVO, 3x1To 860 Evo, HDD 1x2To WD black, 1x4to WD Black, 1x3To WD Red, GMT BeQuiet Dark 900+Purepower 1000W 80+ platinium
AMD R3 2200g, Asus A320, 16Go DDR4 2400@2133Mhz, 1x250GO SSD EVO, 3x 2To RAID 5 WD Blue / AMD R5 2600 + 32Go DDR4 3000@2133Mhz+1xSSD Evo 500Go , 3x1To QVO RAID5 / On Cube Chieftec
AMD A6 9500, 8Go, 500Go SSD MX500

Hors ligne

#3 12/01/2014 14:43:57

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

Re : [Tuto] Compiler la version upstream de Mesa

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.

Hors ligne

#4 12/01/2014 16:48:58

VINDICATORs
RédactWikix and the graphicatorix!
Modérateur
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 18 225
Site Web

Re : [Tuto] Compiler la version upstream de Mesa

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.


AMD R7 2700X, MSI Pro Carbon X470, 32Go DDR4 3200@3333Mhz Gskill TridentZ CL14, RX 5700XT MSI Watercooling OC SSD: 1x 970 EVO NVME 500Go + 2x500Go 860 EVO, 3x1To 860 Evo, HDD 1x2To WD black, 1x4to WD Black, 1x3To WD Red, GMT BeQuiet Dark 900+Purepower 1000W 80+ platinium
AMD R3 2200g, Asus A320, 16Go DDR4 2400@2133Mhz, 1x250GO SSD EVO, 3x 2To RAID 5 WD Blue / AMD R5 2600 + 32Go DDR4 3000@2133Mhz+1xSSD Evo 500Go , 3x1To QVO RAID5 / On Cube Chieftec
AMD A6 9500, 8Go, 500Go SSD MX500

Hors ligne

#5 12/01/2014 16:54:13

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

Re : [Tuto] Compiler la version upstream de Mesa

VINDICATORs a écrit :

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 ?

Hors ligne

#6 12/01/2014 17:25:03

VINDICATORs
RédactWikix and the graphicatorix!
Modérateur
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 18 225
Site Web

Re : [Tuto] Compiler la version upstream de Mesa

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.


AMD R7 2700X, MSI Pro Carbon X470, 32Go DDR4 3200@3333Mhz Gskill TridentZ CL14, RX 5700XT MSI Watercooling OC SSD: 1x 970 EVO NVME 500Go + 2x500Go 860 EVO, 3x1To 860 Evo, HDD 1x2To WD black, 1x4to WD Black, 1x3To WD Red, GMT BeQuiet Dark 900+Purepower 1000W 80+ platinium
AMD R3 2200g, Asus A320, 16Go DDR4 2400@2133Mhz, 1x250GO SSD EVO, 3x 2To RAID 5 WD Blue / AMD R5 2600 + 32Go DDR4 3000@2133Mhz+1xSSD Evo 500Go , 3x1To QVO RAID5 / On Cube Chieftec
AMD A6 9500, 8Go, 500Go SSD MX500

Hors ligne

#7 14/01/2014 21:51:58

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

Re : [Tuto] Compiler la version upstream de Mesa

VINDICATORs, tu as toujours une 4850 ?
Est-ce tu as des jeux Valve (HL², L4D2, Counter Strike Source) ?

Dernière modification par lecbee (14/01/2014 21:52:14)

Hors ligne

#8 15/01/2014 11:07:09

VINDICATORs
RédactWikix and the graphicatorix!
Modérateur
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 18 225
Site Web

Re : [Tuto] Compiler la version upstream de Mesa

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.


AMD R7 2700X, MSI Pro Carbon X470, 32Go DDR4 3200@3333Mhz Gskill TridentZ CL14, RX 5700XT MSI Watercooling OC SSD: 1x 970 EVO NVME 500Go + 2x500Go 860 EVO, 3x1To 860 Evo, HDD 1x2To WD black, 1x4to WD Black, 1x3To WD Red, GMT BeQuiet Dark 900+Purepower 1000W 80+ platinium
AMD R3 2200g, Asus A320, 16Go DDR4 2400@2133Mhz, 1x250GO SSD EVO, 3x 2To RAID 5 WD Blue / AMD R5 2600 + 32Go DDR4 3000@2133Mhz+1xSSD Evo 500Go , 3x1To QVO RAID5 / On Cube Chieftec
AMD A6 9500, 8Go, 500Go SSD MX500

Hors ligne

#9 15/01/2014 19:49:38

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

Re : [Tuto] Compiler la version upstream de Mesa

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.

mini_140115065414299191.jpg

Dernière modification par lecbee (15/01/2014 19:50:15)

Hors ligne

#10 15/01/2014 21:43:24

VINDICATORs
RédactWikix and the graphicatorix!
Modérateur
Lieu : Toulouse(31) France
Inscription : 23/11/2004
Messages : 18 225
Site Web

Re : [Tuto] Compiler la version upstream de Mesa

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.

Dernière modification par VINDICATORs (15/01/2014 21:48:29)


AMD R7 2700X, MSI Pro Carbon X470, 32Go DDR4 3200@3333Mhz Gskill TridentZ CL14, RX 5700XT MSI Watercooling OC SSD: 1x 970 EVO NVME 500Go + 2x500Go 860 EVO, 3x1To 860 Evo, HDD 1x2To WD black, 1x4to WD Black, 1x3To WD Red, GMT BeQuiet Dark 900+Purepower 1000W 80+ platinium
AMD R3 2200g, Asus A320, 16Go DDR4 2400@2133Mhz, 1x250GO SSD EVO, 3x 2To RAID 5 WD Blue / AMD R5 2600 + 32Go DDR4 3000@2133Mhz+1xSSD Evo 500Go , 3x1To QVO RAID5 / On Cube Chieftec
AMD A6 9500, 8Go, 500Go SSD MX500

Hors ligne

#11 15/01/2014 21:45:35

lecbee
Membre
Lieu : : ueiL
Inscription : 27/02/2008
Messages : 1 406

Re : [Tuto] Compiler la version upstream de Mesa

En fait je viens d'avoir la confirmation que depuis 2 jours l’Antialiasing fait tout foirer XD
https://bugs.freedesktop.org/show_bug.cgi?id=73672

Hors ligne

Pied de page des forums