OldGentooWiki:Utiliser le Kernel Mode Setting (KMS)

De Gentoo-Quebec.

Gentoo-quebec+Funtoo-quebec.png

Utiliser le Kernel Mode Setting (KMS)


Warning 64.png
Attention !
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.

Sommaire

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 :

Gnome-dev-computer.png
# emerge radeon-ucode

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.

Warning 64.png
Attention !
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 :

Options à activer

| 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 :

Gnome-dev-computer.png
# ls /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

Info 64.png
Information !
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 :

/etc/conf.d/modules (modesetting coché dans la configuration du noyau)

# Radeon KMS (quelque soit la révision du noyau 2.6),
modules_2_6="radeon"


/etc/conf.d/modules (modesetting non-coché dans la configuration du noyau)

# 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 :

Gnome-dev-computer.png
# dmesg | grep 'drm'

dmesg (extrait)

[   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

Warning 64.png
Attention !
  • 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:

Gnome-dev-computer.png
# equery u media-libs/mesa

...

* 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:

Gnome-dev-computer.png
# cat /etc/make.conf | grep VIDEO_CARDS
VIDEO_CARDS="r600"
Warning 64.png
Attention !
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)

Exemple de fichier /etc/X11/xorg.conf

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 :

Gnome-dev-computer.png
# startx

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

Gnome-dev-computer.png
# glxinfo | grep OpenGL

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

OpenGL shading language version string: 1.10
Gnome-dev-computer.png
# glxinfo | grep direct
direct rendering: Yes

Deuxième vérification : voir ce que contient /var/log/Xorg.0.log :

/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 :

Gnome-dev-computer.png
# echo dynpm > /sys/class/drm/card0/device/power_method

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):

Gnome-dev-computer.png
# cat /var/log/messages | grep dynpm_state
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 :

Gnome-dev-computer.png
# cat /sys/class/drm/card0/device/power_method
# profile

Le profil a utiliser est quant à lui celui spécifié dans /sys/class/drm/card?/device/power_profile et peut avoir quatre valeurs :

  1. "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)
  2. "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)
  3. "low" : Mode basse consommation. La fréquences des horloges de la carte graphique est réduite en tout temps.
  4. "high" : Mode haute performances. La fréquences des horloges de la carte graphique est maximale en tout temps.
Gnome-dev-computer.png
# cat /sys/class/drm/card0/device/power_profile
# default

Le passage au profil auto s'effectue comme suit :

Gnome-dev-computer.png
# echo auto > /sys/class/drm/card0/device/power_profile

Voir : http://lists.freedesktop.org/archives/dri-devel/2010-May/000492.html

Intel

TODO

nVidia

TODO

Outils personnels