Recherche de site Web

Faire fonctionner le RX 480 avec AMDGPU sous Linux


Le RX 480 d’AMD est sorti depuis un peu plus d’une semaine maintenant, et au cours de cette semaine, les joueurs Linux ont réclamé des informations sur le fonctionnement de la carte sur leur distribution préférée. Bien sûr, Ubuntu 16.04 est officiellement pris en charge par les pilotes Pro propriétaires d’AMD, mais qu’en est-il de tous les autres, et que se passe-t-il si vous voulez utiliser ces pilotes open source AMDGPU qui sont en préparation depuis si longtemps ? Eh bien, c’est tout à fait possible, mais ce n’est pas si facile.

AVERTISSEMENT : Voici les dragons, les grands. Ils sont à peu près du genre que vous vous attendriez à voir voler autour de Mereen, donc si vous ne voulez pas prendre le risque de casser votre installation et quelques sourcils brûlés, faites demi-tour maintenant.

Les bases

Les parties du pilote AMDGPU qui sont nécessaires au fonctionnement du RX 480 sont nouvelles, si nouvelles qu’elles se trouvent dans les versions candidates et les dépôts Git. Pour cette raison, ce guide va se concentrer sur Debian Sid, Ubuntu 16.04 et Arch Linux. C’est possible ailleurs, mais ces trois-là seront probablement les plus faciles et les moins frustrants.

Il y a une recette de base qui est nécessaire pour faire fonctionner le RX 480, et tout cela commence par une version du noyau qui inclut la prise en charge du micrologiciel. La meilleure façon de le faire est d’utiliser une version candidate de la version 4.7 des développeurs qui ont travaillé sur le support de Polaris. La prochaine pièce du puzzle est Mesa 12.1. Pour le moment, il n’est disponible qu’à partir de Git. Les deux dernières choses sont une version de libdrm égale ou plus récente que 2.4.68 et xf86-video-amdgpu (le nom du paquet diffère légèrement selon la distribution) égale ou plus récente que 1.1.0. S’ils sont construits à partir des sources, LLVM et Clang 3.7 ou supérieur sont également nécessaires.

Construire le noyau

Obtenir la source

La première étape pour que le RX 480 fonctionne avec AMDGPU est d’obtenir un noyau qui le prend en charge. Il y a une branche du noyau disponible via Git qui fonctionnera parfaitement. Créez un répertoire de build dans lequel travailler et clonez-y la branche.

git clone -b drm-fixes-4.7 git://people.freedesktop.org/~agd5f/linux

Cela prendra plusieurs minutes pour se terminer, mais par la suite, la source sera disponible dans un dossier appelé linux. Avant d’aller plus loin, récupérez les blobs du firmware Polaris dans le dépôt d’Alex Deucher. Il peut être trouvé ici ici. Les blobs Polaris 10 sont ceux nécessaires pour le RX 480.

Il y a deux options pour les placer, soit dans le répertoire firmware avec la source du noyau, soit dans le répertoire racine dans /lib/firmware. Sur Arch, il se peut qu’il soit déjà là.

Mise à jour : À partir de maintenant, le noyau 4.7-rc7 supporte également AMDGPU. Vous pouvez utiliser la source de Kernel.org et l’utiliser à la place.

Configuration du noyau

Les utilisateurs d’Arch Linux devraient passer à la documentation d’Arch sur les versions traditionnelles du noyau pour cette partie.
Il n’y a aucun sens à réinventer la roue. Vous pouvez le trouver ici. Pour Debian et Ubuntu, il y a quelques paquets que vous devez d’abord installer.

apt-get install build-essential gcc-multilib linux-headers ncurses-dev xz-utils fakeroot kernel package
apt-get build-dep linux

Lorsque cela est terminé, cd-dans le dossier. Vous pouvez choisir de configurer le noyau entièrement à partir de zéro, ou vous pouvez copier la configuration existante. Pour copier la configuration, exécutez :

cp /boot/config-$(uname -r) .config

Quoi qu’il en soit, lorsque vous êtes prêt à configurer le noyau, exécutez make menuconfig. Ce guide ne va pas aller trop loin dans la configuration du noyau. Si vous n’êtes pas trop à l’aise avec cela, revenez en arrière et copiez la configuration.

