
                               Framebuffer HOWTO

Alex Buell, alex.buell@tahallah.clara.co.uk

   v1.2, 27 Fvrier 2000
     _________________________________________________________________

   _Ce document dcrit l'emploi des priphriques d'accs  la mmoire
   vido avec diverses configurations matrielles munies de Linux. La
   gestion de plusieurs crans est galement traite._
     _________________________________________________________________

1. History

   Revision history

   19990607 - Release of 1.0

   19990722 - Release of 1.1

   20000222 - Release of 1.2

2. Contributions

   Merci aux personnes dont les noms suivent pour avoir aid 
   l'amlioration du HOWTO Framebuffer.

     * Jeff Noxon jeff@planetfall.com
     * Francis Devereux f.devereux@cs.ucl.ac.uk
     * Andreas Ehliar ehliar@futurniture.se
     * Martin McCarthy marty@ehabitat.demon.co.uk
     * Simon Kenyon simon@koala.ie
     * David Ford david@kalifornia.com
     * Chris Black cblack@cmpteam4.unil.ch
     * N Becker nbecker@fred.net
     * Bob Tracy rct@gherkin.sa.wlk.com
     * Marius Hjelle marius.hjelle@roman.uib.no
     * James Cassidy jcassidy@misc.dyn.ml.org
     * Andreas U. Trottmann andreas.trottmann@werft22.com
     * Lech Szychowski lech7@lech.pse.pl
     * Aaron Tiensivu tiensivu@pilot.msu.edu
     * Jan-Frode Myklebust pour ses informations sur les cartes Permedia
       janfrode@ii.uib.no
     * Et les autres, trop nombreux pour tous figurer ici. Un grand merci
        eux.

   Un grand merci  Rick Niles frederick.a.niles@gsfc.nasa.gov qui a
   accept que son Mini-HOWTO Multi-Head soit inclus dans ce HOWTO. Merci
   aux personnes suivantes pour avoir compil les versions libc5/glibc2
   du gestionnaire XF86_FBdev pour X11 sur les architectures Intel :
     * Brion Vibber brion@pobox.com
     * Gerd Knorr kraxel@cs.tu-berlin.de

   bien sr l'auteur du code :
     * Martin Schaller - auteur du concept originel de priphrique
       d'accs  la mmoire vido.
     * Roman Hodek Roman.Hodek@informatik.uni-erlangen.de
     * Andreas Schwab schwab@issan.informatik.uni-dortmund.de
     * Guenther Kelleter
     * Geert Uytterhoeven Geert.Uytterhoeven@cs.kuleuven.ac.be
     * Roman Zippel roman@sodom.obdg.de
     * Pavel Machek pavel@atrey.karlin.mff.cuni.cz
     * Gerd Knorr kraxel@cs.tu-berlin.de
     * Miguel de Icaza miguel@nuclecu.unam.mx
     * David Carter carter@compsci.bristol.ac.uk
     * William Rucklidge wjr@cs.cornell.edu
     * Jes Sorensen jds@kom.auc.dk
     * Sigurdur Asgeirsson
     * Jeffrey Kuskin jsk@mojave.stanford.edu
     * Michal Rehacek michal.rehacek@st.mff.cuni.edu
     * Peter Zaitcev zaitcev@lab.ipmce.su
     * David S. Miller davem@dm.cobaltmicro.com
     * Dave Redman djhr@tadpole.co.uk
     * Jay Estabrook
     * Martin Mares mj@ucw.cz
     * Dan Jacobowitz dan@debian.org
     * Emmanuel Marty core@ggi-project.org
     * Eddie C. Dost ecd@skynet.be
     * Jakub Jelinek jj@ultra.linux.cz
     * Phil Blundell philb@gnu.org
     * S'il y en a d'autres, qu'ils se manifestent et ils seront cits.
       :o)

