[supprimé]
- Modifié
information : ce tuto a été initiallement créé sous F15 / Mesa 7.11 mais il est toujours d'actualité pour F16/17 avec Mesa 8/9.
Une version plus récente (Fedora 20+) de ce tuto est disponible ici : http://forums.fedora-fr.org/viewtopic.php?pid=532589
Je suis en train de tester le pilote r600g sur mon système (RV770 - HD4850), notamment pour tester les dernières nouveautés (S3TC en particulier) avec Enemy Territory: QUAKE Wars.
Et donc je me suis dis que j'allais faire un petit tuto pour que n'importe qui puisse le faire également, sachant que c'est très simple mais que parfois ça peut faire peur de compiler... et surtout de foutre le bordel dans son système.
Que va-t-on faire ici ?
- Compilation du pilote r600g sur la version de développement de Mesa (http://cgit.freedesktop.org/mesa/mesa/)
- Compilation du module S3TC 1.0.0 (http://cgit.freedesktop.org/~mareko/libtxc_dxtn/) : optionnel car la lib est déjà packagée dans RPM Fusion.
- Le tuto ne touchera pas aux libs du système de Fedora, donc pour n'importe qu'elle application vous pourrez soit utiliser le pilote de Fedora ou bien celui que nous allons compiler ici.
- Système 32 bits ou 64 bits. Sur un système 64 bits il faudra en fait compiler une version 32 bits de r600g car ETQW est 32 bits.
Bien sûr vous pouvez adapter à r300g.
ÉTAPE 1
*******
Récupérer tout le nécessaire pour compiler (commande valable pour 32 et 64 bits) :
ÉTAPE 2
*******
1. Récupérer la version de développement de Mesa :
3. Récupérer la libtxc_dxtn (S3TC) si vous voulez la compiler (non recommandé) :
ÉTAPE 3
*******
Allons donc compiler Mesa, placez-vous dans le répertoire mesa :
Et le pilote r600g dans /usr/local/lib/dri (pour système 32 bits) ou /usr/lib/dri (pour système 64 bits).
Note :
Avant de recompiler 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 driver, activer certaines fonctions, etc.) :
ÉTAPE 4 (sautez cette étape si vous avez installé le paquet de RPM Fusion)[/h]
*******
Compiler S3TC :
- vous pouvez adapter CFLAGS et OPT_CFLAGS selon vos désirs
- modifier les 2 dernières lignes pour installer la lib dans /usr/local/lib au lieu de /usr/lib par défaut
Compilation & installation :
ÉTAPE 5 - VÉRIFICATION
*******
Cette étape de vérification n'est pas possible sur 64 bits. Il vous faudrait une glxinfo 32 bits pour ça.
Si vous lancez :
Maintenant si vous voulez tester le pilote fraichement compilé, il faut passer une variable d'environnement. Personnellement je préfère le faire à chaque fois donc comme ceci :
En revanche si vous faites un :
$ glewinfo | grep s3tc
vous devriez avoir malheureusement "GL_EXT_texture_compression_s3tc: MISSING"
En fait, d'après le patch apportant S3TC pour r600g (http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e0437914bb786d0b05be8f95e4ff37bf5a19f44) je cite : "Still requires R600_ENABLE_S3TC until the kernel fixes are in."
Donc avec :
$ R600_ENABLE_S3TC=1 LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" glewinfo | grep s3tc
nous obtenons bien "GL_EXT_texture_compression_s3tc: OK"
ÉTAPE 6 - TEST
*******
Pour lancer ETQW avec le Mesa fraîchement compilé :
En revanche ETQW ne fonctionne pas.
$ R600_ENABLE_S3TC=1 LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" /usr/local/games/etqw/etqw
Si S3TC n'est pas présent j'ai bien le menu du jeu qui est fonctionnel mais le jeu ne peut pas se lancer. Si j'active S3TC j'ai la planète en fond de menu qui apparait plutôt correctement mais aucun menu...
edit : Le kernel 2.6.39 supporte les textures S3TC pour r600g, donc à partir de ce kernel il n'est plus nécessaire d'indiquer R600_ENABLE_S3TC=1
[h]
CONCLUSION[/h]
*******
C'est très simple de tester les dernières versions de Mesa, même quand on n'y connaît rien en compilation ou quoi que ce soit. Et ce sans toucher au système.
ETQW ne marche pas encore avec r600g, mais il y a des progrès indéniables de semaines en semaines.
edit: suite aux dernières mises à jours, ETQW fonctionne à peu près correctement maintenant. Plus d'informations dans la suite du fil.
edit2: suite aux dernières mises à jours (bis), ETQW ne fonctionne plus du tout. Peut-être une nouvelle fonctionnalité qui a été ajoutée, que donc ETQW utilise mais qui ne marche pas correctement ?
edit3: je suis désormais avec un etqw qui fonctionne sans corruption graphique, à 20 fps de moyenne en 1680*1050 et détails sur faible. Et 12 fps en détail élevé.
edit4 (août 2012) : je suis désormais avec un etqw qui fonctionne sans corruption graphique, à 40 fps de moyenne en 1680*1050 et détails sur faible.
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 :
Une version plus récente (Fedora 20+) de ce tuto est disponible ici : http://forums.fedora-fr.org/viewtopic.php?pid=532589
Je suis en train de tester le pilote r600g sur mon système (RV770 - HD4850), notamment pour tester les dernières nouveautés (S3TC en particulier) avec Enemy Territory: QUAKE Wars.
Et donc je me suis dis que j'allais faire un petit tuto pour que n'importe qui puisse le faire également, sachant que c'est très simple mais que parfois ça peut faire peur de compiler... et surtout de foutre le bordel dans son système.
Que va-t-on faire ici ?
- Compilation du pilote r600g sur la version de développement de Mesa (http://cgit.freedesktop.org/mesa/mesa/)
- Compilation du module S3TC 1.0.0 (http://cgit.freedesktop.org/~mareko/libtxc_dxtn/) : optionnel car la lib est déjà packagée dans RPM Fusion.
- Le tuto ne touchera pas aux libs du système de Fedora, donc pour n'importe qu'elle application vous pourrez soit utiliser le pilote de Fedora ou bien celui que nous allons compiler ici.
- Système 32 bits ou 64 bits. Sur un système 64 bits il faudra en fait compiler une version 32 bits de r600g car ETQW est 32 bits.
Bien sûr vous pouvez adapter à r300g.
ÉTAPE 1
*******
Récupérer tout le nécessaire pour compiler (commande valable pour 32 et 64 bits) :
# yum install gcc automake autoconf make makedepend gcc-c++ glibc-devel.i686 glibc-devel.x86_64 libX11-devel.i686 libdrm-devel.i686 libXfixes-devel.i686
# yum install expat-devel.i686 libudev-devel.i686 libXt-devel.i686 libXi-devel.i686 libXmu-devel.i686 udis86-devel.i686 libXdamage-devel.i686
# yum install libtool libxcb-devel.i686 libxcb.i686 libXxf86vm.i686 libXxf86vm-devel.i686 flex bison git libXext-devel.i686
Remarque : depuis quelques semaines Mesa nécessite une version de libdrm 2.4.39+. Sur Fedora 17, vous pouvez l'installer depuis le dépôt updates-testing.ÉTAPE 2
*******
1. Récupérer la version de développement 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 "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.3. Récupérer la libtxc_dxtn (S3TC) si vous voulez la compiler (non recommandé) :
$ urlgrabber http://cgit.freedesktop.org/~mareko/libtxc_dxtn/snapshot/libtxc_dxtn-1.0.0.tar.gz
Décompresser libtxc_dxtn-1.0.0.tar.gzÉTAPE 3
*******
Allons donc compiler Mesa, placez-vous dans le répertoire mesa :
$ cd mesa
Préparer la compilation (Mesa 32 bits sur un système 64 bits) :
$ ./autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= --enable-32-bit CFLAGS="-O2 -m32" CXXFLAGS="-O2 -m32" --libdir=/usr/lib
Ou (Mesa 32 bits sur un système 32 bits) :
$ ./autogen.sh --with-gallium-drivers=r600 --with-dri-drivers= CFLAGS="-O2" CXXFLAGS="-O2"
puis on compile (pour tous) :
$ make -j2
et enfin pour installer les libs :
# make install
Avertissement : désormais les libs sont installées dans /usr/local/lib pour les système 32 bits. Par contre pour les systèmes 64 bits, c'est dans /usr/lib. Cela signifie donc que les libs 32 bits de Fedora seront écrasées par les votre. En revanche les libs 64 bits de Fedora ne sont pas touchées.Et le pilote r600g dans /usr/local/lib/dri (pour système 32 bits) ou /usr/lib/dri (pour système 64 bits).
Note :
Avant de recompiler 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 driver, activer certaines fonctions, etc.) :
$ ./autogen.sh --help
[h]ÉTAPE 4 (sautez cette étape si vous avez installé le paquet de RPM Fusion)[/h]
*******
Compiler S3TC :
$ cd libtxc_dxtn-1.0.0
Nous allons modifier un peu le Makefile avant de compiler :- vous pouvez adapter CFLAGS et OPT_CFLAGS selon vos désirs
- modifier les 2 dernières lignes pour installer la lib dans /usr/local/lib au lieu de /usr/lib par défaut
Compilation & installation :
$ make
# make install
Désormais vous avez la libtxc_dxtn.so dans /usr/local/libÉTAPE 5 - VÉRIFICATION
*******
Cette étape de vérification n'est pas possible sur 64 bits. Il vous faudrait une glxinfo 32 bits pour ça.
Si vous lancez :
$ glxinfo |grep "OpenGL version string"
vous devriez voir la version de lib de Fedora.Maintenant si vous voulez tester le pilote fraichement compilé, il faut passer une variable d'environnement. Personnellement je préfère le faire à chaque fois donc comme ceci :
$ LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" glxinfo |grep "OpenGL version string"
Le passage qui suit n'est plus d'actualité si vous avez un noyau 2.6.39 ou supérieur :$ glewinfo | grep s3tc
vous devriez avoir malheureusement "GL_EXT_texture_compression_s3tc: MISSING"
En fait, d'après le patch apportant S3TC pour r600g (http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e0437914bb786d0b05be8f95e4ff37bf5a19f44) je cite : "Still requires R600_ENABLE_S3TC until the kernel fixes are in."
Donc avec :
$ R600_ENABLE_S3TC=1 LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" glewinfo | grep s3tc
nous obtenons bien "GL_EXT_texture_compression_s3tc: OK"
ÉTAPE 6 - TEST
*******
Pour lancer ETQW avec le Mesa fraîchement compilé :
$ LD_LIBRARY_PATH="/usr/lib" LIBGL_DRIVERS_PATH="/usr/lib/dri" vblank_mode=0 /usr/local/games/etqw/etqw
Noter le "vblank_mode=0" qui sert à désactiver le Vsync.$ R600_ENABLE_S3TC=1 LD_LIBRARY_PATH="/usr/local/lib" LIBGL_DRIVERS_PATH="/usr/local/lib/dri" /usr/local/games/etqw/etqw
Si S3TC n'est pas présent j'ai bien le menu du jeu qui est fonctionnel mais le jeu ne peut pas se lancer. Si j'active S3TC j'ai la planète en fond de menu qui apparait plutôt correctement mais aucun menu...
[h]
CONCLUSION[/h]
*******
C'est très simple de tester les dernières versions de Mesa, même quand on n'y connaît rien en compilation ou quoi que ce soit. Et ce sans toucher au système.
ETQW ne marche pas encore avec r600g, mais il y a des progrès indéniables de semaines en semaines.
edit: suite aux dernières mises à jours, ETQW fonctionne à peu près correctement maintenant. Plus d'informations dans la suite du fil.
edit2: suite aux dernières mises à jours (bis), ETQW ne fonctionne plus du tout. Peut-être une nouvelle fonctionnalité qui a été ajoutée, que donc ETQW utilise mais qui ne marche pas correctement ?
edit3: je suis désormais avec un etqw qui fonctionne sans corruption graphique, à 20 fps de moyenne en 1680*1050 et détails sur faible. Et 12 fps en détail élevé.
edit4 (août 2012) : je suis désormais avec un etqw qui fonctionne sans corruption graphique, à 40 fps de moyenne en 1680*1050 et détails sur faible.
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