OldGentooWiki:Utiliser le Kernel Mode Setting (KMS)
De Gentoo-Quebec.
Si vous utilisez le système de fichier BTRFS, il est recommandé de faire un snapshot avant de faire la manipulation. En cas de problème insoluble, il sera aisé de revenir sur une configuration fonctionnelle en se servant du paramètre subvol dans la ligne de commande du noyau au niveau de Grub.
Introduction
Xorg (une implémentation de serveur X) une simple surcouche au noyau qui va interpréter diverses commandes d'affichage graphique (fenêtrage, dessin, texte...) qu'il reçoit de ses client au travers du protocole X en plus de notifier ces derniers de divers événements comme des frappes au clavier ou un déplacement de la souris afin que les actions appropriées soient effectuées.
Pour des raisons autant techniques que historiques Xorg et le noyau du sstème sont deux mondes qui se cotoient sans vraiment collaborer (Xorg configurer et gére le matériel graphique comme bon lui semble, sans vraiment se soucier de ce qu'il se passe au niveau du noyau du système) :
- Xorg doit pouvoir accéder aux registres de configuration de la carte graphique et prendre en charge la gestion des ressources de la carte graphique;
- Pour ce faire, Xorg doit fonctionner avec un niveau de privilège administratif (SUID root) ce qui peut occasionner des problèmes de sécurité;
- Au moindre plantage du pilote propriétaire c'est toute la machine qui plante;
Bien évidemment, cette approche d'avoir deux protagonistes qui ont un accès direct au matériel n'est pas ce qu'il y a de plus propre d'un point de vue architectual :
- Xorg n'au aucune idée de ce que fait le noyau et le noyau n'a aucun moyen de savoir les manipulations faites au niveau du matériel (en cas de conflit...)
- Violation du principe que seul le noyau à un accès direct au matériel
- Énorme complexité et redondance dans les responsabilités
KMS se veut une réponse à cette approche bicéphale : tout le matériel est géré par le noyau et uniquement par le noyau du système qui met à disposition un framebuffer pouvant être doté de l'accélération matérielle 3D (si le matériel et les pilotes du noyau la supporte). Xorg s'appuie lui directement de ce framebuffer pour réaliser ses opérations de rendu graphique.
TODO: A totalement revoir.
Pour aller plus loin
TODO (Parler de Gallium 3D, de Mesa, de DRI/DRI2, etc).
Support du matériel
AMD/ATI
Le support des cartes AMD/ATI n'est pas encore au niveau du pilote propriétaire à jour (juin 2010). Bien qu'il convienne dans le cas d'une utilisation courante, les joueurs lui préféreront le pilote propriétaire AMD/Catalyst. Cependant, il est à noter que les révisions récentes de Catalyst ne prennent plus en charges les anciens chipsets AMD (notamment tous les chipsets antérieurs au R500).
La page http://www.x.org/wiki/RadeonFeature illustre l'avancée actuelle des différentes caractéristiques du support des chipsets radeon ainsi que le niveau de support de l'API OpenGL pour chacun de ces chipsets (le dénominateur commun est OpenGL 2.0). Notez que si, en date du mois de juin 2010, les cartes basées sur un GPU Radeon R7xx et moins sont relativement bien supportées, ce n'est absolument pas le cas des GPU Radeon R8xx (cartes Evergreen série 5xxx).
Intel
TODO
nVidia
Le support des cartes nVidia n'est pas encore au niveau du pilote propriétaire à jour (juin 2010). La page http://nouveau.freedesktop.org/wiki/FeatureMatrix donne l'état de support des différentes générations de GPU.
Passer sa configuration en KMS
Étape 1. Installation des fichiers de micro-code (firmware) additionnels
AMD/ATI
Il faut installer quelques fichiers de micro-code additionnels à ceux qui seront déployés par le noyau si votre carte AMD/ATI est basée sur un GPU R6xx, R7xx ou R8xx et que votre noyau GNU/Linux est un 2.6.33 ou plus récent. Ces fichiers ne sont pas redistribués dans les sources du noyau que ce soit vanille ou Gentoo, cependant le paquet les déployant est dans l'arbre de Portage :
Intel
TODO
nVidia
TODO
Étape 2. Configuration du noyau GNU/Linux
AMD/ATI
Il faut commencer par récupérer un noyau récent (noyau vanille sur kernel.org ou un de ceux proposés par Gentoo/Funtoo) sachant que GNU/Linux 2.6.32 serait un minimum (KMS radeon n'est plus en staging à partir de cette version). Cependant du fait que le travail sur KMS est extrêmement actif et évoluant grandement au fil des semaines, il est recommandé de choisir un noyau stable plus récent. A ce sujet, il faut savoir qu'il est fort probable qu'une machine dotée de plusieurs cartes reliées en CrossFireX affiche un bel écran noir à la suite des opérations ci-dessous. Si celà s'avérait le cas, il faudra effectuer une mise à jour directement vers le noyau GNU/Linux 2.6.35 (encore en -rc3 à l'heure actuelle) sans passer par la case 2.6.33/2.6.34 qui ont occasionné le même problème sur des machines de test.
Vous DEVEZ avoir le support des modules noyau activé ! Si vous avez un noyau purement monolitique l'opération est plus complexe à cause des fichiers de micro-code (firmware) qui sont nécessairement à charger dans votre carte graphique AMD/ATI et ne sera pas détaillée ici.
Une fois le noyau GNU/Linux éventuellement téléchargé et décompressé dans /usr/src (ne pas oublier de faire pointer le lien symbolique linux au bon endroit par un ln à la main soit en recourant à eselect kernel) il va falloir activer une l'option Radeon. Pour utiliser le KMS, vous devez minimalement cocher ATI Radeon. Il est cependant recommandé de cocher également Enable modesetting on radeon by default pour ne pas ne pas avoir à vous en soucier plus loin :
| Device Drivers --> | Graphics support --> | <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --> | <M> ATI Radeon | [*] Enable modesetting on radeon by default
Recompilez, installez votre noyau comme à l'accoutumée dans /boot et mettez à jour votre chargeur (Grub ou autre). Si tout se passe bien, vous devriez normalement avoir quelques fichiers dans /lib/firmware/radeon :
RS780_pfp.bin RV630_pfp.bin RV710_pfp.bin
RV610_me.bin RV635_me.bin RV730_me.bin
RV610_pfp.bin RV635_pfp.bin RV730_pfp.bin
...
Intel
TODO
nVidia
TODO
Étape 3. Configuration du chargement des modules
Il est possible de mettre les directives spécifiquement à certaines versions du noyau (ex. tous les noyaux, tous les noyaux 2.6, tous les noyaux 2.6.34). Référez-vous aux exemples de /etc/conf.d/modules.
AMD/ATI
- Gentoo : TODO
- Funtoo : Éditez le fichier /etc/conf.d/modules pour y mentionner le module noyau radeon :
# Radeon KMS (quelque soit la révision du noyau 2.6), modules_2_6="radeon"
# Radeon KMS (quelque soit la révision du noyau 2.6), modules_2_6="radeon" module_radeon_args="modeset=1"
Intel
TODO
nVidia
TODO
Étape 4. Redémarrage
Une fois le noyau compilé, installé et votre chargeur Grub configuré, redémarrez la machine. Vous devriez normalement voir votre écran passer du mode texte 80x25 à un framebuffer (graphique) lors du chargement des modules noyau par OpenRC.
AMD/ATI
Rapide contrôle :
[ 12.362726] [drm] Initialized drm 1.1.0 20060810 [ 13.248534] [drm] radeon defaulting to kernel modesetting. [ 13.248536] [drm] radeon kernel modesetting enabled. [ 13.249564] [drm] initializing kernel modesetting (RV770 0x1002:0x9442). [ 13.249926] [drm] register mmio base: 0xFB9E0000 [ 13.249927] [drm] register mmio size: 65536 [ 13.250018] [drm] Clocks initialized ! [ 13.250048] [drm] Detected VRAM RAM=512M, BAR=256M [ 13.250049] [drm] RAM width 256bits DDR [ 13.250136] [drm] radeon: 512M of VRAM memory ready [ 13.250137] [drm] radeon: 512M of GTT memory ready. [ 13.250194] [drm] radeon: using MSI. [ 13.250235] [drm] radeon: irq initialized. [ 13.250236] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 13.250648] [drm] Loading RV770 Microcode [ 13.549767] [drm] ring test succeeded in 1 usecs [ 13.549879] [drm] radeon: ib pool ready. [ 13.550008] [drm] ib test succeeded in 0 usecs [ 13.550010] [drm] Enabling audio support [ 13.550274] [drm] Default TV standard: NTSC [ 13.550279] [drm] Default TV standard: NTSC [ 13.550341] [drm] Default TV standard: NTSC [ 13.550587] [drm] Radeon Display Connectors [ 13.550588] [drm] Connector 0: [ 13.550589] [drm] DVI-I [ 13.550590] [drm] HPD1 [ 13.550591] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c [ 13.550593] [drm] Encoders: [ 13.550594] [drm] DFP1: INTERNAL_UNIPHY [ 13.550595] [drm] CRT2: INTERNAL_KLDSCP_DAC2 [ 13.550596] [drm] Connector 1: [ 13.550597] [drm] DIN [ 13.550598] [drm] Encoders: [ 13.550599] [drm] TV1: INTERNAL_KLDSCP_DAC2 [ 13.550600] [drm] Connector 2: [ 13.550601] [drm] DVI-I [ 13.550601] [drm] HPD2 [ 13.550603] [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c [ 13.550604] [drm] Encoders: [ 13.550605] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 13.550606] [drm] DFP2: INTERNAL_KLDSCP_LVTMA [ 13.605528] [drm] Internal thermal controller with fan control [ 13.605543] [drm] radeon: power management initialized [ 14.087076] [drm] fb mappable at 0xC0141000 [ 14.087078] [drm] vram apper at 0xC0000000 [ 14.087079] [drm] size 7258112 [ 14.087080] [drm] fb depth is 24 [ 14.087081] [drm] pitch is 6912 [ 15.291658] fb0: radeondrmfb frame buffer device [ 15.291659] drm: registered panic notifier [ 15.291728] [drm] Initialized radeon 2.5.0 20080528 for 0000:03:00.0 on minor 0
Intel
TODO
Intel
TODO
Étape 5. Installation de la libDRM et de Mesa
- Le développement de Mesa et Xorg étant très actif, vous pouvez si vous le désirez utiliser une version de développement (-9999) de Mesa 3D en ajoutant l'overlay x11.
- [Funtoo] : En date de juillet 2010, Xorg 7.6 (x11-base/xorg-server versions 1.8.x) est toujours masqué. Noter que Xorg 1.8.x dépend d'udev >= 151
- Assurez-vous d'avoir le nécessaire sur votre système avant de passer à la suite, au besoin émergez les paquets nécessaires.
- Il n'y a pas de paquet x11-drivers/xf86-video-radeon. Ceci est parfaitement normal car tout le nécessaire est contenu dans media-libs/mesa.
- Vous n'avez pas non plus besoin d'émerger xf86-video-ati ! Il s'agit des pilotes libres 2D.
AMD/ATI
Selon le Wiki Freedesktop.org (http://www.x.org/wiki/radeonBuildHowTo#Mesa3D), vous devez avoir les éléments suivants d'installés :
- libdrm (x11-libs/libdrm) >=2.4.18
- Mesa 3D (media-libs/mesa):
- GPUs de R100 à R500 >= 7.7
- GPUs R600 et plus >= 7.8.1
- Xorg 7.5 ou ultérieur (x11-base/xorg-server >= 1.7.x)
Au moment d'émerger Mesa, assurez-vous d'avoir la valeur correcte pour la variable VIDEO_CARDS. Cette valeur se détermine en regardant les useflags de Mesa 3D:
...
* Found these USE flags for media-libs/mesa-9999: U I
...
- - video_cards_r100 : VIDEO_CARDS setting to build only r100 based chips code for radeon - - video_cards_r128 : VIDEO_CARDS setting to build driver for ATI r128 video cards - - video_cards_r200 : VIDEO_CARDS setting to build only r200 based chips code for radeon - - video_cards_r300 : VIDEO_CARDS setting to build only r300, r400 and r500 based chips code for radeon + + video_cards_r600 : VIDEO_CARDS setting to build only r600 and r700 based chips code for radeon...
La valeur à utiliser pour VIDEO_CARDS dépend de votre modèle de carte AMD/ATI dont le tableau ci-après donne une liste non exhaustive:
| GPU | Exemples de modèles de cartes | Valeur à utiliser pour VIDEO_CARDS |
|---|---|---|
| RV100 | Radeon VE, Radeon 7000 | r100 |
| R100 | Radeon (SDR), Radeon (DDR) / LE, Radeon 7200 (SDR / DDR) | r100 |
| RV200 | Radeon 7500 (DDR), FireGL 7800 (Mobile) | r100 (il s'agit bien de R100) |
| ATI Rage | Toutes les cartes ATI Rage 128, Rage Fury (AGP) 32MB, XPERT 128 (AGP) 16MB, XPERT 99 (AGP) 8MB. | r128 |
| R200 | Radeon 8500 LE, Radeon 8500, Radeon 9100, FireGL 8700, FireGL 8800 | r200 |
| RV250 | Radeon 9000, Radeon 9000 Pro | r200 |
| RV280 | Radeon 9200SE, Radeon 9200, Radeon 9250 | r200 |
| R300 | Radeon 9500, Radeon 9500 Pro, Radeon 9700, Radeon 9700 Pro | r300 |
| RV350 | Radeon 9600, Radeon 9600 Pro | r300 |
| R350 | Radeon 9800, Radeon 9800 Pro | r300 |
| RV360 | Radeon 9600 XT | r300 |
| R360 | Radeon 9800 XT | r300 |
| RV370 | Radeon Xpress 200M, Radeon X300, Radeon X550, Radeon X1050 | r300 |
| RV380 | Radeon X600, Radeon X600 Pro, All-in-Wonder | r300 |
| RS400 | Radeon XPRESS 200/200M IGP | r300 |
| RV410 | Radeon X700 (PCI-Express) | r300 |
| R420 | Radeon X800 (AGP) | r300 |
| R423/R430 | Radeon X800 (PCI-Express) | r300 |
| R480/R481 | Radeon X850 (PCI-Express/AGP) | r300 |
| RV505 | Radeon X1550, X1550 64 bits | r300 |
| RV515 | Radeon X1300, X1400, X1550, X1600; FireGL V3300, V3350 | r300 |
| RV516 | Radeon X1300, X1550, X1550 64 bits, X1600; FireMV 2250 | r300 |
| R520 | Radeon X1800; FireGL V5300, V7200, V7300, V7350 | r300 |
| R520 | Radeon X1800; FireGL V5300, V7200, V7300, V7350 | r300 |
| RV530 | Radeon X1300 XT, X1600, X1600 Pro, X1650; FireGL V3400, V5200 | r300 |
| RV535 | Radeon X1300, X1650 | r300 |
| RV550 | Radeon X2300 HD | r300 |
| RV560 | Radeon X1650 | r300 |
| RV570 | Radeon X1950, X1950 GT; FireGL V7400 | r300 |
| R580 | Radeon X1900, X1950; AMD Stream Processor | r300 |
| R600 | Radeon HD 2900 GT/Pro/XT; FireGL V7600, V8600, V8650 | r600 |
| RV610 | Radeon HD 2350, HD 2400 Pro/XT, HD 2400 Pro AGP; FireGL V4000 | r600 |
| RV630 | Radeon HD 2600 LE/Pro/XT, HD 2600 Pro/XT AGP; Gemini RV630; FireGL V3600/V5600 | r600 |
| RV630 | Radeon HD 3800 | r600 |
| Série R7xx | Radeon HD 4350, HD 4650, HD 4670, HD 4850, HD 4870, HD 4890, HD 4850 X2 (2 GPUs sur la même carte), HD 4870 X2 (2 GPUs sur la même carte) | r600 |
Si votre machine est par exemple dotée d'une carte graphique AMD/ATI Radeon HD 4850, vous devez mettre VIDEO_CARDS="r600" dans votre fichier /etc/make.conf:
Ne fixez pas VIDEO_CARDS à radeon ! Cela empêcherait la construction du pilote Xorg propre à votre GPU et vous n'obtiendrez que le rendu logiciel, extrêmement lent. Le paquet de mesa prend automatiquement en charge de fixer les bonnes valeurs de ses useflags (dont radeon) en fonction de ce que vous définissez pour VIDEO_CARDS.
Ne vous occuppez pas du useflag gallium de media-libs/mesa pour le moment.
Intel
TODO
Intel
TODO
Étape 6. Configuration de Xorg
AMD/ATI
Dans le fichier /etc/X11/xorg.conf à la section Driver, il faut utiliser radeon (et non radeonhd ou ati)
Section "ServerLayout"
Identifier "aticonfig Layout"
Screen 0 "Screen0" 0 0
EndSection
Section "Files"
EndSection
Section "Module"
EndSection
Section "Monitor"
Identifier "Monitor0"
Option "VendorName" "Samsung"
Option "ModelName" "206BW"
Option "DPMS" "true"
EndSection
Section "Device"
Identifier "card0"
Driver "radeon"
BusID "PCI:3:0:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Extensions"
Option "Composite" "Enable"
EndSection
Intel
TODO
Intel
TODO
Étape 7. Lancement de Xorg et vérification de bon fonctionnement
C'est à l'heure de vérité ! Il est temps de lancer Xorg et de vérifier si tout fonctionne comme prévu. Pour cela il suffit de faire :
Si tout se passe bien, vous devriez vous retrouver avec un twm (ou ce vous avez configuré) ! Une première vérification consiste à vérifier ce que retourne un glxinfo :
AMD/ATI
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: Mesa DRI R600 (RV770 9442) 20090101 TCL DRI2
OpenGL version string: 2.0 Mesa 7.9-devel
Deuxième vérification : voir ce que contient /var/log/Xorg.0.log :
X.Org X Server 1.8.0
Release Date: 2010-04-02
[ 63.685] X Protocol Version 11, Revision 0
[ 63.685] Build Operating System: Linux 2.6.35-rc3-next-20100623-kms x86_64 Gentoo
[ 63.685] Current Operating System: Linux electron 2.6.35-rc3-git5-kms #2 SMP PREEMPT Thu Jul 1 01:28:23 EDT 2010 x86_64
[ 63.685] Kernel command line: root=/dev/sda4 clocksource=hpet processor.max_cstate=1
[ 63.685] Build Date: 24 June 2010 10:20:06AM
[ 63.685]
[ 63.685] Current version of pixman: 0.18.2
[ 63.685] Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
[ 63.685] Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 63.686] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Jul 3 21:50:20 2010
[ 63.728] (==) Using config file: "/etc/X11/xorg.conf"
[ 63.728] (==) Using config directory: "/etc/X11/xorg.conf.d"
[ 63.735] (==) ServerLayout "aticonfig Layout"
[ 63.735] (**) |-->Screen "Screen0" (0)
[ 63.735] (**) | |-->Monitor "Monitor0"
[ 63.735] (**) | |-->Device "card0"
[ 63.735] (**) Option "AIGLX" "on"
[ 63.735] (**) Option "DRI2" "on"
[ 63.735] (==) Automatically adding devices
[ 63.735] (==) Automatically enabling devices
[ 63.827] (==) FontPath set to:
/usr/share/fonts/misc/,
/usr/share/fonts/TTF/,
/usr/share/fonts/OTF/,
/usr/share/fonts/Type1/,
/usr/share/fonts/100dpi/,
/usr/share/fonts/75dpi/
[ 63.827] (==) ModulePath set to "/usr/lib64/xorg/modules"
[ 63.827] (**) Extension "Composite" is enabled
[ 63.827] (II) The server relies on udev to provide the list of input devices.
If no devices become available, reconfigure udev or disable AutoAddDevices.
[ 63.827] (II) Loader magic: 0x7c7280
[ 63.827] (II) Module ABI versions:
[ 63.827] X.Org ANSI C Emulation: 0.4
[ 63.827] X.Org Video Driver: 7.0
[ 63.827] X.Org XInput driver : 9.0
[ 63.827] X.Org Server Extension : 3.0
[ 63.849] (--) PCI:*(0:3:0:0) 1002:9442:0000:0000 ATI Technologies Inc RV770 [Radeon HD 4850] rev 0, Mem @ 0xc0000000/268435456, 0xfb9e0000/65536, I/O @ 0x00009000/256, BIOS @ 0x????????/131072
[ 63.849] (--) PCI: (0:4:0:0) 1002:9442:0000:0000 ATI Technologies Inc RV770 [Radeon HD 4850] rev 0, Mem @ 0xd0000000/268435456, 0xfbae0000/65536, I/O @ 0x0000a000/256, BIOS @ 0x????????/131072
[ 63.849] (II) "extmod" will be loaded by default.
[ 63.849] (II) "dbe" will be loaded by default.
[ 63.849] (II) "glx" will be loaded by default.
[ 63.849] (II) "record" will be loaded by default.
[ 63.849] (II) "dri" will be loaded by default.
[ 63.850] (II) "dri2" will be loaded by default.
[ 63.850] (II) LoadModule: "extmod"
[ 63.863] (II) Loading /usr/lib64/xorg/modules/extensions/libextmod.so
[ 63.877] (II) Module extmod: vendor="X.Org Foundation"
[ 63.877] compiled for 1.8.0, module version = 1.0.0
[ 63.877] Module class: X.Org Server Extension
[ 63.877] ABI class: X.Org Server Extension, version 3.0
[ 63.877] (II) Loading extension MIT-SCREEN-SAVER
[ 63.877] (II) Loading extension XFree86-VidModeExtension
[ 63.877] (II) Loading extension XFree86-DGA
[ 63.877] (II) Loading extension DPMS
[ 63.877] (II) Loading extension XVideo
[ 63.877] (II) Loading extension XVideo-MotionCompensation
[ 63.877] (II) Loading extension X-Resource
[ 63.877] (II) LoadModule: "dbe"
[ 63.877] (II) Loading /usr/lib64/xorg/modules/extensions/libdbe.so
[ 63.878] (II) Module dbe: vendor="X.Org Foundation"
[ 63.878] compiled for 1.8.0, module version = 1.0.0
[ 63.878] Module class: X.Org Server Extension
[ 63.878] ABI class: X.Org Server Extension, version 3.0
[ 63.878] (II) Loading extension DOUBLE-BUFFER
[ 63.878] (II) LoadModule: "glx"
[ 63.893] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
[ 63.915] (II) Module glx: vendor="X.Org Foundation"
[ 63.915] compiled for 1.8.0, module version = 1.0.0
[ 63.915] ABI class: X.Org Server Extension, version 3.0
[ 63.915] (**) AIGLX enabled
[ 63.915] (II) Loading extension GLX
[ 63.916] (II) LoadModule: "record"
[ 63.916] (II) Loading /usr/lib64/xorg/modules/extensions/librecord.so
[ 63.916] (II) Module record: vendor="X.Org Foundation"
[ 63.916] compiled for 1.8.0, module version = 1.13.0
[ 63.916] Module class: X.Org Server Extension
[ 63.916] ABI class: X.Org Server Extension, version 3.0
[ 63.916] (II) Loading extension RECORD
[ 63.916] (II) LoadModule: "dri"
[ 63.917] (II) Loading /usr/lib64/xorg/modules/extensions/libdri.so
[ 63.983] (II) Module dri: vendor="X.Org Foundation"
[ 63.983] compiled for 1.8.0, module version = 1.0.0
[ 63.983] ABI class: X.Org Server Extension, version 3.0
[ 63.983] (II) Loading extension XFree86-DRI
[ 63.983] (II) LoadModule: "dri2"
[ 63.983] (II) Loading /usr/lib64/xorg/modules/extensions/libdri2.so
[ 63.984] (II) Module dri2: vendor="X.Org Foundation"
[ 63.984] compiled for 1.8.0, module version = 1.2.0
[ 63.984] ABI class: X.Org Server Extension, version 3.0
[ 63.984] (II) Loading extension DRI2
[ 63.984] (II) LoadModule: "radeon"
[ 64.015] (II) Loading /usr/lib64/xorg/modules/drivers/radeon_drv.so
[ 64.078] (II) Module radeon: vendor="X.Org Foundation"
[ 64.078] compiled for 1.8.0, module version = 6.13.99
[ 64.078] Module class: X.Org Video Driver
[ 64.078] ABI class: X.Org Video Driver, version 7.0
[ 64.078] (II) RADEON: Driver for ATI Radeon chipsets:
ATI Radeon Mobility X600 (M24) 3150 (PCIE), ATI FireMV 2400 (PCI),
ATI Radeon Mobility X300 (M24) 3152 (PCIE),
ATI FireGL M24 GL 3154 (PCIE), ATI FireMV 2400 3155 (PCI),
ATI Radeon X600 (RV380) 3E50 (PCIE),
ATI FireGL V3200 (RV380) 3E54 (PCIE), ATI Radeon IGP320 (A3) 4136,
....
[ 64.094] (++) using VT number 7
[ 64.098] (II) Primary Device is: PCI 03@00:00:0
[ 64.098] (II) [KMS] Kernel modesetting enabled.
[ 64.098] (**) RADEON(0): Depth 24, (--) framebuffer bpp 32
[ 64.098] (II) RADEON(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps)
[ 64.098] (==) RADEON(0): Default visual is TrueColor
[ 64.098] (==) RADEON(0): RGB weight 888
[ 64.098] (II) RADEON(0): Using 8 bits per RGB (8 bit DAC)
[ 64.098] (--) RADEON(0): Chipset: "ATI Radeon 4800 Series" (ChipID = 0x9442)
[ 64.099] (II) RADEON(0): PCIE card detected
[ 64.099] (WW) RADEON(0): Color tiling is not yet supported on R600/R700
[ 64.099] (II) RADEON(0): KMS Color Tiling: disabled
[ 64.099] drmOpenDevice: node name is /dev/dri/card0
[ 64.099] drmOpenDevice: open result is 8, (OK)
[ 64.099] drmOpenByBusid: Searching for BusID pci:0000:03:00.0
[ 64.099] drmOpenDevice: node name is /dev/dri/card0
[ 64.099] drmOpenDevice: open result is 8, (OK)
[ 64.099] drmOpenByBusid: drmOpenMinor returns 8
[ 64.099] drmOpenByBusid: drmGetBusid reports pci:0000:03:00.0
[ 64.154] (II) RADEON(0): Output DVI-0 using monitor section Monitor0
[ 64.164] (II) RADEON(0): Output DIN has no monitor section
[ 64.178] (II) RADEON(0): Output DVI-1 has no monitor section
[ 64.233] (II) RADEON(0): EDID for output DVI-0
[ 64.233] (II) RADEON(0): Manufacturer: SAM Model: 27d Serial#: **********
[ 64.233] (II) RADEON(0): Year: 2007 Week: 38
[ 64.233] (II) RADEON(0): EDID Version: 1.3
[ 64.233] (II) RADEON(0): Digital Display Input
[ 64.233] (II) RADEON(0): Max Image Size [cm]: horiz.: 43 vert.: 27
[ 64.233] (II) RADEON(0): Gamma: 2.20
[ 64.233] (II) RADEON(0): DPMS capabilities: Off
[ 64.233] (II) RADEON(0): Supported color encodings: RGB 4:4:4 YCrCb 4:4:4
[ 64.233] (II) RADEON(0): First detailed timing is preferred mode
[ 64.233] (II) RADEON(0): redX: 0.640 redY: 0.330 greenX: 0.300 greenY: 0.600
[ 64.233] (II) RADEON(0): blueX: 0.150 blueY: 0.060 whiteX: 0.313 whiteY: 0.329
[ 64.233] (II) RADEON(0): Supported established timings:
[ 64.233] (II) RADEON(0): 720x400@70Hz
[ 64.233] (II) RADEON(0): 640x480@60Hz
...
[ 64.234] (II) RADEON(0): 1152x864@75Hz
[ 64.234] (II) RADEON(0): Manufacturer's mask: 0
[ 64.234] (II) RADEON(0): Supported standard timings:
[ 64.234] (II) RADEON(0): #0: hsize: 1680 vsize 1050 refresh: 60 vid: 179
[ 64.234] (II) RADEON(0): #1: hsize: 1280 vsize 1024 refresh: 60 vid: 32897
[ 64.234] (II) RADEON(0): #2: hsize: 1280 vsize 960 refresh: 60 vid: 16513
[ 64.234] (II) RADEON(0): #3: hsize: 1152 vsize 864 refresh: 75 vid: 20337
[ 64.234] (II) RADEON(0): Supported detailed timing:
[ 64.234] (II) RADEON(0): clock: 119.0 MHz Image Size: 433 x 271 mm
[ 64.234] (II) RADEON(0): h_active: 1680 h_sync: 1728 h_sync_end 1760 h_blank_end 1840 h_border: 0
[ 64.234] (II) RADEON(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1080 v_border: 0
[ 64.234] (II) RADEON(0): Ranges: V min: 56 V max: 75 Hz, H min: 30 H max: 81 kHz, PixClock max 140 MHz
[ 64.234] (II) RADEON(0): Monitor name: SyncMaster
[ 64.234] (II) RADEON(0): Serial No: ************
[ 64.234] (II) RADEON(0): EDID (in hex):
....
[ 64.235] (II) RADEON(0): EDID vendor "SAM", prod id ***
[ 64.235] (II) RADEON(0): Using EDID range info for horizontal sync
[ 64.235] (II) RADEON(0): Using EDID range info for vertical refresh
[ 64.235] (II) RADEON(0): Printing DDC gathered Modelines:
[ 64.235] (II) RADEON(0): Modeline "1680x1050"x0.0 119.00 1680 1728 1760 1840 1050 1053 1059 1080 +hsync -vsync (64.7 kHz)
[ 64.235] (II) RADEON(0): Modeline "800x600"x0.0 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync (37.9 kHz)
[ 64.235] (II) RADEON(0): Modeline "800x600"x0.0 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync (35.2 kHz)
[ 64.235] (II) RADEON(0): Modeline "640x480"x0.0 31.50 640 656 720 840 480 481 484 500 -hsync -vsync (37.5 kHz)
...
[ 64.246] (II) RADEON(0): EDID for output DIN
[ 64.260] (II) RADEON(0): EDID for output DVI-1
[ 64.260] (II) RADEON(0): Output DVI-0 connected
[ 64.260] (II) RADEON(0): Output DIN disconnected
[ 64.260] (II) RADEON(0): Output DVI-1 disconnected
[ 64.260] (II) RADEON(0): Using exact sizes for initial modes
[ 64.260] (II) RADEON(0): Output DVI-0 using initial mode 1680x1050
[ 64.260] (II) RADEON(0): Using default gamma of (1.0, 1.0, 1.0) unless otherwise stated.
[ 64.260] (II) RADEON(0): mem size init: gart size :1fdff000 vram size: s:20000000 visible:1f8d4000
[ 64.260] (II) RADEON(0): EXA: Driver will allow EXA pixmaps in VRAM
[ 64.260] (**) RADEON(0): Display dimensions: (430, 270) mm
[ 64.260] (**) RADEON(0): DPI set to (99, 98)
[ 64.260] (II) Loading sub module "fb"
[ 64.260] (II) LoadModule: "fb"
[ 64.261] (II) Loading /usr/lib64/xorg/modules/libfb.so
[ 64.276] (II) Module fb: vendor="X.Org Foundation"
[ 64.276] compiled for 1.8.0, module version = 1.0.0
[ 64.276] ABI class: X.Org ANSI C Emulation, version 0.4
[ 64.276] (II) Loading sub module "ramdac"
[ 64.276] (II) LoadModule: "ramdac"
[ 64.276] (II) Module "ramdac" already built-in
[ 64.276] (II) Loading sub module "exa"
[ 64.276] (II) LoadModule: "exa"
[ 64.276] (II) Loading /usr/lib64/xorg/modules/libexa.so
[ 64.281] (II) Module exa: vendor="X.Org Foundation"
[ 64.281] compiled for 1.8.0, module version = 2.5.0
[ 64.281] ABI class: X.Org Video Driver, version 7.0
[ 64.281] (--) Depth 24 pixmap format is 32 bpp
[ 64.281] (II) RADEON(0): [DRI2] Setup complete
[ 64.281] (II) RADEON(0): [DRI2] DRI driver: r600
[ 64.281] (II) RADEON(0): Front buffer size: 7392K
[ 64.281] (II) RADEON(0): VRAM usage limit set to 458596K
[ 64.281] (==) RADEON(0): Backing store disabled
[ 64.281] (II) RADEON(0): Direct rendering enabled
[ 64.281] (II) RADEON(0): Setting EXA maxPitchBytes
[ 64.281] (II) EXA(0): Driver allocated offscreen pixmaps
[ 64.281] (II) EXA(0): Driver registered support for the following operations:
[ 64.281] (II) Solid
[ 64.281] (II) Copy
[ 64.281] (II) Composite (RENDER acceleration)
[ 64.281] (II) UploadToScreen
[ 64.281] (II) DownloadFromScreen
[ 64.281] (II) RADEON(0): Acceleration enabled
[ 64.281] (**) RADEON(0): DPMS enabled
[ 64.282] (==) RADEON(0): Silken mouse enabled
[ 64.282] (II) RADEON(0): Set up textured video
...
[ 64.282] (II) RADEON(0): RandR 1.2 enabled, ignore the following RandR disabled message.
[ 64.282] (WW) RADEON(0): Option "VendorName" is not used
[ 64.282] (WW) RADEON(0): Option "ModelName" is not used
[ 64.282] (--) RandR disabled
[ 64.282] (II) Initializing built-in extension Generic Event Extension
[ 64.282] (II) Initializing built-in extension SHAPE
[ 64.282] (II) Initializing built-in extension MIT-SHM
[ 64.282] (II) Initializing built-in extension XInputExtension
[ 64.282] (II) Initializing built-in extension XTEST
[ 64.282] (II) Initializing built-in extension BIG-REQUESTS
[ 64.282] (II) Initializing built-in extension SYNC
[ 64.282] (II) Initializing built-in extension XKEYBOARD
[ 64.282] (II) Initializing built-in extension XC-MISC
[ 64.282] (II) Initializing built-in extension XINERAMA
[ 64.282] (II) Initializing built-in extension XFIXES
[ 64.282] (II) Initializing built-in extension RENDER
[ 64.282] (II) Initializing built-in extension RANDR
[ 64.282] (II) Initializing built-in extension COMPOSITE
[ 64.282] (II) Initializing built-in extension DAMAGE
[ 64.463] (II) AIGLX: enabled GLX_MESA_copy_sub_buffer
[ 64.463] (II) AIGLX: enabled GLX_INTEL_swap_event
[ 64.464] (II) AIGLX: enabled GLX_SGI_make_current_read
[ 64.464] (II) AIGLX: enabled GLX_SGI_swap_control and GLX_MESA_swap_control
[ 64.464] (II) AIGLX: GLX_EXT_texture_from_pixmap backed by buffer objects
[ 64.464] (II) AIGLX: Loaded and initialized /usr/lib64/dri/r600_dri.so
[ 64.464] (II) GLX: Initialized DRI2 GL provider for screen 0
[ 64.464] (II) RADEON(0): Setting screen physical size to 444 x 277
...
Les deux lignes auxquelles il faut faire attention sont :
- (II) RADEON(0): [DRI2] DRI driver: vous devez voir figurer le pilote que vous avez mis pour VIDEO_CARDS. Prétez une attention particulière à ce que celà ne soit pas swrast. Une erreur courante consiste à définir VIDEO_CARDS à radeon ce qui ne construit pas le pilote r600 et il se produit un fall-back sur le rendu logiciel...
- (II) [KMS] Kernel modesetting : vous devez voir enabled.
Intel
TODO
nVidia
TODO
Activer l'économie d'énergie
AMD/ATI - Gestion dynamique
Une fois la gestion dynamique activée, la fréquence des signaux d'horloge de la carte graphique (GPU/mémoire) est adaptée en fonction de la charge de travail à accomplir. Ainsi, la fréquence sera augmentée pour une charge de travail importante et diminuée lorsque le GPU sera en attente. La modification de la fréquence se produit lors de périodes de rafraîchissement vertical (en général tous les 1/60ème à 1/85ème de seconde selon la fréquence de rafraîchissement de l'affichage) et il est possible que cette modification ne soit pas complétée avant le début d'affichage de l'image suivante ce qui peut engendrer un papillonnement de l'affichage ce qui fait qu'il n'est pas recommandé d'utiliser dynpm si vous avez une configuration multi-écrans (utiliser les profils dans un pareil cas de figure).
Pour activer la gestion d'énergie dynamique il suffit de faire :
Si la machine est dotée de plus d'une carte graphique, il faudra répéter l'opération pour chacune d'elles (card1, card2, etc). Noter qu'il n'y a pas de fichier virtuel indiquant la fréquence actuelle des signaux d'horloge. Mais il est possible de s'assurer que le système modifie la fréquence d'horloge en ajoutant drm.debug=1 pour la ligne de commande du noyau dans les fichiers de configuration de Grub, de redémarrer et de surveiller ce qui s'inscrit dans /var/log/messages (grande verbosité, il est même possible que la fluidité d'affichage saccade légèrement):
Jul 15 08:32:01 *** kernel: [ 130.651201] [drm:r600_pm_get_dynpm_state], Requested: e: 68500 m: 100000 p: 16
Jul 15 08:32:01 *** kernel: [ 131.265191] [drm:r600_pm_get_dynpm_state], Requested: e: 50000 m: 100000 p: 16
Jul 15 08:33:11 *** kernel: [ 201.013442] [drm:r600_pm_get_dynpm_state], Requested: e: 68500 m: 100000 p: 16
Jul 15 08:33:12 *** kernel: [ 201.614542] [drm:r600_pm_get_dynpm_state], Requested: e: 50000 m: 100000 p: 16
Jul 15 08:36:41 *** kernel: [ 409.551238] [drm:r600_pm_get_dynpm_state], Requested: e: 68500 m: 100000 p: 16
e étant la fréquence du GPU (oscillant ici entre 500 et 685 Mhz) et m la fréquence de rafraîchissement de la mémoire (1 Ghz).
AMD/ATI - Gestion par profils
L'activation de la gestion de l'énergie par profil est celle activée par défaut au démarrage de la machine si rien ne vient modifier /sys/class/drm/card?/device/power_method :
Le profil a utiliser est quant à lui celui spécifié dans /sys/class/drm/card?/device/power_profile et peut avoir quatre valeurs :
- "default" : Utilise les fréquence d'horloges par défaut de la carte graphique et n'effectue aucun changement (cette option activée par défaut)
- "auto" : Bascule automatiquement entre le profil low et le profil high en fonction de la source d'alimentation électrique de la machine (batterie => low / secteur => high)
- "low" : Mode basse consommation. La fréquences des horloges de la carte graphique est réduite en tout temps.
- "high" : Mode haute performances. La fréquences des horloges de la carte graphique est maximale en tout temps.
Le passage au profil auto s'effectue comme suit :
Voir : http://lists.freedesktop.org/archives/dri-devel/2010-May/000492.html
Intel
TODO
nVidia
TODO


