Framebuffer HOWTO: De quels modes VESA puis-je me servir ?

Cela dépend de votre carte graphique, en particulier de la quantité de mémoire dont elle dispose. A vous de voir quels sont les modes qui fonctionnent le mieux.

La table suivante fournit les numéros des modes que vous pouvez passer à l’invite VGA (en fait les indices se sont vus ajouter 0x200 afin de s’y retrouver plus facilement dans la table).

Couleurs | 640x480 800x600 1024x768 1280x1024 1600x1200
---------+-----------------------------------------------------
 4 bits  |    ?       ?     0x302      ?        ?         ?
 8 bits  |  0x300   0x301   0x303    0x305    0x307     0x31C
15 bits  |    ?     0x310   0x313    0x316    0x319     0x31D
16 bits  |    ?     0x311   0x314    0x317    0x31A     0x31E
24 bits  |    ?     0x312   0x315    0x318    0x31B     0x31F
32 bits  |    ?       ?       ?        ?        ?         ?

8 bits = 256 couleurs, 15 bits = 32768 couleurs, 16 bits = 65536 couleurs, 24 bits = 16,8 millions de couleurs 32 bits : la même chose qu’en 24 bits mais les 8 bits restant peuvent servir à diverses choses et l’ensemble s’adapte parfaitement aux bus 32 bits PCI/VLB/EISA. Les modes supplémentaires sont à la discrétion du fabricant puisque la spécification VESA 2.0 s’arrête au mode 0x31f. Il vous faudra sûrement tâtonner pour les trouver.

5.1 Utilisation des cartes graphiques Matrox

Si vous disposez d’une carte Matrox, vous emploierez le pilote matroxfb au lieu de vesafb. Matroxfb gère les Mystique Millenium I, II ainsi que les G100 et G200. Il permet aussi d’avoir plusieurs cartes dans la même machine. La configuration d’une carte Matrox passe par les étapes suivantes :

Mise à jour du BIOS Matrox que vous trouverez à http://www.matrox.com/mgaweb/drivers/ftp_bios.htm. Attention, vous aurez besoin du DOS pour procéder à la mise à jour.

Allez dans le menu « Code Maturity Level » et activez l’option suivante :

  • Prompt for development and/or incomplete code/drivers

[Ceci peut changer dans les futurs noyaux. Le HOWTO sera alors modifié]

Dans le menu « Console Drivers », sélectionnez :

  • VGA Text Console
  • Video Selection Support
  • Support for frame buffer devices (experimental)
  • Matrox Acceleration
  • Suivant votre type de carte :
    • Millennium I/II support
    • Mystique support
    • G100/G200 support
  • Pour employer plusieurs cartes Matrox simultanément, activez l’option « Multihead support ».
  • Advanced Low Level Drivers
  • Choisissez les pilotes Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp et « 32bpp packed pixel ».

Recompilez votre noyau et modifiez le fichier /etc/lilo.conf. Inspirez vous du mien, vous irez plus vite.

# Fichier de configuration de LILO 
boot = /dev/hda3
delay = 30 
prompt
vga = 792  # Nécessaire pour une réinitialisation dans un état normal
# Linux bootable partition config begins
image = /vmlinuz
  append = "video=matrox:vesa:440" # On bascule sur le pilote Matroxfb
  root = /dev/hda3
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking

Vous devrez ensuite créer les périphériques associés au gestionnaire de mémoire vidéo dans le répertoire /dev. Pour le premier, il vous suffit de taper

# mknod /dev/fb0 c 29 0

Les suivants doivent être multiples de 32, soit, pour /dev/fb1 :

# mknod /dev/fb1 c 29 32

et ainsi de suite jusqu’au huitième si vous le souhaitez :

# mknod /dev/fb7 c 29 224

C’est tout ! Si l’un d’entre vous se sert simultanément de plusieurs cartes, qu’il me contacte aussi vite que possible afin que je documente davantage.

5.2 Utilisation des cartes graphiques Permedia.

Les cartes de type Permedia ne sont pas supportées par le pilote vesafb. Heureusement, il existe un gestionnaire de mémoire vidéo spécifique aux cartes Permedia. En supposant que vous employez menuconfig pour paramétrer le noyau avant une compilation, exécutez les instructions suivantes :

Allez dans le menu « Code Maturity Level » et activez l’option suivante :

  • Prompt for development and/or incomplete code/drivers

[Ceci peut changer dans les futurs noyaux. Le HOWTO sera alors modifié]

Dans le menu « Console Drivers », sélectionnez :

  • VGA Text Console
  • Video Selection Support
  • Support for frame buffer devices (experimental)
  • Permedia2 support (experimental)
  • Generic Permedia2 PCI board support
  • Advanced Low Level Drivers
  • Choisissez les pilotes Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp et « 32bpp packed pixel ».
  • Si vous souhaitez incorporer les fontes, activez les options suivantes :
    • Compiled-in fonts
    • Sparc console 12×22 font

Recompilez votre noyau et modifiez le fichier /etc/lilo.conf. Inspirez vous du mien pour aller plus vite.