Processor type and features  - - - >
	[*] MTRR (Memory Type Range Register) support

Device Drivers  - - - >
	Generic Driver Options  - - - >
	-*- Userspace firmware loading support
	# If you wish to compile the firmware in use the below, if not, don’t.
	[*] Include in-kernel firmware blobs in kernel binary
	(amdgpu/polaris10_ce.bin amdgpu/polaris10_mc.bin amdgpu/polaris10_me.bin amdgpu/polaris10_mec2.bin amdgpu/polaris10_mec.bin amdgpu/polaris10_pfp.bin amdgpu/polaris10_rlc.bin 
amdgpu/polaris10_sdma1.bin amdgpu/polaris10_sdma.bin amdgpu/polaris10_smc.bin amdgpu/polaris10_smc_sk.bin amdgpu/polaris10_uvd.bin amdgpu/polaris10_vce.bin)
	# Either way point this at where you chose to put the firmware
	(/lib/firmware) Firmware blobs root directory
	# For many of the following options you can choose between compiling in or modules
Graphics support  - - - >
	<*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
	<*/M> AMD GPU
	[*] Enable amdgpu for CIK parts
<*/M> Sound card support  - - - >
<*/M> Advanced Linux Sound Architecture  - - - >
[*]  PCI sound devices  - - - >
HD-Audio  - - - >
	<*> HD Audio PCI
	[*] Support initialization patch loading for HD-audio
	<*> Your sound card
	<*> Build HDMI/DisplayPort HD-audio codec supported
	(2048)  Pre-allocated buffer size for HD-audio driver

Ce qui précède est l’ensemble des options de configuration nécessaires au fonctionnement d’AMDGPU. Le reste du noyau dépend de vous. Sur Debian, si vous copiiez la configuration, l’un des développeurs décidait d’exiger une clé pour construire le noyau. Pour contourner cela (il y a probablement un moyen plus sûr de gérer cela), commentez la ligne qui le nécessite dans le .config. Pour le trouver, il suffit d’ouvrir le fichier dans un éditeur qui prend en charge la recherche et la recherche de @debian.

Construire et installer le noyau

Maintenant que le noyau est configuré, il est temps de construire les paquets du noyau. Pour ce faire, exécutez les deux commandes suivantes.

make-kpkg clean
fakeroot make-kpkg --initrd --revision=1.0.AMDGPU kernel_image kernel_headers -j 9

L’option -j 9 doit être le nombre de cœurs de processeur sur le système plus un. Cela aidera à réduire le long processus de compilation du noyau.

Après la compilation, il y aura deux paquets .deb situés dans le répertoire parent du cd build.
dans ce répertoire et installeront les paquets en tant que root.

dpkg -i linux-image-4.7*.deb
dpkg -i linux-headers-4.7*.deb

Les noms de paquets exacts qui sont créés seront légèrement différents de ceux ci-dessus, mais les commandes ci-dessus devraient fonctionner. Si ce n’est pas le cas, vous pouvez toujours saisir les noms complets des packages. Une fois que les packages sont installés et que vous êtes sûr qu’ils sont correctement installés, redémarrez.

Mesa

La dernière version absolue de Mesa (12.1 au moment de la rédaction de cet article) est nécessaire pour que AMDGPU fonctionne correctement. La meilleure façon d’installer Mesa diffère en fonction de la distribution utilisée, de sorte que la partie suivante est décomposée par distribution.

Debian

Debian n’a pas de version empaquetée de Mesa 12.1, elle doit donc être extraite directement du dépôt Git et construite. Avant de faire cela, assurez-vous que toutes les dépendances pour générer Mesa sont installées.

apt-get build-dep mesa
apt-get install llvm-3.9 llvm-3.9-dev clang-3.9 clang-3.9-dev libxvmc-dev libxcb-xvmc0-dev libvdpau-dev libomxil-bellagio-dev

Essayez d’exécuter llvm-config. Si cela ne fonctionne pas, vous devez lier llvm-config-3.9 à llvm-config.

ln -s /usr/bin/llvm-config-3.9 /usr/bin/llvm-config