3. Qu'est-ce qu'un tampon de mmoire vido ?

   Un tampon de mmoire vido dfinit une abstraction logicielle d'accs
   aux priphriques vido. Il correspond  la mmoire d'affichage de
   certains contrleurs graphiques et propose une interface unifie aux
   logiciels qui n'ont alors plus  se soucier des dtails de bas niveau
   relatifs au matriel [Extrait du fichier framebuffer.txt crit par
   Geert Uytterhoeven's. Se reporter aux sources du noyau]

4. Quels avantages prsente le tampon de mmoire vido ?

   Le logo ! Plus srieusement, on dispose d'une interface indpendante
   de l'architecture matrielle. Les gestionnaires de console des
   machines de type Intel sont rests radicalement diffrents de ceux des
   autre plate-formes jusqu' une phase de dveloppement avance des
   noyaux 2.1.x. Avec l'introduction dans le noyau 2.1.109 de cette
   interface, les choses se sont amliores : la gestion des consoles sur
   PC s'est uniformise, les consoles en mode graphique affichant le logo
   du pingouin ont fait leur apparition et le code s'est propag aux
   autres types de machines. Notez que les noyaux 2.0.x ne disposent pas
   du gestionnaire d'accs  la mmoire vido. Peut-tre quelqu'un
   finira-t-il par intgrer le code des versions 2.1.x dans ces noyaux.
   Le portage version 0.9.x pour les machines m68k font exception en ce
   qu'elles intgrent le pilote. _Avec la disponibilit des noyaux 2.2.x,
   le gestionnaire de mmoire vido s'avre stable et robuste. Vous
   devriez l'utiliser si votre carte vido le supporte et si vous
   employez un noyau 2.2.x. La question ne se pose pas si vous travaillez
   avec un 2.0.x, du moins sur un PC._

     * 0.9.x (m68k) - introduction du gestionnaire. Notez que les
       versions 0.9.x quivalent d'un point de vue fonctionnel  la
       version 1.0.9 sur architecture Intel avec les amliorations des
       1.2.x.
     * 2.1.107 - apparition du gestionnaire de mmoire vido sur PC ainsi
       que des nouveaux pilotes pour les consoles. Le dfilement en
       arrire n'est pas encore disponible.
     * 2.1.113 - ajout du dfilement en arrire au pilote vgacon.
     * 2.1.116 - ajout du dfilement en arrire au pilote vesafb.
     * 2.2.x - matroxfb et atyfb ( cartes graphiques Matrox et ATI
       respectivement ).

   Le gestionnaire de mmoire vido offre des possibilits intressantes
   si on prcise quelques options au noyau lors du dmarrage. Certaines
   sont spcifiques  un type de carte donn.
     * video=xxx:off - dsactive l'auto-dtection d'un pilote
     * video=map:octal-number - associe des consoles virtuelles ( VC ) 
       un gestionnaire de mmoire vido
          + video=map:01 VC0 est associe  FB0, VC1  FB1, VC2  FB0,
            VC3  FB1...
          + video=map:0132 VC0 est associe  FB0, VC1  FB1, VC2  FB3,
            VC4  FB2, VC5  FB0...

   La dtection des gestionnaires de mmoire vido a lieu dans un ordre
   fix au niveau du noyau. Vous pouvez l'altrer grce  l'option
   video=xxx qui permet de forcer la dtection de certains priphriques
   avant les autres.

5. Utilisation du tampon de mmoire vido sur architecture Intel

5.1 Vesafb, qus acco ?

   Vesafb est un gestionnaire de mmoire vido sur compatible PC ddi
   aux cartes cartes graphiques conformes aux spcifications VESA 2.0.
   Son fonctionnement est li de prs aux gestionnaires de mmoire vido
   gnriques du noyau.

   Vesafb permet le recours aux modes graphiques sur PC pour
   l'utilisation des consoles textes en point par point. Vesafb autorise
   galement l'affichage d'un logo et c'est vraisemblablement ce pour
   quoi vous voulez vous en servir :o)

   On ne peut malheureusement pas utiliser vesafb avec des cartes VESA
   1.2. En effet, ces cartes n'utilisent pas un adressage linaire. Par
   ce terme, on entend que tous les octets de la mmoire vido sont
   accessibles  un instant donn. Historiquement, les anciennes cartes
   vido ne rendaient la mmoire graphique disponible qu'au travers d'une
   fentre de 64 ko qui correspondait  la taille de la plus grande zone
   de mmoire contige grable directement par le microprocesseur (d'o
   les limitations des cartes CGA/EGA). Quelqu'un crira peut-tre un
   gestionnaire de priphriques vesafb12 pour ce type de cartes, mais il
   consommera une mmoire par ailleurs prcieuse pour le noyau et a
   restera de toute faon un sale bricolage. :o(

   Il existe cependant un moyen dtourn d'accder aux fonctionnalits
   VESA 2.0 sur une carte VESA 1.2. Peut-tre pouvez vous charger depuis
   le DOS un programme de type TSR qui, utilis conjointement avec
   loadlin, aidera  configurer la carte pour les modes graphiques
   voulus. Cela ne marchera pas toujours. Ainsi, certaines cartes de chez
   Cirrus Logic, telles les VLB 54xx, se retrouvent  une position en
   mmoire (par exemple entre 15 et 16 Mo) qui en interdit l'utilisation
   sur les systmes munis de plus de 32 Mo de mmoire. Rien de
   rdhibitoire si on dispose d'un BIOS permettant de ne pas affecter de
   mmoire entre 15 et 16 Mo ("Memory Hole") mais il m'a sembl
   comprendre que Linux n'aime pas a. Si l'exprience vous tente, vous
   pouvez essayer UNIVBE (disponible sur l'Internet).

   Vous pouvez aussi essayer divers patches noyaux. Il en existe
   notamment pour les anciennes cartes S3 telles la S3 Trio ou la Virge
   qui se conforment  la norme VESA 1.2. Les patches sont disponibles
   via :
   ftp://ccssu.crimea.ua/pub/linux/kernel/v2.2/unofficial/s3new.diff.gz>.

5.2 Comment faire fonctionner le gestionnaire vesafb ?

   A supposer que vous utilisiez menuconfig, vous devrez passer par les
   tapes suivantes : Dans le menu "Console drivers" :
     * VGA Text Console
     * Video Selection Support
     * Support for frame buffer devices (experimental)
     * VESA VGA Graphic console
     * Advanced Low Level Drivers
     * Choisissez les gestionnaires Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp
       et 32bpp .
     * VGA character/attributes support

   Si votre processeur (de type x86) supporte le MTRR, activez le. Il
   permet d'acclrer les copies entre la mmoire systme et la carte
   graphique. Vous pouvez naturellement le mettre en marche une fois la
   console oprationnelle. _IMPORTANT : pour les noyaux 2.1.x, activez le
   choix des fonctionnalits exprimentales via le menu ``Code Maturity
   Level''. Ceci est inutile pour les noyaux 2.2.x._
     * Prompt for development and/or incomplete code/drivers

   Le support des composants VGA (en mode texte) - vgafb - appartenait 
   la liste ci-dessus mais il en a t supprim en raison de son
   obsolescence. Il disparatra sous peu. Slectionnez plutt "VGA Text
   Console".

   Vrifiez bien que le support "Mac variable bpp packed pixel" n'est pas
   activ. [En 2.2.111/112, il semblerait qu'il le soit si "Advanced Low
   Level Drivers" l'est. Ce n'est plus le cas en 2.1.113] Les fontes
   peuvent galement tre stockes en mmoire mais rien n'y oblige et
   l'emploi de setfont du paquetage kbd-0.99 reste possible pour charger
   les fontes adquates (reportez vous  la section relative aux fontes).

   Assurez vous que rien n'est modularis. [J'ai des doutes quand aux
   possibilits de modularisation de l'ensemble - corrections bienvenues]

   Vous devrez ensuite crer les priphriques associs au gestionnaire
   de mmoire vido dans le rpertoire /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 huitime si vous le souhaitez :
     _________________________________________________________________

# mknod /dev/fb7 c 29 224
     _________________________________________________________________

   Recompilez votre noyau,modifiez l'/etc/lilo.conf de faon  ajouter le
   paramtre VGA=ASK, lancez lilo. Ceci vous permettra de choisir le mode
   graphique que vous voulez.

   Voici mon lilo.conf personnel :
# LILO configuration file
boot = /dev/hda3
delay = 30
prompt
vga = ASK # L'utilisateur devra entrer le mode
image = /vmlinuz
  root = /dev/hda3
  label = Linux
  read-only # Les systemes de fichiers autres que UMSDOS doivent etre montes
            # en lecture seule pour la phase de verification

   Redmarrez le noyau et essayez comme test d'entrer 0301 au prompt VGA.
   Vous devriez vous retrouver en 640x480 sur 256 couleurs avec un
   dlicieux petit logo de ping^H^H^H^Hmanchot.

   A l'invite LILO, vous DEVEZ fournir un chiffre sous la forme d'un
   ``0'' suivi de 3 digits sans ``x'' hexadcimal. Si LILO fournit
   directement l'argument au noyau, ceci n'est pas ncessaire.

   Une fois que tout marche convenablement, vous pouvez explorer les
   diffrents modes (voir plus bas) et une fois choisi celui qui vous
   convient, il sera temps de le fixer via le paramtre ``VGA=x'' du
   fichier de configuration de lilo. La table plus bas vous fournira le
   nombre correspondant au mode. Par exemple, pour du 1280x1024 en 256
   couleurs, vous emploierez ``VGA=0x307'' et relancerez lilo. Le reste
   se trouve dans les HOWTO relatifs  lilo et  loadlin.

   _NOTE !_ vesafb n'active pas automatiquement le dfilement vers
   l'arrire. Vous devez le prciser au noyau : video=vesa:ypan ou
   video=vesa:ywrap. Les deux font la mme chose mais de faon un peu
   diffrente. ywrap est bien plus rapide qu'ypan mais risque de ne pas
   fonctionner sur des cartes VESA 2.0 ne respectant pas tout  fait les
   spcifications. L'option n'est disponible qu' partir du noyau
   2.1.116. Les noyaux prcdents ne permettent pas le dfilement vers
   l'arrire.

6. De quels modes VESA puis-je me servir ?

   Cela dpend de votre carte graphique, en particulier de la quantit de
   mmoire dont elle dispose. A vous de voir quels sont les modes qui
   fonctionnent le mieux.

   La table suivante fournit les numros 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   640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
---------+--------------------------------------------------------------
 4 bits  |    ?       ?     0x302      ?        ?        ?         ?
 8 bits  |  0x300   0x301   0x303    0x305    0x161    0x307     0x31C
15 bits  |    ?     0x310   0x313    0x316    0x162    0x319     0x31D
16 bits  |    ?     0x311   0x314    0x317    0x163    0x31A     0x31E
24 bits  |    ?     0x312   0x315    0x318      ?      0x31B     0x31F
32 bits  |    ?       ?       ?        ?      0x164      ?

   8 bits = 256 couleurs, 15 bits = 32768 couleurs, 16 bits = 65536
   couleurs, 24 bits = 16,8 millions de couleurs, 32 bits : la mme chose
   qu'en 24 bits mais les 8 bits restant peuvent servir  diverses fins
   et l'ensemble s'adapte parfaitement aux bus 32 bits PCI/VLB/EISA. Les
   modes supplmentaires sont  la discrtion du fabricant puisque la
   spcification VESA 2.0 s'arrte au mode 0x31f. Il vous faudra srement
   ttonner pour les trouver.

6.1 Utilisation des cartes graphiques Matrox

   Si vous disposez d'une carte Matrox, vous emploierez le pilote
   matroxfb au lieu de vesafb. Matroxfb gre les Mystique Millenium I, II
   ainsi que les G100 et G200. Il permet aussi d'avoir plusieurs cartes
   dans la mme 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 procder  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'', slectionnez :
     * 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 simultanment, 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  # Ncessaire pour une rinitialisation 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 crer les priphriques associs au gestionnaire
   de mmoire vido dans le rpertoire /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 huitime si vous le souhaitez :
     _________________________________________________________________

# mknod /dev/fb7 c 29 224
     _________________________________________________________________

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

6.2 Utilisation des cartes graphiques Permedia.

   Les cartes de type Permedia ne sont pas supportes par le pilote
   vesafb. Heureusement, il existe un gestionnaire de mmoire vido
   spcifique aux cartes Permedia. En supposant que vous employez
   menuconfig pour paramtrer le noyau avant une compilation, excutez
   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'', slectionnez :
     * 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 12x22 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  # Ncessaire pour une rinitialisation dans un tat normal
# Linux bootable partition config begins
image = /vmlinuz
  append = "video=pm2fb:mode:1024x768-75,font:SUN12x22,ypan" # then switch to p
m2fb
  root = /dev/hda3
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking

   La ligne ``pm2fb:mode:1024x768-75,font:SUN12x22,ypan'' indique que le
   pilote oprera dans une rsolution de 1024 par 768  75Hz avec les
   fontes SUN 12 par 22 (si vous les avez incluses). Ypan autorise le
   dfilement. Vous pouvez employer un autre mode.

   Vous devrez ensuite crer les priphriques associs au gestionnaire
   de mmoire vido dans le rpertoire /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 huitime si vous le souhaitez :
     _________________________________________________________________

# mknod /dev/fb7 c 29 224
     _________________________________________________________________

   Pour davantage de renseignements concernant les fonctionnalits 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 dsactiver le pilote.
     * mode:resolution pour fixer la rsolution. 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 :
          + 640x480-(60,72,75,90,100)
          + 800x600-(56,60,70,72,75,90,100)
          + 1024x768-(60,70,72,75,90,100,illo) illo=80KHz 100Hz
          + 1152x864-(60,70,75,80)
          + 1280x1024-(60,70,74,75)
          + 1600x1200-(60,66,76)
     * Par dfaut, 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 mmoire vido l'autorise.
     * oldmem ne servira qu'aux propritaires d'une CybervisionPPC.
       Ajoutez cette option si votre carte est munie de SGRAM Fujitsu, ce
       qui est le cas des CyberVisionPPC antrieures au 30/12/1999.
     * virtual (transitoire) est  employer si le noyau fixe lui-mme les
       adresses d'accs sur les bus PCI.

6.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 vrifier. Si je me trompe,
   n'hsitez pas  me corriger,  m'insulter ou  m'envoyer votre carte !
   8-)

   Les cartes ATI sont plus ou moins bien gres par le pilote vesafb
   selon leur qualit intrinsque. Heureusement, il existe un
   gestionnaire de mmoire vido spcifique aux cartes ATI. En supposant
   que vous employez menuconfig pour paramtrer le noyau avant une
   compilation, excutez 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'', slectionnez :
     * 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 12x22 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  # Ncessaire pour une rinitialisation dans un tat normal
# Linux bootable partition config begins
image = /vmlinuz
  append = "video=atyfb:mode:1024x768,font:SUN12x22"
  root = /dev/hda3
  label = Linux
  read-only # Non-UMSDOS filesystems should be mounted read-only for checking

   La ligne ``atyfb:mode:1024x768,font:SUN12x22'' indique que le pilote
   oprera dans une rsolution de 1024 par 768.

   Vous devrez ensuite crer les priphriques associs au gestionnaire
   de mmoire vido dans le rpertoire /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 huitime 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 dsactive l'extinction de l'cran
     * noaccel dsactive les routines d'acclration
     * vram:ULONG prcise au pilote atyfb la quantit de mmoire vido
       disponible
     * pll:ULONG ?
     * mclk:ULONG ?
     * vmode:ULONG ?
     * cmode:ULONG - fixe le nombre de bits par pixel : 0, 8, 15, 16, 24
       ou 32

6.4 Quelles cartes graphiques se conforment aux spcifications 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 tlvision
     * Hercules Stingray 128/3D sans sortie pour la tlvision - une mise
        jour du BIOS est ncessaire (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)
     * Voodoo2 2000

   Une liste de cartes mres incluant un jeu de composants graphiques :
     * Trident Cyber9397
     * SiS 5598

   Les cartes qui ne fonctionnent pas :
     * TBA

6.5 Vesafb est-il modularisable ?

   A ma connaissance, Vesafb ne peut pas tre modularis. Les
   dveloppeurs de vesafb s'y atteleront peut-tre un jour. De toute
   faon, 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 srement mieux le laisser dans le noyau, des fois que le
   dmarrage se passe mal.

6.6 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 mme
   occasion, contourner quelques problmes matriels de cartes Trident
   dfectueuses (cf. #define TRIDENT_GLITCH dans le fichier
   drivers/char/vga.c). Si vous activez l'option de gnration logicielle
   du curseur ("Software generated cursor"), des nouveauts se
   prsentent : un curseur rouge, un qui intervertisse la couleur de
   premier plan et celle du fond, une mise en relief du caractre actif
   qui laisse le curseur matriel visible ou non. Je n'ai srement pas
   pens  tout.

   On contrle l'allure du curseur via la squence d'chappement
<ESC>[?1;2;3c

   ou 1, 2 et 3 sont des paramtres que l'on va dcrire  prsent. Les
   paramtres absents prennent la valeur 0.

   Le premier paramtre correspond  la taille du curseur (0=dfaut,
   1=transparent, 2=soulign, ..., 8=caractre plein). Ajoutez 16 pour
   rendre actif le curseur logiciel, 32 si la couleur de fond doit tre
   systmatiquement change, 64 pour que les couleurs de premier plan et
   de fond soient distinctes. La graisse est ignore pour les deux
   derniers attributs.

   Le second paramtre indique quels sont les bits d'attributs  changer
   (un simple ou exclusif). Sur un cran VGA standard, les quatre bits de
   poids fort prcisent 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 troisime paramtre 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 slection 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'

7. Le pilote de mmoire vido sur les Atari m68k

   Cette partie dcrit les options offertes par le pilote de mmoire
   vido sur les machines Atari m68k.

7.1 Quels sont les modes disponibles sur les machines Atari m68k ?

Couleurs   320x200  320x480  640x200  640x400  640x480  896x608  1280x960
---------+---------------------------------------------------------------
 1 bit   |                            sthigh   vga2     falh2    tthigh
 2 bits  |                   stmid             vga4
 4 bits  | stlow                             ttmid/vga16 falh16
 8 bits  |          ttlow                      vga256

   ttlow, ttmid et tthigh sont seulement employs sur les modles TT
   tandis que vga2, vga4, vga15, vga256, falh3 et falh16 ne servent que
   sur le Falcon. Lorsqu'une option video=xxx est donne au noyau, en
   l'absence toute sous-option, le noyau teste les modes vido dans
   l'ordre suivant jusqu' ce qu'il en trouve un d'adapt au matriel:
     * ttmid
     * tthigh
     * vga16
     * sthigh
     * stmid

   Vous pouvez prciser le mode  employer pour viter l'auto-dtection.
   Par exemple, video=vga16 procure un cran en 640 par 480 avec une
   profondeur de 4 bits.

7.2 Sous options supplmentaires sur les machines Atari m68k

   Options supplmentaires disponibles avec le paramtre video=xxx :
     * inverse - inversion des couleur de fond et de premier plan.
       Normalement le fond est noir; cette option le rend blanc.
     * font - fonte  employer en mode texte. Les fontes suivantes sont
       actuellement disponibles : VGA8x8, VGA8x16, PEARL8x8. La fonte
       VGA8x8 est utilise par dfaut si la dimension verticale de
       l'cran est infrieure  400 pixels sans quoi la fonte VGA8x16 est
       employe.
     * internal - trs intressant. Se reporter  la section suivante.
     * external - idem.
     * monitorcap - description des modes multisync disponibles. PROSCRIT
       pour les moniteurs  frquence fixe.

7.3 Sous option "internal" sur les machines Atari m68k

   Syntaxe : internal:(xres);(yres)[;(xres_max);(yres_max);(offset)]

   L'option indique les fonctionnalits ajouts par certains
   priphriques vido tels les modes d'OverScan. (xres) et (yres)
   fournissent les dimensions tendues de l'cran. Si vos modes
   d'OverScan ncessitent une bordure noire, vous devrez expliciter les
   trois derniers arguments de la sous-option internal:. (xres_max)
   correspond  la plus grande dimension de ligne accepte par le
   matriel tandis que (yres_max) donne le nombre maximal de lignes et
   (offset) le dcalage en octets entre la partie visible de la mmoire
   vido et son emplacement physique.

   Les matriel vido tendu requiert souvent une activation qui fait
   appel aux options "switches=*". [L'auteur apprcierait de recevoir des
   informations supplmentaires  ce sujet. La documentation m68k du
   noyau manque de clart sur ce sujet et l'auteur ne possde pas
   d'Atari! Des exemples seront galement les bienvenus.]

7.4 Sous option "external" sur les machines Atari m68k

   Syntaxe :
   external:(xres);(yres);(depth);(org);(scrmem)[;(scrlen)[;(vgabase)[;(c
   olw)[;(coltype)[;(xres_virtual)]]]]]

   On rentre dans le compliqu. Le prsent document essaye d'tre aussi
   clair que possible mais l'auteur n'a rien contre une relecture afin
   d'tre sr qu'il n'a rien loos^H^Hup.

   Cette sous-option indique que vous disposez de priphriques vido
   externes (vraisemblablement une carte vido) et indique comment Linux
   doit l'employer. Normalement, le noyau se limite  ce qu'il peut
   apprendre des priphriques vido internes. Vous devez donc lui
   fournir tous les paramtres ncessaires afin qu'il soit en mesure de
   grer des priphriques externes. Il y a deux limitations : vous
   basculerez dans le mode adquat avant l'initialisation et une fois
   celle-ci effectue, vous ne pourrez pas changer de mode.

   Les trois premiers paramtres sont vidents. Ils correspondent aux
   dimensions de la zone d'affichage : hauteur et largeur en pixel
   suivies de la profondeur. Le paramtre de profondeur servant
   d'exposant au nombre 2 donne le nombre de couleurs. Par exemple, pour
   un affichage en 256 couleurs, vous prciserez un paramtre de 8. Le
   paramtre dpend de l'adaptateur graphique externe bien que vous soyez
   de toute faon limit par le matriel.

   Vous devez ensuite dcrire au noyau l'organisation de la mmoire vido
   via le paramtre (org).
     * n - plans disposs normalement, les uns  la suite des autres.
     * i - plans entrelacs, c'est  dire 16 bits du premier plan, puis
       du suivant etc. Seuls les modes vido natifs d'Atari utilisent a
       et aucune carte vido ne le gre.
     * p - pixels regroups. Les bits constitutifs des diffrents plans
       d'un mme pixel se suivent. Ce mode est le plus courant en 256
       couleurs.
     * t - couleurs vraies. Il s'agit du mode prcdent en l'absence de
       toute table de correspondance des couleurs. Ces modes sont
       gnralement sur 24 bits et procurent quelques 16,8 millions de
       couleurs.

   _A cot de a_, le paramtre (org) a une signification bien diffrente
   pour les modes monochromes.
     * n - couleurs usuelles, c'est  dire 0 pour le blanc et 1 pour le
       noir;
     * i - couleurs inverses, c'est  dire 0 pour le noir et 1 pour le
       blanc.

   L'lment suivant ayant trait au priphrique vido fixe l'adresse de
   base de la mmoire vido. Il est donn par le paramtre (scrmem) sous
   forme hexadcimal (prfix par 0x). Vous devriez trouver cette
   information dans la documentation fournie avec le priphrique.

   Le paramtre suivant, (scrlen), fournit au noyau la taille de la zone
   de mmoire vido. S'il est absent, il est calcul  partir des valeurs
   de (xres), (yres) et (depth). En bref, il ne sert  rien de prciser
   une valeur. Si vous donnez  sa suite le paramtre (vgabase), laissez
   le champ vide en rentrant deux point-virgules. Autrement, oubliez le.

   Le paramtre (vgabase) est optionnel. En son absence, le noyau ne
   pourra lire ni crire le moindre des registres de couleur du
   priphrique et il vous faudra donc installer les couleurs appropries
   avant le dmarrage de Linux. Si la carte est compatible VGA, vous
   pouvez donner au noyau l'adresse o se trouvent les registres vido de
   faon  ce qu'il modifie lui-mme les tables des couleurs. Vous
   trouverez cette information dans la documentation fournie avec le
   priphrique. Afin d'tre _clair_, (vgabase) est une adresse de
   _base_, donc aligne sur un multiple de 4k. Pour l'accs en lecture ou
   en criture aux registres, le noyau utilise une plage d'adresses
   comprises entre (vgabase) + 0x3c7 et (vgabase) + 0x3c9. La valeur est
   donne en hexadcimal et doit tre prfixe par 0x (tout comme
   (scrmem)).

   (colw) ne sert que si (vgabase) est spcifi. Il donne au noyau la
   taille des registres de couleur, c'est  dire le nombre de bits par
   couleur (rouge/verte/bleue). La valeur par dfaut est de 6 bits mais
   il est courant d'en spcifier 8.

   (coltype) s'emploie en conjonction avec (vgabase). Il prcise aux
   noyau le type des registres de la carte graphique. Actuellement, deux
   modles sont grs : vga et mv300. Par dfaut, vga est employ.

   (xres_virtual) n'est ncessaire qu'avec les cartes ProMST/ET4000 pour
   lesquelles la longueur physique des lignes diffre de leur taille
   visible. Avec une ProMST, on donnera la valeur 2048 tandis que pour
   l'ET4000 cela dpendra de l'initialisation de la carte vido.

8. Le pilote de mmoire vido avec les Amiga

   Cette partie dcrit les options offertes sur les Amiga, options
   voisines de celles de l'Atari m68k.

8.1 Quels sont les modes disponibles sur les machines Amiga ?

   a dpend du composant employ dans votre Amiga. Il y en a
   essentiellement trois : OCS, ECS et AGA. Tous on recours au pilote de
   mmoire vido.
     * Modes NTSC
          + ntsc - 640x200
          + ntsc-lace - 640x400
     * PAL modes
          + pal - 640x256
          + pal-lace - 640x512
     * Modes ECS - 2 bits de couleur avec les composants ECS, 8 bits avec
       les composants AGA
          + multiscan - 640x480
          + multiscan-lace - 640x960
          + euro36 - 640x200
          + euro36-lace - 640x400
          + euro72 - 640x400
          + euro72-lace - 640x800
          + super72 - 800x300
          + super72-lace - 800x600
          + dblntsc - 640x200
          + dblpal - 640x256
          + dblntsc-ff - 640x400
          + dblntsc-lace - 640x800
          + dblpal-ff - 640x512
          + dblpal-lace - 640x1024
     * Modes VGA - 2 bits de couleur avec les composants ECS, 8 bits avec
       les composants AGA
          + vga - 640x480
          + vga70 - 640x400

8.2 Sous options supplmentaires sur les machines Amiga m68k

   Elles sont voisines de celles de l'Atari m68k :
     * depth - prcise le nombre de bits par pixel.
     * inverse - mme chose que sur les Atari.
     * font - mme chose que sur les Atari, mais la fonte PEARL8x8
       remplace la fonte VGA8x8 si la largeur de la zone d'affichage est
       infrieure  400 pixels.
     * monitorcap - description des modes multisync disponibles. PROSCRIT
       pour les moniteurs  frquence fixe.

8.3 Cartes d'extension graphiques gres sur Amiga

     * Phase5 CyberVision 64 (composant S3 Trio64)
     * Phase5 CyverVision 64-3D (composant S3 ViRGE)
     * MacroSystems RetinaZ3 (composant NCR 77C32BLT)
     * Helfrich Piccolo, SD64, GVP ECS Spectrum, Village Tronic Picasso
       IIII+ and IV/ (Cirrus Logic GD542x/543x)

9. Le pilote de mmoire vido sur les Macintosh m68k

   La version courante du gestionnaire de mmoire vido ne gre que les
   modes choisis sous MacOS avant l'initialisation de Linux ainsi que les
   modes couleur en 1, 2, 4 et 8 bits.

   Le pilote gre les options de la forme :
video=macfb:<font>:<inverse>

   Les fontes VGA8x8, VGA8x16, 6x11, etc... sont disponibles. L'option
   inverse permet bien sr d'inverser la vido.

10. Le pilote de mmoire vido sur les PowerPC

   L'auteur aimerait recevoir des informations relatives au gestionnaire
   de mmoire vido sur ces machines.

11. Le pilote de mmoire vido sur les Alpha

11.1 Modes disponibles

   Pour l'instant il n'y a que la carte PCI TGA. Elle offre un mode de 80
   lignes par 30 colonnes en 640x480 avec une profondeur de 8, 24 ou 32
   bits.

11.2 Cartes graphiques gres par le pilote de mmoire vido

   La carte graphique suivante a t teste avec succs :
     * DEC TGA PCI (DEC21030) - 640x480 @ 8 bit or 24/32 bit versions

12. Le pilote de mmoire vido sur les SPARC

12.1 Cartes graphiques gres par le pilote de mmoire vido

     * MG1/MG2 - version SBus ou intgre (Sun3) - au maximum 1600x1280
       monochrome (BWtwo)
     * CGthree - semblable aux MG1/MG2 mais offrant la couleur -
       rsolution maximale ?
     * GX - SBus - au maximum 1152x900 en 8bits (CGsix)
     * TurboGX - SBus - au maximum 1152x900 en 8 bits (CGsix)
     * SX - SS10/SS20 - au maximum 1280x1024 en 24 bits - (CGfourteen)
     * ZX(TZX) - SBus - carte acclratrice 3D 24 bits - rsolution
       maximale ? (Leo)
     * TCX - AFX - Sparc 4 - au maximum 1280x1024 en 8 bits
     * TCX(S24) - AFX - Sparc 5 - au maximum 1152x900 en 24 bits
     * Creator - SBus - au maximum 1280x1024 en 24 bits (FFB)
     * Creator3D - SBus - au maximum 1920x1200 en 24 bits (FFB)
     * ATI Mach64 - carte acclratrice 8/24 bits pour Sparc64 sur bus
       PCI

   Une option de la PROM permet l'envoi des caractres d'affichage 
   l'cran ou sur une console srie. Jetez un oeil  la FAQ du Frame
   Buffer sur Sparc : http://c3-a.snvl1.sfba.home.com/Framebuffer.html>.

12.2 Configuration du gestionnaire de mmoire vido

   Pendant la configuration du noyau (make config ou autre), il vous faut
   choisir entre promcon ou fbcon. La compilation des deux est possible
   mais il faudra spcifier au noyau le pilote  employer. Par dfaut,
   fbcon est essay en premier au dmarrage. Si promcon n'a pas t
   slectionn, dummycon est activ pendant l'initialisation. Une fois
   les bus initialiss, si fbcon est compil, le noyau recherche les
   priphriques prcdents et se sert de fbcon. En l'absence de
   gestionnaires de mmoire vido, le noyau a recours  promcon.

   Voici les options du noyau :
video=sbus:options
        options inclue les lments suivants, spars par une virgule :
                nomargins       marge nulle;
                margins=12x24   marge de 12 par 24 (calcul par dfaut en
                fonction de la rsolution);
                off             inhibition de la dtection des pilotes de
                mmoire vido SBus/UPA;
                font=SUN12x22   emploi d'une fonte particulire.

   Au dmarrage, un paramtrage de la forme
 video=sbus:nomargins,font=SUN12x22

   procure une agrable console en mode texte, rapide, avec une
   rsolution de 96 par 40 qui ressemble  une console Solaris avec la
   couleur et les terminaux virtuels en plus comme sur les compatibles
   PC.

   Pour que l'affichage se fasse avec la fonte SUN12x22, vous devez
   l'activer durant la configuration du noyau (dsactivez l'option
   fontwidth != 8). Le pilote de mmoire vido acclr gre n'importe
   quelle fonte dont la largeur est comprise entre 1 et 16 pixels tandis
   que le pilote de base ne gre que les fontes larges de 4, 8, 12 ou 16
   pixels. Un paquetage rcent des consoletools est recommand.

13. Le pilote de mmoire vido sur les MIPS

   Il n'est pas besoin de modifier quoi que ce soit avec ce type de
   machines. Tout est gr automatiquement. En particulier, les Indys
   sont cbls de faon  offrir une console 160x64. Une rcriture du
   code de gestion de la console pour les Indys tant en cours, on
   gardera un oeil sur cette section.

14. Le pilote de mmoire vido sur les ARM

14.1 Netwinders

   Pour les Netwinders (qui reposent sur le processeur RISC ARM SA110 au
   charme si dlicieusement british), il existe deux versions du
   gestionnaire de mmoire vido pour les Cyber2000 : un pour les noyaux
   2.0.x, l'autre pour les 2.2.y. Tant l'activation que l'emploi du
   pilote sont assez naturels avec les deux branches du noyau. Nanmoins,
   en 2.0.x, la rsolution et la profondeur sont codes en dur (beuh...).
   Heureusement, la version 2.2.x est plus souple, du moins le sera une
   fois les pilotes davantage stabiliss. Le mieux que vous puissiez
   faire afin que tout fonctionne reste encore de lire la documentation
   fournie avec la portion ARM des sources du noyau. Les Netwinders
   intgrent un composant VGA mais il ne s'est malheureusement jusqu'ici
   trouv personne pour porter vgafb. [Je m'y attelerai si quelqu'un me
   fournissait un Netwinder avec lequel jouer]

14.2 Archimedes Acorn

   Les Acorns offrent un pilote de mmoire vido depuis les temps anciens
   des noyaux 1.9.x. Cependant, le gestionnaire Acornfb des noyaux 2.2.x
   est compltement nouveau puisque l'interface d'accs  la mmoire
   vido a t modifie au cours du dveloppement des noyaux 2.1.x (qui
   devinrent naturellement les 2.2.x). Comme prcdemment, il n'est gure
   difficile d'activer le pilote et de configurer la profondeur et la
   rsolution.

14.3 Autres architectures  base d'ARM (SA 7110s et variantes)

   A ma surprise, mme le Psion 5 et le Geofox disposent d'un pilote de
   mmoire vido ! On m'a dit que le manchot passait d'ailleurs plutt
   bien. S'il vous plat, donnez moi un Psion 5 !

15. Gestion de la mmoire vido avec plusieurs crans

   Cette partie du document a t fournie gracieusement par Frederick A.
   Niles qui conserve tous ses droits sur les informations donnes.

15.1 Introduction

   Les quelques pages qui suivent sont censes permettre une premire
   prise en main des configurations  deux crans sous Linux. Bien que le
   processus se droule naturellement, les occasions de se tromper ne
   manquent pas.

   Je me suis focalis sur la mise en place d'un serveur X sur un second
   moniteur. L'intrt en est que l'on croise de temps  autre des
   personnes se dbarrassant de vieux moniteurs de 19 ou 20 pouces 
   frquence fixe car ils ne peuvent plus s'en servir. On peut ainsi
   dmarrer avec un petit moniteur multisync et disposer de X sur un
   moniteur de grandes dimensions.

   Comme il s'agit d'un domaine en plein dveloppement, l'information
   volue rapidement. Le contenu de ce document pourrait trs bien tre
   dpass, voire compltement faux, lorsque vous le lirez.

   ** ATTENTION ** Ce texte a t rdig avant la sortie de la version
   4.0 de la XFree86 qui devrait modifier pas mal de choses. Essayez
   d'obtenir une nouvelle version de ce document si elle existe.

15.2 Retour

   Le retour de la part des utilisateurs sera plus que certainement le
   bienvenu. Sans vos remarques et vos questions, ce document
   n'existerait pas. N'hsitez donc pas  me contacter  l'adresse
   suivante : Frederick.A.Niles@gsfc.nasa.gov.

15.3 Contributions

   Les personnes suivantes ont particip  l'laboration de ce
   Mini-HOWTO :
     * Petr Vandrovec vandrove@vc.cvut.cz
     * Andreas Ehliar ehliar@lysator.liu.se (x2x)
     * Marco Bizzarri m.bizzarri@icube.it (multiple X servers)

15.4 Avertissements

   L'auteur de ce document dgage toute responsabilit quant  son
   contenu. Vous employez les notions, exemples et tout ce qui figure ici
    vos risques et prils. S'agissant d'une nouvelle version de ce
   document, des informations errones ou inadquates peuvent trs bien
   entraner la dgradation de votre matriel. Fates-y attention et,
   bien que ce soit hautement improbable, je me dcharge de toute
   responsabilit  cet gard.

15.5 Proprit du document

   Copyright (c) 1999 Frederick Niles

   La distribution de ce document doit se conformer aux termes de la
   licence LDP tels que dfinis  l'adresse :
   sunsite.unc.edu/LDP/COPYRIGHT.html>.

15.6 Matriel support

   La plupart des cartes vidos supposent qu'elles assument seules cette
   fonction au sein du systme. Elles occupent donc en permanence
   l'espace d'adressage de l'adaptateur graphique primaire. Il existe
   quelques exceptions :
     * les cartes Matrox : Matrox Millennium, Matrox Millennium II,
       Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100,
       Matrox Mystique G200, Matrox Millennium G200, Matrox Marvel G200.
     * MDA : il s'agit essentiellement des cartes graphiques monochromes
       Hercules. videmment, on ne dispose que du mode texte.

   Remarque : seul le second adaptateur graphique doit figurer dans la
   liste prcdente.

15.7 Logiciels commerciaux

   Ce Mini-HOWTO traite avant tout de logiciel libre. Certains serveurs X
   commerciaux sont nanmoins capables de grer plusieurs moniteurs tels
   le serveur Metro-X de Metro Link (www.metrolink.com) et Accelerated-X
   de Xi Graphics (www.xig.com).

15.8 Logiciels ncessaires

   Les patches et programmes suivants sont ncessaires :
     * "fbset", examinez : http://www.cs.kuleuven.ac.be/~geert/bin/>
       (remarque : ce programme est fourni avec la RedHat 6.0)
     * patches du noyau pour la configuration  deux crans "fbaddon" des
       cartes Matrox. Examinez :
       ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/>
     * "con2fb", examinez :
       ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/>
     * serveur X11 XF86_FBDev employant le gestionnaire de mmoire vido.
       Disponible en standard avec la version 3.3.1 de la XFree86.

15.9 Mise en route

   Commencez par patcher votre version du noyau avec le patche "fbaddon".
   Ensuite, vous configurerez le noyau et activerez la gestion de la
   mmoire vido. Si vous disposez de cartes Matrox, incluez le pilote
   d'acclration unifi Matrox. Excluez le gestionnaire de mmoire vido
   VESA. Activez bien sr la gestion de plusieurs adaptateurs, recompilez
   le noyau et rinitialisez le systme.

   A prsent, installez l'utilitaire "fbset" et lisez attentivement la
   documentation relative  son paramtrage. La mise en place d'un
   fichier "/etc/fb.modes" est vivement recommand une fois que vous vous
   serez dcid sur une configuration. Le paquetage fbset comprend un
   script Perl de conversion du fichier XF86Config en paramtres pour
   fb.modes. Vous trouverez mon script en shell Bourne dans les annexes A
   et B.

   Vous devez vous mettre au point sur l'emploi du pilote de mmoire
   vido avec un seul adaptateur et bien identifier tout ce qui n'a rien
    voir avec la gestion de plusieurs. Vous vous pargnerez ainsi pas
   mal de noeuds au cerveau. Je me focalise surtout sur la mise en place
   de X au niveau du second moniteur vu que la plupart des autres
   oprations de configuration en forment un sous-ensemble.

  Dplacement d'une console

   Compilez le programme "con2fb". Lanc sans arguments, il fournit le
   message suivant : "usage: con2fb fbdev console". Une commande telle
   que "con2fb /dev/fb1 /dev/tty6" attacherait la console virtuelle
   numro 6 au second gestionnaire de mmoire vido. Ctrl-Alt-F6 vous
   basculera dans cette console qui s'affichera sur le second moniteur.

  "fbset" et le paramtrage du second moniteur

   La mise en place des paramtres "fbset" doit se cantonner au moniteur
   avec lequel "fbset" est employ. Fates donc attention  bien employer
   l'option "-fb" avec le second moniteur. Plus prcisment, si vous ne
   voulez rien faire d'autre qu'accorder la rsolution verticale
   virtuelle avec la rsolution verticale relle : "fbset -fb /dev/fb1
   -vyres 600" (par exemple). L'affichage en mode texte en est
   srieusement ralenti mais sans cela X reste vraiment hideux.

  X et le gestionnaire de mmoire vido

   Le fichier framebuffer.txt explique bien mieux que je ne puis le faire
   mais voici les deux points essentiels :
     * vrifiez que le lien "X" pointe bien vers "XF86_FBDev",
     * ajoutez une section Monitor  votre fichier XF86Config pour le
       gestionnaire de mmoire vido.

   Par exemple :
# Serveur X s'appuyant sur le gestionnaire de mmoire vido.

Section "Screen"
    Driver      "fbdev"
    Device      "Millennium"
    Monitor     "NEC MultiSync 5FGp"
    Subsection "Display"
        Depth       8
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       32
        Modes       "default"
        ViewPort    0 0
    EndSubsection
EndSection

   Restreignez vous aux modes "default" car je ne pense pas qu'il y en
   ait d'autres qui fonctionnent avec le pilote de mmoire vido Matrox.

  Excution du serveur X sur le second moniteur

   Positionnez la variable d'environnement FRAMEBUFFER sur le second
   priphrique de mmoire vido : "export FRAMEBUFFER=/dev/fb1" ou :
   "setenv FRAMEBUFFER /dev/fb1" X doit tre lanc avec des paramtres
   lui spcifiant  la fois la profondeur souhaite au niveau des
   couleurs et un numro correspondant  la console virtuelle employe.
   Par exemple : "startx -- :0 -bpp 16 vt06". Le serveur X en 16 bits par
   pixel d'identifiant ":0" est attach  la console virtuelle numro 6.
   Utilisez ":1" au lancement d'un autre serveur X en le liant  une
   console dpendant de l'autre gestionnaire de mmoire vido et vous
   disposerez de deux serveurs X fonctionnant simultanment.

15.10 Rsum

   Les tapes de mise en place d'un serveur X sur un second moniteur
   peuvent tre ainsi rsumes :
     * se procurer le patch du noyau, fbset et con2fb;
     * appliquer le patch, configurer le noyau, recompiler et
       reinitialiser;
     * ajouter une section XF86_FBDev au fichier XF86Config et fixer le
       lien de X.

   A chaque redmarrage :
     * crer une console : "con2fb /dev/fb1 /dev/tty6";
     * paramtrer : "fbset -fb /dev/fb1 1280x1024";
     * positionner la variable FRAMEBUFFER : "export
       FRAMEBUFFER=/dev/fb1";
     * lancer X : "startx -- -bpp 16 vt06".

   Un alias de shell permet d'automatiser ces tches. Un script ne
   conviendrait pas puisqu'on a besoin de dterminer le numro de la
   console courante. Voici mon alias (en C-shell) :
alias startxfb = "
setenv FRAMEBUFFER /dev/fb\!*;  # l'argument passe a l'alias est recupere
con2fb $FRAMEBUFFER /dev/$tty;  # positionne le pilote sur la console courante
fbset -fb $FRAMEBUFFER 1280x1024@62;  # Cf /etc/fb.modes
startx -- :\!* -bpp 16 vt0`echo $tty | cut -dy f 2`' # execution de X
"

   Ces lignes correspondent au contenu de mon .cshrc aux commentaires
   prs mais ils aident, avec les sauts de ligne,  en faciliter la
   lecture. Je fournis le numro du pilote de mmoire vido comme
   argument  l'alias.

   Si quelqu'un me fournit un quivalent pour bash, je l'incluerai ici.
   La commande tty vous fournira le nom de la console courante.

15.11 Remarques et problmes

     * fbset et startx _DOIVENT_ tre invoqus depuis une mme console
       qui sera contrle par le pilote de mmoire vido.
       L'automatisation au moyen de scripts en est diminue d'autant.
     * la version 4.0 de la XFree86 grera correctement les adaptateurs
       multiples mais la 3.3.1 en est encore incapable. Vous pouvez
       cependant disposer de deux serveurs avec la 3.3.1 et passer de
       l'un  l'autre avec x2x.
     * Le pilote de mmoire vido non-actif conserve la dernire image
       sans la mettre  jour.
     * L'cran qui n'est pas slectionn ne conserve pas toujours son
       tat durant ses priodes d'inactivit (mais en gnral il le
       fait). Geert Uytterhoeven, qui assure l'volution du pilote de
       mmoire vido, et Linus Torvalds sont en dsaccord sur les
       changements pour la gestion des adaptateurs multiples lis aux
       consoles (i.e. fbaddon) et ceux ci pourraient trs bien ne jamais
       se retrouver dans l'arborescence officielle du noyau (cette
       information a une forte composante de type bruit de couloir).
     * Si vous excutez X de n'importe o, votre machine peut se
       retrouver dans un tat passablement dgrad qui mlange les
       vnements de la souris et ceux du clavier.
     * Le fichier framebuffer.txt dans l'arborescence du noyau mentionne
       la possibilit de modifier les paramtres Modeline du XF86Config
       alors que X fonctionne. Le gestionnaire de mmoire vido Matrox
       semble obliger le serveur X  tous les ignorer. On ne dispose donc
       que d'un paramtrage, celui qui est employ lors du basculement
       depuis le mode texte.
     * XF86_FBDev ne dispose pas d'acclration. Des patches pour les
       cartes Matrox existent :
       http://www.in-berlin.de/User/kraxel/xfree86/>

  Fonctionnement avec xdm

   Je n'ai pas encore trouv comment passer au niveau 5 dans une
   configuration  deux adaptateurs avec un serveur sur le second
   moniteur ou sur les deux. Bien que l'ajout d'une ligne au fichier
   Xservers de xdm/gdm soit ais, la contrainte de dmarrer le serveur X
   depuis la console gre par le pilote de mmoire vido interdit cette
   solution. Si quelqu'un a une ide, qu'il m'en fasse part afin que je
   puisse l'ajouter.

  L'utilitaire x2x

   x2x vous permet de passer d'un serveur X  l'autre lorsque vous
   atteignez le bord d'un cran. Aux dernires nouvelles, ce programme se
   trouvait  l'adresse suivante :
   http://ftp.digital.com/pub/DEC/SRC/x2x/>. La distribution Debian en
   propose un paquetage. Je n'ai pas eu l'occasion de l'essayer mais
   plusieurs utilisateurs ont fait part d'expriences russies.

  Autres commandes utiles

   Il est bon de garder prsente  l'esprit l'existence de certaines
   commandes quand on dispose de plusieurs adaptateurs (surtout quand on
   crit des scripts). * "chvt" permet de passer d'une console virtuelle
   (VT)  une autre. * "openvt" excute un programme dans une console
   diffrente. * "tty" renvoie le nom de la console courante.

  Annexe A. Script cvtmode.m pour Octave

   Notez le positionnement de bpp.
#!/usr/bin/octave -q
bpp = 16;
DCF = sscanf(argv(1,:), "%f");
HR  = sscanf(argv(2,:), "%f");
SH1 = sscanf(argv(3,:), "%f");
SH2 = sscanf(argv(4,:), "%f");
HFL = sscanf(argv(5,:), "%f");
VR  = sscanf(argv(6,:), "%f");
SV1 = sscanf(argv(7,:), "%f");
SV2 = sscanf(argv(8,:), "%f");
VFL = sscanf(argv(9,:), "%f");
pixclock = 1000000 / DCF;
left_margin = HFL - SH2;
right_margin = SH1 - HR;
hsync_len = SH2 - SH1;

# 3) vertical timings:
upper_margin = VFL - SV2;
lower_margin = SV1 - VR;
vsync_len = SV2 - SV1;

RR = DCF / (HFL * VFL) *1e6;
HSF = DCF / HFL * 1e3;

printf("mode \"%dx%d\"\n",HR,VR);
printf("   # D: %3.2f MHz, H: %3.2f kHz, V: %2.2f Hz\n", DCF, HSF, RR);
printf("   geometry %d %d %d %d %d\n", HR, VR, HR, VR, bpp);
printf("   timings %d %d %d %d %d %d %d\n", ...
                                 pixclock, left_margin, right_margin, ...
                                 upper_margin, lower_margin, ...
                                 hsync_len, vsync_len);
printf("endmode\n");

  Annexe B. Script "cvtfile" en Shell Bourne

   Le script Octave "cvtmode" est utilis.
#!/bin/sh

# Shell script to convert XF86Config file to fb.modes file.
# Uses octave script cvtmode.m

if [ -z $1 ]; then
  FILE=/etc/X11/XF86Config
else
  FILE=$1
fi

i=1
LEN=`grep Modeline $FILE | wc -l`
while expr $i \< $LEN > /dev/null ;
do
  CURLINE=`grep Modeline $FILE | cut -d'"' -f 3-20 | head -$i | tail -1 `
  ./cvtmode.m $CURLINE
  echo " "
  i=`expr $i + 1`
done

16. Gestion des fontes

   Afin de pouvoir modifier les fontes, vous devez installer kbd-0.99. Le
   logiciel est disponible via ftp://ftp.win.tue.nl/pub/linux/utils/kbd>.

   Le tl-chargement et l'installation de kbd-0.99 rside en ce que vous
   pourrez charger les fontes internationales (dont l'Euro) dans votre
   console. Je trouve trs chic *en franais dans le texte* d'avoir trois
   symboles sur mon clavier : le dollar, la livre et l'Euro.

17. Commutation de mode

   Pour changer de mode (640x480, 800x800, etc ...), vous avez besoin de
   fbset (fbset-19990118.tar.gz pour l'instant) :
   http://www.cs.kuleuven.ac.be/~geert/bin/fbset-19990118.tar.gz> Le
   logiciel est fourni avec une documentation complte sur son emploi.

17.1 X11 et vesafb ?

   Si votre version de XFree86 est antrieure  la 3.3.3.1, il est urgent
   de procder  une mise  jour. Cette version comprend le pilote FBDev
   X pour les gestionnaires de mmoire vido. Autrement, vous pouvez
   compiler votre propre pilote FBDev pour des versions de XFree telles
   la 3.3.2 ou la 3.3.3.

   Allez sur http://www.xfree86.org> et tl-chargez les dernires
   sources du serveur X. [NdT : le recours  un miroir ou 
   ftp://ftp.lip6.fr/pub/X11> sera peut-tre plus rapide]

     * Dcompactez les sources.
     * ditez le fichier xc/config/cf/xf86site.def, et dcommentez le
       #define relatif  XF68FBDevServer.
     * Dcommentez _toutes_ les rfrences 
       FB_VISUAL_STATIC_DIRECTCOLOR. Elles ne servent plus  rien. Si
       vous partez des sources de XFree86 3.3.3.1, sautez cette tape (la
       rfrence a t supprime).
     * ditez xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c et
       changez K_RAW en K_MEDIUMRAW.

   Recompilez le pilote. Ne vous souciez pas des rfrences ayant trait 
   m68k : les architectures Intel sont supportes. Recompilez le tout. a
   va prendre un moment compte tenu de la taille des sources.

   Si vous manquez de temps, les sites suivants proposent des versions
   pr-compiles. Notez que ces sites n'ont rien d'officiel et que vous
   utiliserez leurs binaires  vos risques et prils.

   Pour une version libc5 :
   http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.gz>. Pour une
   version glibc2 :
   http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.libc6.gz>,
   http://pobox.com/~brion/linux/fbxserver.html>.

   On signale qu'X11 ne fonctionne pas avec certaines cartes graphiques
   lorsque le gestionnaire vesafb est actif. Si vous tes dans ce cas,
   essayez le nouveau pilote XF86_FBdev pour X11.

   Utilis conjointement  vesafb, ce pilote peut permettre l'emploi de
   X11  des rsolutions autrement inaccessibles au pilote X11 usuel
   (cartes MGA G200 par exemple).

   XF86_FBdev requiert la configuration suivante du XF86Config :
Section "Screen"
        Driver          "FBDev"
        Device          "Primary Card"
        Monitor         "Primary Monitor"
        SubSection      "Display"
                Modes           "default"
        EndSubSection
EndSection

   Vous devrez galement positionner XkbDisable dans la section Keyboard
   ou bien excuter XF86_FBDev avec l'option '-kb' afin de grer
   correctement votre clavier. Sans XkbDisable, il vous faudra inclure
   les lignes suivantes dans votre .Xmodmap pour prciser les effets des
   touches. Le mme rsultat s'obtient en ditant son xkb si on le
   dsire. _XFree86 3.3.3.1 ne prsente plus ce dfaut. Il est donc
   vivement conseill d'effectuer une mise  jour vers cette version qui
   de plus corrige d'autres bugs et inclut FBDev parmi les serveurs._

! Keycode settings required
keycode 104 = KP_Enter
keycode 105 = Control_R
keycode 106 = KP_Divide
keycode 108 = Alt_R Meta_R
keycode 110 = Home
keycode 111 = Up
keycode 112 = Prior
keycode 113 = Left
keycode 114 = Right
keycode 115 = End
keycode 116 = Down
keycode 117 = Next
keycode 118 = Insert
keycode 119 = Delete

   Certaines adaptations seront srement ncessaires (copier les codes du
   gestionnaire X11 utilis et positionner le nom du pilote sur FBDev)
   mais c'est en substance ce qu'il vous faudra faire pour que le pilote
   vesafb de X11 fonctionne. Les problmes lis  X11 devraient tre
   rsolus dans les prochaines versions en ce qui concerne les cartes
   vido supportes.

18. Conversion des Modelines en paramtres d'affichage du pilote de
mmoirevido

   Rien n'est plus simple si XFree86 (X11) est install sur votre machine
   et que vous pouvez vous en servir normalement.

   Le pilote de mmoire vido requiert les champs suivants :
     * pixclock - horloge pixel en picosecondes
     * left_margin - dure entre la synchro et la zone affiche
     * right_margin - dure entre la zone affiche et la synchro
     * upper_margin - dure entre la synchro et la zone affiche
     * lower_margin - dure entre la zone affiche et la synchro
     * hsync_len - longueur de la synchro horizontale
     * vsync_len - longueur de la synchro verticale

   Une ligne "Modeline: XFree86 comprend les champs suivants :
Modeline  "1280x1024" DCF HR SH1 SH2 HFL VR SV1 SV2 VFL

   Quelques calculs sont ncessaires pour la conversion. A titre
   d'exemple voici la conversion de valeurs extraites de mon XF86Config.
Modeline  "1280x1024" 110.00 1280 1328 1512 1712 1024 1025 1028 1054

   Tout d'abord le paramtre pixclock. XFree86 l'exprime en MHz et le
   pilote de mmoire vido en picosecondes (pourquoi? mystre). On divise
   donc un million par DCF soit : 1,000,000 / 110.0 = 9090.9091

   Pour les dures horizontales :
     * left_margin = HFL - SH2
     * right_margin = SH1 - HR
     * hsync_len = SH2 - SH1

   Soit, dans notre exemple :
     * left_margin = 1712 - 1512 = 200
     * right_margin = 1328 - 1280 = 48
     * hsync_len = 1512 - 1328 = 184

   Enfin les dures verticales :
     * upper_margin = VFL - SV2
     * lower_margin = SV1 - VR
     * vsync_len = SV2 - SV1

   Soit :
     * upper_margin = 1054 - 1028 = 26
     * lower_margin = 1025 - 1024 = 1
     * vsync_len = 1028 - 1025 = 3

   Les valeurs obtenues sont passes au gestionnaire de mmoire vido.
   Dans le cas du pilote matroxfb :
video=matrox:xres:<>,yres:<>,depth:<>,left:<>,right:<>,hslen:<>,upper:<>,lower:
<>,vslen:<>

   J'ai donc insr la ligne suivante dans mon /etc/lilo.conf :
append = "video=matrox:xres:1280,yres:1024,depth:32,left:200,right:48,hslen:184
,upper:26,lower:0,vslen:3"

   Notez que le pixclock n'est pas employ ici. Il n'est ncessaire que
   si celui par dfaut ne vous convient pas. Il se fixe de la mme faon
   ainsi qu'il a t auparavant expliqu dans ce document.

19. Modifier le logo Linux

   Le logo se modifie par l'intermdiaire du fichier linux_logo.h dans le
   rpertoire include/linux. Il s'agit d'un fichier d'en-tte C peu
   vident  manipuler, cependant il existe un module Gimp spcifique:
   http://registry.gimp.org/detailview.phtml?plugin=Linux+Logo>. Il
   suffit de disposer d'une image 80x80 comprenant au plus 224 couleurs.
   On peut laisser le module crer les trois variantes (2,16,224) ou on
   les cre soi-mme et on les travaille avec le module. Le module
   rclame un rpertoire o stocker le fichier. On spcifie
   ($SRCDIR)/include/linux/linux_logo.h et une fois la retouche d'image
   termine, il ne reste plus qu' recompiler et rinstaller le noyau. Si
   le noyau gre le tampon de mmoire vido, le logo apparait au prochain
   redmarrage.

20. Davantage d'informations ?

   Que ceux qui sont intresss aillent faire un tour du cot de
   http://www.linux-fbdev.org> pour des informations relatives  la
   programmation du pilote.

   La traduction originale de ce document en franais se trouve 
   l'adresse suivante : http://www.freenix.org/unix/linux/HOWTO/>.