# Fichier de configuration de LILO
boot = /dev/hda3
delay = 30 
prompt
vga = 792  # Nécessaire pour une réinitialisation dans un état normal
# Linux bootable partition config begins
image = /vmlinuz
  append = "video=pm2fb:mode:1024x768-75,font:SUN12x22,ypan" # then switch to pm2fb
  root = /dev/hda3
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking

La ligne « pm2fb:mode:1024×768-75,font:SUN12x22,ypan » indique que le pilote opérera dans une résolution de 1024 par 768 à 75Hz avec les fontes SUN 12 par 22 ( si vous les avez incluses ). Ypan autorise le défilement. Vous pouvez employer un autre mode.

Vous devrez ensuite créer les périphériques associés au gestionnaire de mémoire vidéo dans le répertoire /dev. Pour le premier, il vous suffit de taper

# mknod /dev/fb0 c 29 0

Les suivants doivent être multiples de 32, soit, pour /dev/fb1 :

# mknod /dev/fb1 c 29 32

et ainsi de suite jusqu’au huitième si vous le souhaitez :

# mknod /dev/fb7 c 29 224

Pour davantage de renseignements concernant les fonctionnalités du pilote Permedia, consultez http://www.cs.unibo.it/~nardinoc/pm2fb/index.html.

video=pm2fb:[option[,option[,option…]]]

où vous disposez des options suivantes :

  • off pour désactiver le pilote.
  • mode:resolution pour fixer la résolution. Les modes proviennent du fichier fb.modes.ATI contenu dans le paquetage logiciel pbset de Geert Uytterhoeven. Tous les modes sont en 8 bits par pixel. Voici ceux disponibles :
    • 640×480-(60,72,75,90,100)
    • 800×600-(56,60,70,72,75,90,100)
    • 1024×768-(60,70,72,75,90,100,illo) illo=80KHz 100Hz
    • 1152×864-(60,70,75,80)
    • 1280×1024-(60,70,74,75)
    • 1600×1200-(60,66,76)
  • Par défaut, la console fonctionne en 640 par 480 à 60 Hz.
  • font:fontname pour fixer la fonte. Par exemple : font:SUN12x22.
  • ypan offre une taille virtuelle dans le sens vertical aussi importante que la mémoire vidéo l’autorise.
  • oldmem ne servira qu’aux propriétaires d’une CybervisionPPC. Ajoutez cette option si votre carte est munie de SGRAM Fujitsu, ce qui est le cas des CyberVisionPPC antérieures au 30/12/1999.
  • virtual ( transitoire ) est à employer si le noyau fixe lui-même les adresses d’accès sur les bus PCI.

5.3 Utilisation des cartes graphiques ATI

Remarque : les informations qui suivent ne viennent pas de moi vu que je ne dispose pas d’une carte ATI pour les vérifier. Si je me trompe, n’hésitez pas à me corriger, à m’insulter ou à m’envoyer votre carte ! 😎

READ  Next Linux 2.4 Kernel: some tips by Alan Cox LG #57

Les cartes ATI sont plus ou moins bien gérées par le pilote vesafb selon leur qualité intrinsèque. Heureusement, il existe un gestionnaire de mémoire vidéo spécifique aux cartes ATI. En supposant que vous employez menuconfig pour paramétrer le noyau avant une compilation, exécutez les instructions suivantes :

Allez dans le menu « Code Maturity Level » et activez l’option suivante :

  • Prompt for development and/or incomplete code/drivers

[ceci peut changer dans les futurs noyaux. Ce HOWTO sera alors modifié]

Dans le menu « Console Drivers », sélectionnez :

  • VGA Text Console
  • Video Selection Support
  • Support for frame buffer devices (experimental)
  • ATI Mach64 display support
  • Advanced Low Level Drivers
  • Choisissez les pilotes Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp et « 32bpp packed pixel ».
  • Si vous souhaitez incorporer les fontes, activez les options suivantes :
    • Compiled-in fonts
    • Sparc console 12×22 font

Recompilez votre noyau et modifiez le fichier /etc/lilo.conf. Inspirez vous du mien, ce sera le plus rapide.

# Fichier de configuration de LILO
boot = /dev/hda3
delay = 30
prompt
vga = 792  # Nécessaire pour une réinitialisation dans un état normal
# Linux bootable partition config begins
image = /vmlinuz
  append = "video=atyfb:1024x768,font:SUN12x22"
  root = /dev/hda3
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking

La ligne « atyfb:mode:1024×768,font:SUN12x22 » indique que le pilote opérera dans une résolution de 1024 par 768.

Vous devrez ensuite créer les périphériques associés au gestionnaire de mémoire vidéo dans le répertoire /dev. Pour le premier, il vous suffit de taper

# mknod /dev/fb0 c 29 0

Les suivants doivent être multiples de 32, soit, pour /dev/fb1 :

# mknod /dev/fb1 c 29 32

et ainsi de suite jusqu’au huitième si vous le souhaitez :

# mknod /dev/fb7 c 29 224

video=atyfb:[option[,option[,option…]]]

où vous disposez des options suivantes :

  • font:STRING pour fixer la fonte. Par exemple : font:SUN12x22
  • noblink désactive l’extinction de l’écran
  • noaccel désactive les routines d’accélération
  • vram:ULONG précise au pilote atyfb la quantité de mémoire vidéo disponible
  • pll:ULONG ?
  • mclk:ULONG ?
  • vmode:ULONG ?
  • cmode:ULONG – fixe le nombre de bits par pixel : 0, 8, 15, 16, 24 ou 32

5.4 Utilisation simultanée de plusieurs cartes

Il existe un HOWTO traitant de cette question que vous trouverez à l’URL http://www.foobar.com.

Rick Niles s’occupe de ce HOWTO et peut être contacté par courrier électronique via niles@gsfc.nasa.gov.

5.5 Quelles cartes graphiques se conforment aux spécifications VESA 2.0 ?

Voici une liste de cartes qui fonctionnent avec vesafb :

  • ATI PCI VideoExpression 2MB (au maximum 1280 par 1024 en 8bit)
  • ATI PCI All-in-Wonder
  • Matrox Millennium PCI – BIOS v3.0
  • Matrox Millennium II PCI – BIOS v1.5
  • Matrox Millennium II AGP – BIOS v1.4
  • Matrox Millennium G200 AGP – BIOS v1.3
  • Matrox Mystique & Mystique 220 PCI – BIOS v1.8
  • Matrox Mystique G200 AGP – BIOS v1.3
  • Matrox Productiva G100 AGP – BIOS v1.4
  • Toutes les cartes à base de Riva 128
  • Diamond Viper V330 PCI 4MB
  • Genoa Phantom 3D/S3 ViRGE/DX
  • Hercules Stingray 128/3D avec une sortie pour la télévision
  • Hercules Stingray 128/3D sans sortie pour la télévision – une mise à jour du BIOS est nécessaire (contactez support@hercules.com)
  • SiS 6326 PCI/AGP 4MB
  • STB Lightspeed 128 (à base de Nvida Riva 128) PCI
  • STB Velocity 128 (à base de Nvida Riva 128) PCI
  • Jaton Video-58P ET6000 PCI 2MB-4MB (au maximum 1600 par 1200 en 8bit)

Une liste de cartes mères incluant un jeu de composants graphiques :

  • Trident Cyber9397
  • SiS 5598

Les cartes qui ne fonctionnent pas :

5.6 Vesafb est-il modularisable ?

A ma connaissance, Vesafb ne peut pas être modularisé. Les développeurs de vesafb s’y atteleront peut-être un jour. De toute façon, si le pilote est modularisé, vous ne disposerez d’aucun affichage à l’écran tant que le module vesafb n’aura pas été modprobé. Il vaut surement mieux le laisser dans le noyau, des fois que le démarrage se passe mal.

5.7 Comment puis-je modifier le curseur ?

[Tiré du fichier VGA-softcursor.txt – merci à Martin Mares!]

Linux offre une certaine latitude pour modifier l’allure du curseur. En principe, vous pouvez fixer la taille de celui-ci et, par la même occasion, contourner quelques problèmes matériels de cartes Trident défectueuses (cf. #define TRIDENT_GLITCH dans le fichier drivers/char/vga.c). Si vous activez l’option de génération logicielle du curseur ( « Software generated cursor » ), des nouveautés se présentent : un curseur rouge, un qui intervertisse la couleur de premier plan et celle du fond, une mise en relief du caractère actif qui laisse le curseur matériel visible ou non. Je n’ai surement pas pensé à tout.

On contrôle l’allure du curseur via la séquence d’échappement

[?1;2;3c

ou 1, 2 et 3 sont des paramètres que l’on va décrire à présent. Les paramètres absents prennent la valeur 0.

Le premier paramètre correspond à la taille du curseur (0=défaut, 1=transparent, 2=souligné, …, 8=caractère plein ). Ajoutez 16 pour rendre actif le curseur logiciel, 32 si la couleur de fond doit être systématiquement changée, 64 pour que les couleurs de premier plan et de fond soient distinctes. La graisse est ignorée pour les deux derniers attributs.

Le second paramètre indique quels sont les bits d’attributs à changer (un simple ou exclusif). Sur un écran VGA standard, les quatre bits de poids fort précisent le fond et les quatre de poids faible le premier plan. Dans chaque quartet, les trois bits de poids faible donnent la couleur et celui de poids fort active la mise en relief (ou active le clignotement suivant la configuration de la carte VGA).

Le troisième paramètre correspond aux valeurs que doivent prendre les bits que l’on souhaite modifier. Le positionnement d’un bit a lieu avant son masquage; on force donc à 0 un bit en l’activant à la fois dans le masque de sélection et dans celui de positionnement.

Un curseur qui souligne et clignote : echo -e ‘\033[?2c’ Un bloc qui clignote : echo -e ‘\033[?6c’ Un bloc rouge qui ne clignote pas : echo -e ‘\033[?17;0;64c’