Choisissez un répertoire dans lequel cloner le référentiel Mesa et clonez-le. Puis cd dans le répertoire Mesa.

git clone git://anongit.freedesktop.org/mesa/mesa
cd mesa

Une fois à l’intérieur du répertoire, configurez, compilez et installez Mesa.

./autogen.sh --prefix=/usr --enable-texture-float --libdir=/usr/lib/x86_64-linux-gnu/ --with-gallium-drivers=radeonsi,swrast --with-egl-platforms=drm,x11 --enable-glx-tls --enable-shared-glapi 
--enable-glx --enable-driglx-direct --enable-gles1 --enable-gles2 --enable-gbm --enable-openmax --enable-xa --enable-osmesa --with-radeonsi-llvm-compiler --enable-sysfs --enable-vdpau --enable-xvmc 
--enable-openmax --enable-nine
make -j9
make install

Cette chaîne de configuration ridiculement longue configure simplement Mesa pour inclure les pilotes RadeonSI et les ajouts utiles qui en feront une expérience plus complète. Encore une fois, le -j9 fait référence au nombre de cœurs de processeur plus un. Ce qui est bien, c’est qu’après ces commandes, Mesa sera installé. L’inconvénient, c’est qu’il ne se présentera pas sous la forme d’un .deb et qu’il ne sera pas aussi facile à gérer.

Ubuntu

Sur Ubuntu, le processus d’installation de la dernière version de Mesa a été rendu extrêmement facile grâce à l’utilisation du Padoka PPA. Il suffit d’ajouter le PPA, de mettre à jour et d’installer mesa.

sudo add-apt-repository ppa:paulo-miguel-dias/mesa
sudo apt-get update
sudo apt-get install mesa

Arch Linux

Bienvenue aux utilisateurs d’Arch ! Vous n’avez pas la tâche aussi facile que les gens d’Ubuntu, mais il y a des paquets disponibles dans l’AUR. Avant de faire cela, assurez-vous que votre ordinateur est configuré pour utiliser l’AUR et que vous avez configuré sudo sur votre compte utilisateur. Ce guide suppose également que les packages sont fabriqués avec :

makepkg -sri

Extrayez et installez les packages suivants à partir de l’AUR dans l’ordre dans lequel ils apparaissent.

llvm-svn
lib32-llvm-svn
mesa-git
lib32-mesa-git

Faire attention. Cela prendra beaucoup de temps. LLVM est un gros logiciel. Si, pour une raison quelconque, certains paquets ne sont pas installés automatiquement, ils seront dans leurs dossiers de compilation respectifs et pourront être installés manuellement.

pacman -U package-name.pkg.tar.xz

Installation de libdrm/AMDGPU

C’est presque fait ! La seule chose qui reste à faire est d’installer libdrm et xf86-video-amdgpu. À ce stade, ils devraient être facilement disponibles pour le gestionnaire de paquets des trois distributions.

Debian et Ubuntu

apt-get install libdrm-amdgpu1 libdrm2 xserver-xorg-video-amdgpu

Arch Linux

pacman -S libdrm xf86-video-amdgpu

Une fois les paquets installés, vous pouvez écrire dans une configuration Xorg. Cela ne semble pas être obligatoire avec AMDGPU, mais peut aider pour certaines options, comme DRI. Cette configuration de base devrait fonctionner.

Section "Device"
    Identifier "AMDGPU"
    Driver "amdgpu"
    Option "AccelMethod" "glamor"
    Option "DRI" "3"
EndSection

Une fois que cela est écrit et enregistré, vous pouvez redémarrer votre ordinateur et voir si tout a fonctionné. Ces pilotes sont, bien sûr, très expérimentaux. Il peut y avoir des bogues, une mauvaise configuration ou toute une série de problèmes. Si, cependant, ils fonctionnent, vous serez l’un des premiers à profiter d’une pile de pilotes presque entièrement open source qui rivalise facilement avec les options de source fermée. Il est assez clair que si ces pilotes peuvent rester mis à jour dans le code grand public, AMD sera une option très forte pour les utilisateurs de Linux à l’avenir.

Articles connexes: