Un grand merci a Thomas Parmelan qui a restaure ce fichier au peril de sa vie lorsqu'il etait perdu :-) et a J.M. Vansteene pour m'avoir reenvoye ma derniere version par mail.


1234567891123456789212345678931234567894123456789512345678961234567897123456789
8
Linux Xfree Videomodes setup HOWTO v1.01
Marc MERLIN (marcsoft@magic.metawire.com)
Septembre 1995

I Introduction 
==============

Débarrassons-nous d'abord de la partie juridique avant de rentrer dans le vif 
du sujet:

Les documents HOWTO Linux sont placés sous copyright par leurs auteurs 
respectifs. Les documents Linux HOWTO peuvent être reproduits et distribués en 
tout ou partie, par quelque moyen physique que ce soit, sans l'autorisation de 
l'auteur. Les traductions et travaux dérivés sont également permis sans 
autorisation expresse. La distribution a titre commercial est permise et même 
encouragée; cependant, l'auteur souhaiterait en être averti.
IMPORTANT: l'auteur ne peut en aucun cas être rendu responsable de quelque 
dommage ou perte causée directement ou indirectement par l'utilisation de ce 
document. Il faut savoir que même si en suivant les recommandations données, le 
risque est quasi nul, que la configuration de modes vidéos avec Xfree peut 
causer des dommages à votre moniteur et à votre carte vidéo.
Enfin, Xfree/XFree86 est une marque déposée par The XFree86 Project, Inc.


Ce document n'est pas la première aide pour la création de modes vidéo pour 
Xfree, il existe déjà différents documents dont certains ont été traduits en 
Français. Ce document se suffit à lui-même pour ceux qui savent déjà mettre en 
place le fichier de configuration de Xfree (XF86Config) et qui veulent pouvoir 
tirer simplement le meilleur parti de leur couple carte vidéo-moniteur et créer 
leurs propres modes graphiques.
Mon but premier lorsque j'ai décidé d'écrire cette aide était de fournir 
quelque chose de court et simple à utiliser avec des recettes précises en 
faisant un peu abstraction du côté technique. Après coup, je me rends compte 
que je n'ai pas tout à fait atteint mon but vu que ce document n'est pas si 
court que cela, et que je n'ai pas pu m'empêcher de donner un minimum 
d'explications techniques pour ne pas parachuter des formules qui n'auraient 
aucun sens sans explications sur leur provenance, mais j'espère qu'il vous
conviendra quand même.

N'hesitez pas a me faire part de vos critiques et ameliorations.

Pour ceux qui ont besoin d'aide supplémentaire pour d'autres aspects de la 
configuration, celle-ci se trouve sous deux formes:

1) Aide sous forme écrite
-------------------------

ConfigXF86.txt était un fichier d'aide fournit avec un programme de permettant 
de générer le fichier de configuration pour Xfree86 2.x. Je ne sais pas s'il 
est encore facilement disponible aujourd'hui, mais il a de toute façon perdu 
une partie de son utilité avec l'arrivée de XFree86 3.x.x

Un autre document, encore plus ancien :-) mais très complet, bien qu'assez 
technique, est par contre toujours disponible et d'actualité:

/usr/X11/lib/X11/doc/VideoModes.doc (present au moins dans la Slackware)

                The Hitchhiker's Guide to X386/XFree86 Video Timing
                        (or, Tweaking your Monitor for Fun and Profit)

(from an original by Chin Fang ;
        portions derive from a how-to by Bob Crosson ,
        as revised and expanded by Eric S. Raymond ;

Ce document est de loin le plus complet que je n'aie jamais lu sur le sujet et 
je lui dois une bonne partie de mes connaissances actuelles, mais je le trouve 
un peu technique et fastidieux à lire pour le néophyte pressé ;-) Je lui 
reproche aussi de présenter beaucoup de théorie qui ne colle pas toujours à la 
pratique.
C'est pourquoi j'ai rédigé ce document dans le but de donner des recettes 
simples et efficaces pour tirer le meilleur parti de son matériel vidéo (carte 
graphique & moniteur).

J'ai également une bonne nouvelle pour ceux qui sont encore un peu fâchés avec 
l'Anglais: Le Xfree86-Howto a été traduit en Français par Nat Makarevitch, et 
Jean-Michel Vansteene a traduit le Hitchhiker's guide nommé ci-dessus et a 
rajouté d'autres informations sur la constitution du fichier XF86Config dans la
Video-Howto.

2) Aide sous forme de programme
-------------------------------

Pour faire fonctionner X, comme vous devez le savoir, il faut un fichier 
/etc/XF86Config (ou /etc/X11/XF86Config pour la Redhat). Ce document ne s'occupe
que de la partie configuration graphique qui est la plus complexe. Pour le 
reste, il y a plusieurs méthodes à votre disposition:                      

a) utiliser comme base le fichier XF86Config.eg qui se trouve dans 
   /usr/X11/lib/X11 (emplacement dans la slackware) comme base et utiliser 
   ensuite le man XF86Config (les majuscules comptent !) 
b) faire ça 'à l'ancienne' en récupérant des modelines pour votre moniteur dans 
   /var/X11R6/lib/doc/Monitors et les clocks de votre carte dans 
   /var/X11R6/lib/doc/modeDB.txt (vous comprendrez plus tard)
c) utiliser le programme xf86config qui se trouve dans /usr/X11/bin.
   C'est de loin la meilleure méthode aujourd'hui d'obtenir un fichier en 
   général assez fonctionnel (du moins si vous avez une version récente de 
   Xfree).
d) utiliser, si vous avez la distribution RedHat, le program Xconfigurator

Si vous êtes pressés, la méthode b n'en reste pas moins assez efficace (si vous 
avez un doute, répondez à la question et corrigez le XF86Config généré avec 
l'aide du man cité en a).

Petite note à propos des répertoires si vous vous baladez dans l'arborescence 
de Xfree: dans les distributions Slackware, une partie se trouve sous /var    
et l'autre sous /usr. La raison en est très simple: c'est pour permettre      
d'avoir /usr sur une partition montée en read-only. Pour cette raison, tous   
les fichiers et répertoires contenant des données susceptibles de changer se  
trouvent sous /var. Vous comprendrez mieux le lien qui peut sembler bizarre   
entre /usr/X11/bin/X et /var/X11R6/bin/X qui lui ne fait que repointer sur le 
serveur graphique pour votre carte qui se trouve dans /usr/X11/bin/XF86_*.    

En général, vous n'utiliserez qu'un seul serveur graphique pour votre carte, 
mais il peut arriver, si vous avez peu de mémoire, de vouloir utiliser 2 ou 3 
serveurs suivant la résolution souhaitée: 
a) le serveur spécifique à votre carte 
b) XF86_VGA qui fonctionne en 16 couleurs et permet de loger deux fois plus de 
   points dans la mémoire vidéo de votre carte 
c) XF86_Mono qui lui fonctionne en 2 couleurs et permet de loger 8 fois plus de 
   points dans la mémoire vidéo. 

Pour passer d'un serveur à l'autre, il suffit alors de changer le lien      
/var/X11R6/bin/X et de le faire pointer sur le serveur de votre choix. (Si  
vous êtes intéresses par la structure des répertoires adoptée dans la       
plupart des distributions de Linux, je vous conseille la lecture de Linux   
Filesystem Structure dispo sur sunsite et donc les miroirs comme ftp.ibp.fr 
dans sunsite/docs/fsstnd/ ainsi que dans un endroit comparable sur Renux et 
sûrement les autres BBS linux).                                             



II Généralités 
==============

Revenons-en au fichier XF86Config: 
Maintenant que ce fichier est généré, nous allons nous occuper des modes 
graphiques. Comme vous avez pu le remarquer si vous avez utilisé la méthode c, 
on vous a demandé deux renseignements sur votre moniteur: sa fréquence de 
rafraîchissement verticale (VSF, soit Vertical Sync Frequency en Hz) et sa 
fréquence de rafraîchissement horizontale (HSF, soit Horizontal Sync Frequency 
en kHz). C'est une bonne idée de rajouter dans le fichier la bande passante du 
moniteur qui désigne la fréquence d'horloge maximale qui peut être générée par 
la carte (DCF, soit Driving Clock Frequency) cependant il semble que XFree n'en 
tienne pas compte en autorisant des modes vidéo utilisant une fréquence 
d'horloge plus grande que la bande passante spécifiée (c'est du moins le cas du 
serveur X que j'utilise dans ma distribution de Xfree).

Ces valeurs ont la fonction suivante: elles permettent d'éviter d'endommager 
l'écran en générant des modes vidéos pour lesquels il n'est pas prévu, en 
faisant office de garde fou car XFree refuse de générer un mode vidéo si celui-
ci ne rentre pas dans les spécifications du moniteur. En effet il est possible 
d'avoir une carte vidéo plus performante que l'écran et de ce fait de générer 
des fréquences trop grandes pour celui-ci, ce qui pourrait l'endommager. Dans 
la situation inverse (carte vidéo peu performante par rapport à l'écran), je ne 
peux que vous conseiller d'acheter une carte vidéo plus performante si vous 
voulez utiliser à fond les performances de l'écran, mais si vous restez avec 
votre carte actuelle, sachez que vous ne risquez pas de l'endommager en le 
faisant peu travailler :-D

L'HSF donne le nombre de lignes horizontales qui sont tracées par seconde. On 
remarque à ce niveau deux types de moniteurs: les multisynchros qui supportent 
une fourchette de fréquence (comme 30-70 kHz) et les multifréquences qui 
supportent des fréquences bien déterminées (31.5, 35.15, 35.5 kHz par exemple). 

Dans le premier cas, Xfree s'assurera uniquement qu'on se trouve dans la 
fourchette de fréquences alors que dans le 2ème cas, il vérifiera que chaque 
mode vidéo possède une HSF très proche de l'une des fréquences disponibles sur 
le moniteur.

La génération automatique du fichier XF86Config contient des modes écrans 
standards qui devraient d'après le programme fonctionner sur votre carte vidéo 
et votre moniteur. Cependant, ces modes sont loin d'être optimaux et je vous 
conseille grandement de lire la suite si vous voulez les affiner et surtout si 
vous voulez générer des modes qui exploitent plus à fond votre matériel.



III Ajustement d'une modeline déjà créée 
========================================

Venons en maintenant à la génération d'une image proprement dite: on part de la 
DCF qui est en fait la fréquence d'horloge générée par la carte vidéo. Les 
cartes vidéos possèdent plusieurs DCFs qui sont utilisées suivant les modes 
vidéos souhaités. Une fréquence de 45MHz représente à peu près l'équivalent de 
45 million de pixels tracés par seconde.
Je dis à peu près, car en fait, il y a une partie du signal vidéo qui n'est pas 
affiché et qui se trouve à droite, à gauche, en haut et en bas de la zone 
visible à l'écran.
Nous allons maintenant parler de HFL (Horizontal frame length, ce qui désigne 
la taille horizontale de l'image en points) et de VFL (Vertical frame length). 
La pratique montre que la HFL est environ 20% plus grande que la résolution 
horizontale de l'écran et que la VFL est environ 5% plus grande que la 
résolution verticale. Ceci est du au fait qu'une fois arrivé à droite de 
l'écran, il faut un peu de temps pour que le canon à électrons se repositionne 
à gauche de l'écran, il y a de plus une petite marge à droite et à gauche de la 
zone affichable. La même chose est valable lorsque l'on arrive en bas de 
l'écran.

Xfree désigne les modes écrans par une "Modeline" qui a la structure suivante:
			           1    2    3    4     5    6    7    8 
Modeline "640x480a"    45   640  688  776  808   480  481  501  502
                       ^^   ^^^            ^^^   ^^^            ^^^ 
Fréquence d'horloge en Mhz   |             HFL    |             VFL
        Résolution horizontale                    Résolution verticale

Avant de commencer, notons que pour 1, 2, 3, et 4, les valeurs doivent être des 
multiples de 8 (Xfree ajuste tout seul si vous vous trompez).
Lorsque l'on construit une telle ligne, on ajoute 32 à la résolution 
horizontale pour obtenir le chiffre 2 qui désigne la marge à droite. Le chiffre 
4 quant à lui désigne la marge à gauche et on peut également partir de la 
valeur 3 et y ajouter 32. reste le chiffre 3 qui doit être suffisamment grand 
pour que 4 soit environ 20% plus grand que 1.
Comme vous voyez, la méthode est très empirique.

Vu que 3-2 désigne le nombre d'impulsions utilisées par le canon à électrons 
pour revenir à gauche de l'écran, s'il est un peu trop faible, la partie gauche 
de l'image sort de la portion visible de l'écran et s'il est encore plus 
faible, l'image devient totalement désynchronisée.

J'ai remarqué, toujours empiriquement (ce n'est donc pas forcément vrai 
partout), que le fait d'avoir une différence 3-2 un peu trop faible est 
équivalent au fait d'avoir la différence 4-3 un peu trop faible. On peut donc 
pour simplifier, décider de garder 4=3+32 et ne jouer que sur la différence 3-2 
pour régler la marge gauche. Notons que c'est une bonne idée de régler en 
premier la marge gauche avec 2-1, puis de régler la marge droite avec 3-2. Le 
seul inconvénient, c'est que tout changement de 4-1, change l'amplitude de 2-1 
et 3-2 si bien qu'après avoir réglé la marge droite, il faut souvent réaffiner 
la marge de gauche qui a un peu changé.

Pour la résolution verticale, la méthode est exactement identique à l'exception 
du fait que la marge peut cette fois-ci être quasi nulle et que tout se joue 
sur 7-6 (bien qu'il faille parfois jouer un peu sur 6-5 pour régler la marge 
basse).

Il reste un dernier paramètre à prendre en compte: tous les nouveaux moniteurs 
ont également des réglages internes pour permettre d'ajuster l'image à l'écran. 
En théorie, les réglages par défaut devraient faire l'affaire, mais il arrive 
que l'on puisse (ou doive) s'aider de ces réglages. Dans tous les cas, ne 
changez rien si vous utilisez déjà le même mode écran sous un autre OS et 
prenez en compte le fait que si vous avez deux modes Xfree qui sont perçus de 
la même manière par votre écran, le réglage pour le 1er déréglera le 2nd. 
(J'entends par 'perçu de la même manière par le moniteur' le fait que le 
moniteur semble reconnaître le mode écran et positionne automatiquement des 
réglages mémorisés pour celui-ci (en général, vous avez un petit écran LCD qui 
confirme le changement de mode)).

Bien que ce soit pénible, il arrive d'ailleurs que lorsque l'on est sur le 
point d'avoir une image suffisamment grande, lorsqu'on rajoute encore 8 au 
nombre de la colonne 4, cela fasse changer la résolution détectée par le 
moniteur et ruine tout votre travail de mise au point vu que le moniteur essaye 
alors de cadrer l'image différemment. A ce moment, vous avez deux solutions: 
a) revenir à l'ancien mode, même s'il n'est pas parfait. 
b) mettre au point le nouveau mode (ce qui est souvent la seule solution 
   possible, car la solution a n'est pas réellement utilisable). Ne pas 
   désespérer, car par exemple, il m'est arrivé pour un certain mode d'avoir 
   deux sauts de détection par le moniteur avant de tomber sur un mode stable.

Vous savez maintenant régler une modeline. Comme il faut souvent s'y reprendre 
plus d'une fois pour avoir l'affichage souhaité, c'est une bonne idée de garder 
le XF86Config dans une fenêtre texte, et d'essayer le mode écran en lançant  
X ou startx dans une autre (garder les doigts sur CTRL-ALT-BKSP pour quitter 
X tout de suite si vous obtenez un mode désynchronisé vu qu'il pourrait      
endommager votre moniteur).                                                  

Pour gagner un peu de temps une fois que vous aurez compris la procédure,      
vous pourrez utiliser un programme du genre xvditune (présent au moins dans    
la distribution RedHat) qui permet d'ajuster simplement vos modelines en       
vérifiant le résultat à l'écran en temps réel et qui vous sort le contenu des  
modelines qui donnent ce que vous avez obtenu à l'écran. Il ne reste plus qu'à 
les recopier dans votre XF86Config.
Notez que ce programme, même s'il simplifie la vie, ne choisit pas la clock
(fréquence d'horloge de la carte video) à votre place et qu'il ne fait que 
modifier des modelines existantes (ce qui explique l'intérêt de ce qui suit).


IV Création de vos propres modes vidéos ('from scratch')
========================================================

Jusqu'à maintenant, vous avez vu comment ajuster les modes vidéos auto-générés 
par un programme comme xf86config. Cependant, si vous voulez tirer le meilleur 
parti de votre moniteur et de votre carte vidéo (en augmentant la résolution de 
vos modes écran et/ou leur stabilité), le mieux est de créer vos modelines à la 
main.

A ce stade, on ne se demande pas 'comment créer un mode vidéo avec telle 
résolution', mais plutôt l'une des deux questions suivantes: 
- Comment créer un mode vidéo avec telle résolution tout en ayant le meilleur 
  rafraîchissement vertical (ce qui équivaut au scintillement de l'écran) 
- Quelle est la meilleure résolution (à peu de choses près) que je puisse 
  obtenir, tout en gardant une vitesse de rafraîchissement verticale (RR) 
  convenable

'Convenable' dépend de vous et de vos yeux. La norme VESA préconise un 
rafraîchissement de 72Hz mais je pense qu'on peut descendre un peu en dessous. 
Personnellement, je commence à distinguer un scintillement vers 60Hz, et ça 
commence à être pénible en dessous (quand je pense que certains d'entre nous 
ont travaillé à l'époque sur des téléviseurs avec un rafraîchissement de 
50Hz... personnellement, maintenant que j'ai été habitué à bien plus, je me 
demande comment je faisais pour supporter 50Hz à l'époque :-D)

De plus, les résolutions ne sont pas prises totalement au hasard: pour le 
confort de la vue, et l'habitude on essaie de garder un rapport 4/3 entre HR et 
VR (résolution horizontale et verticale). 
Cependant, on travaille typiquement avec HFL et VFL (Horizontal et Vertical 
Frame Length), sachant qu'empiriquement HFL=HR*1.25 (HR = Horizontal 
Resolution) et VFL=VR*1.05. Pour que le faisceau parcoure une ligne à l'écran, 
il faut HFL tics d'horloge (venant de la carte vidéo). De manière similaire, 
pour tracer un écran, il faut HFL*VFL tics d'horloge. (Pour plus de détails 
techniques, consulter le Hitchhiker's Guide to Video Timing).

Au niveau de la carte vidéo, on parle de DCF (Driving Clock Frequency), à 
savoir le nombre de tics d'horloge générés par seconde. On se retrouve avec 
l'équation suivante: DCF=HFL*VFL*RR (RR étant Refresh Rate: le nombre de fois 
où votre écran est rafraîchi par seconde). Un rapide calcul montre que 
VFL=12/19*HFL, si bien qu'on se retrouve avec:

DCF   12
--- = -- x HFL²
RR    19

On fixe DCF en choisissant une 'clock' de votre carte vidéo (en général la plus 
grande qu'elle et votre moniteur supportent à un détail près pour les basses 
résolutions comme expliqué ci-dessous). Comme vous pouvez voir, on reste avec 
HFL²=k/RR, ce qui veut dire que plus vous voulez une grande résolution, plus le 
rafraîchissement de l'écran en pâtira (et l'opposé du contraire bien sûr ;-D). 
Notez que la relation n'est _pas_ linéaire.

Occupons-nous maintenant de nos deux problèmes:

A) Avoir un confort visuel maximal avec une résolution donnée
   ----------------------------------------------------------

La solution est très simple, il suffit de prendre la fréquence d'horloge de 
votre carte vidéo la plus élevée qui soit supportée par votre moniteur (notez 
qu'en général celui-ci peut supporter 20 à 30% de plus qu'indiqué dans la 
documentation), et construisez votre mode comme l'exemple suivant: 1152 x 900 
(résolution courante sous Unix vu que 128*9=1152 et 1152*900=1036800, ce qui 
fait presque 1 meg de mémoire vidéo et 1152/900= 1.28 =~ 1.25).

On crée donc la ligne suivante:

1152 1184 1408 1440  900 902 942 944

1440=1152*1.25, 1184=1152+32, et 1408=1440-32 (en fait, il faut prendre plus de 
32 pour les grandes résolutions). 944=900*1.05, 902=900+2, et 942=944-2 (ou 1 
ou 3 ou un peu plus).

Notez que ce ne sont que des valeurs de départ qu'il vous faudra ajuster en 
vous reportant à la section III: Ajustement d'une modeline déjà créée.

Même si les résolutions sont habituelles, c'est souvent mieux de ne pas partir 
d'une modeline déjà existante (dans /var/X11R6/lib/doc/modeDB.txt par exemple), 
car la clock disponible dans cette modeline est en général inférieure à celle 
que vous aviez prévu de prendre et le reste de la modeline (vu qu’il est 
inadapté à votre clock) ne sera pas convenable.

Par exemple, voici trois modelines que j'utilise, notez que l'influence de la 
DCF sur la partie horizontale de la modeline:

# VR 71Hz, 66.4 kHz hsync (fine this time) 
Modeline "1152x900a" 100   1152 1200 1472 1504    900  901  930  931

# VR 73Hz, 67.6 kHz hsync (still not wide enough, out of range also)
Modeline "1152x900b" 108   1152 1216 1532 1580    900  901  930  931

# VR 73Hz, 68 kHz hsync (not wide enough)
Modeline "1152x900c" 110   1152 1240 1552 1616    900  901  930  931

Notez au passage, que pour la dernière ligne, on a bien:
110MHz (DCF) / 1616 (HFL) = 68kHz (HSF) et 68kHz/931 (VFL) = 73.1Hz (RR)

Tout n'est quand même pas si hydilique: il y a deux facteurs qui limitent 
l'utilisation de la DCF la plus élevée possible:

1) HSF augmente avec DCF, et HSF est limitée par votre moniteur. Il est donc 
   primordial quand vous choisissez un moniteur, d'avoir une fréquence de  
   rafraîchissement la plus grande possible (au moins 65kHz, si possible plus  
   de 70kHz pour les moniteurs haut de gamme).
   Ceci est également vrai pour RR, vu que la fréquence de rafraîchissement de  
   l'image se situe en général entre 80 et 150MHz, mais ce n'est quasiment  
   jamais le facteur délimitant.
2) En général, les moniteurs multifréquences essayent de régler les paramètres 
   de l'écran en fonction de la DCF fournie et pensent en déduire la 
   résolution. Cela marche à peu près pour les modes VESA, mais peut mal 
   fonctionner pour ces modes 'fait main', un peu boostés. Un problème typique 
   est une vision 16/9ème (avec des bandes noires en haut et en bas qu'on ne 
   peut pas supprimer). Souvent, on ne peut pas changer les paramètres de 
   l'écran, car vous 'déformeriez' alors une autre résolution. Un autre 
   problème pour deux de ces modes par exemple, c'est que mon écran (Mag) me 
   dit 'Non Registred Setup' si bien que je ne peux de toute façon pas 
   sauvegarder d'éventuels réglages.

Pour le 'fun', je me suis crée le mode suivant:
# VR 119Hz, 60.1 kHz hsync (too shallow)
Modeline "640x480b"    50   640  688  824  832   480  481  504  505

L'image est cependant clairement en 16/9ème, et de toute façon un 
rafraîchissement supérieur à 80Hz est relativement inutile.

On peut donc retenir que 'pousser' la DCF pour n'est utile que pour les hautes 
résolutions afin de s'approcher des 72Hz de rafraîchissement. En effet: les 
basses résolutions standard possèdent en général déjà un rafraîchissement 
suffisant.

B) Résolution maximale supportée par un couple carte vidéo/moniteur
   ----------------------------------------------------------------

Cette fois-ci, le but du jeu est d'obtenir une résolution maximale en partant 
d'un couple carte vidéo/moniteur donné, et en imposant une troisième constante: 
le rafraîchissement vertical minimum désiré.

Reprenons la formule précédente:

DCF   12
--- = -- x HFL²
RR    19

Cette fois-ci, on fixe DCF (clock maximale de la carte vidéo qui soit également 
supportée par l'écran) et RR (valeur minimale de rafraîchissement de l'écran 
que vous êtes prêt à supporter visuellement parlant). On peut donc réécrire 
l'équation de la manière suivante:
         ________
        /
       / 19   DCF
HFL=  /  -- x ---
    \/   12   RR

De cette manière, vous obtenez HFL, puis HR, avec HR=HFL*0.8

Il faut quand même vérifier que HSF reste également dans les limites de ce que 
votre moniteur accepte, et diminuer DCF si besoin est (on a toujours 
HSF=DCF/HFL). Cependant, le but étant d'avoir HFL maximal HSF ne devrait pas 
être trop grand (à moins que vous cherchiez a obtenir un rafraîchissement 
vertical très grand avec DCF très grand pour compenser).

Exemple: ma clock ma plus rapide est 85MHz et je suis prêt à accepter une VR de 
60 HZ. Cela me donne HFL=1497 tics d'horloge, soit HR=1198 points. Je vérifie 
HSF: HSF=85.000.000/1497=56.7 kHz (ce qui ne pose pas de problème vu que mon 
moniteur supporte un rafraîchissement horizontal pouvant atteindre 65kHz).

En fait, on arrondi HR au multiple de 8 le plus proche, et on essaye de 
préférence de prendre une valeur un peu plus ronde (genre multiple de 32 et/ou 
64). En l'occurrence, on pourrait prendre 1152 (valeur standard sous Unix) ou a 
défaut 1200.

A partir de là, vous pouvez calculer les données manquantes: VFL, puis remplir 
la modeline de la même manière que vu précédemment.

Entrelacement
-------------

Pour finir, une manière d'obtenir une résolution plus grande est de 
sélectionner un rafraîchissement entrelacé. 
Le mieux avant d'expliquer est que je donne un exemple de modeline:

# VR 2*31Hz, 40.8 kHz hsync
Modeline "1528x1024" 85  1528 1608 1800 2080  1024 1160 1260 1320  Interlace

Un rapide calcul montre que le rafraîchissement vertical devrait être 31Hz, ce 
qui est bien trop faible. Pour cette raison, on rajoute le mot-clé 'Interlace' 
qui permet au rafraîchissement de se faire deux fois plus vite (62Hz) mais en 
ne rafraîchissant qu'une ligne sur deux a chaque balayage écran. Cela introduit 
un scintillement assez désagréable, mais il reste parfois utile de pouvoir 
passer dans une grande résolution pendant une période assez courte.

(Je n'ai par contre jamais vu l'utilité pratique des mots clés HSync, VSync, 
Composite et cie).



IV Exemples de fichiers XF86Config
==================================

1) Carte Cirrus Logic 5428 sur un écran générique 15"
-----------------------------------------------------

#
# Copyright (c) 1994 by The XFree86 Project, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# 
# Except as contained in this notice, the name of the XFree86 Project shall
# not be used in advertising or otherwise to promote the sale, use or other
# dealings in this Software without prior written authorization from the
# XFree86 Project.
#

# **********************************************************************
# Refer to the XF86Config(4/5) man page for details about the format of 
# this file.
# **********************************************************************

# **********************************************************************
# Files section.  This allows default font and rgb paths to be set
# **********************************************************************

Section "Files"

    RgbPath	"/usr/X11R6/lib/X11/rgb"

# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)

    FontPath	"/usr/X11R6/lib/X11/fonts/misc/"
#   FontPath	"/usr/X11R6/lib/X11/fonts/Type1/"
#   FontPath	"/usr/X11R6/lib/X11/fonts/Speedo/"
   FontPath	"/usr/X11R6/lib/X11/fonts/75dpi/"
#   FontPath	"/usr/X11R6/lib/X11/fonts/100dpi/"

EndSection

# **********************************************************************
# Server flags section.
# **********************************************************************

Section "ServerFlags"

# Uncomment this to disable the  server abort sequence

#    DontZap

EndSection

# **********************************************************************
# Input devices
# **********************************************************************

# **********************************************************************
# Keyboard section
# **********************************************************************

Section "Keyboard"

    Protocol	"Standard"

    AutoRepeat	500 5
    ServerNumLock

# Specifiy which keyboard LEDs can be user-controlled (eg, with xset(1))
#    Xleds      1 2 3

# To set the LeftAlt to Meta, RightAlt key to ModeShift, 
# RightCtl key to Compose, and ScrollLock key to ModeLock:

    LeftAlt     Meta
    RightAlt    ModeShift
    RightCtl    Compose
    ScrollLock  ModeLock

EndSection


# **********************************************************************
# Pointer section
# **********************************************************************

Section "Pointer"
    Protocol    "MouseSystems"
    Device      "/dev/mouse"


# Emulate3Buttons is an option for 2-button Microsoft mice

#    Emulate3Buttons

# ChordMiddle is an option for some 3-button Logitech mice

#    ChordMiddle

EndSection


# **********************************************************************
# Monitor section
# **********************************************************************

# Any number of monitor sections may be present

Section "Monitor"

    Identifier  "ETC"
    VendorName  "ETC"
    ModelName   "ETC Color Monitor"

# Bandwidth is in MHz unless units are specified

    Bandwidth	65

# HorizSync is in kHz unless units are specified.
# HorizSync may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    HorizSync   30 - 65

# VertRefresh is in Hz unless units are specified.
# VertRefresh may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    VertRefresh 52 - 120

# Modes can be specified in two formats.  A compact one-line format, or
# a multi-line format.


# 640x480 @ 72 Hz, 37.9 kHz hsync (VESA, almost ok)
Modeline "640x480"     31.5    640  664  704  832    480  489  492  520



# 800x600 @ 77 Hz, 48.8 kHz hsync (VESA, almost ok)
Modeline "800x600"     50     800  848  976 1024   600  604  610  632 



# 1024x768 dot clock: 75  (1160 horizontal dots min)

# VR 72 Hz, 56.8 kHz hsync (VESA, ok)
Modeline "1024x768"    75    1024 1040 1296 1320   768  768  772  792

# VR 62 Hz, 52.4 kHz hsync (8514/A, too small)
#Modeline "1024x768"    75    1024 1096 1400 1432   768  790  830  840


# 1024x768 dot clock: 80  (1232 horizontal dots min)

# VR 74 Hz, 58.8 Khz hsync (VESA, a bit too small)
#Modeline "1024x768"    80    1024 1040 1344 1360   768  768  772  794

# VR 62 Hz, 52.9 Khz hsync (VESA 48K, too small)
#Modeline "1024x768"    80    1024 1140 1444 1512   768  800  840  848


# 1024x768 dot clock: 85  (1312 horizontal dots min)

# VR 62 Hz, 50.1 kHz hsync (8514/A, too narrow)
#Modeline "1024x768"    85    1024 1224 1596 1696   768  768  770  802 
 
# VR 74 Hz, 59.0 kHz hsync (VESA, still too narrow)
#Modeline "1024x768"    85    1024 1068 1220 1440   768  768  772  794



# 1152x800 dot clock: 85  (1312 horizontal dots min)

# VR 68 Hz, 56.8 kHz hsync (VESA, pin cushion problem, too high)
Modeline "1152x800"    85    1152 1168 1416 1496    800  802  816  836

# VR 54 Hz, 52.6 kHz hsync (8514/A, too narrow)
#Modeline "1152x800"    85    1152 1232 1600 1616    800  808  830  842



# 1152x864 dot clock: 85  (1312 horizontal dots min, exact 4/3 ratio)

# VR 62 Hz, 56.8 kHz hsync (VESA, pin cushion problem, too high)
Modeline "1152x864"    85    1152 1168 1416 1496    864  866  880  910

# VR 54 Hz, 52.6 kHz hsync (8514/A, too narrow)
#Modeline "1152x864"    85    1152 1232 1600 1616    864  864  880  900



# 1152x900 dot clock: 85  (1312 horizontal dots min)

# VR 58 Hz, 56.8 kHz hsync (VESA, pin cushion problem, too high)
Modeline "1152x900"    85    1152 1168 1424 1496    900  916  926  980

# VR 54 Hz, 52.6 kHz hsync (8514/A, too narrow)
#Modeline "1152x900"    85    1152 1232 1600 1616    900  900  902  970



# 1528x1024 dot clock: 85 

# VR 2*31Hz, 40.8 Khz hsync (user mode 2)
Modeline "1528x1024" 85  1528 1608 1800 2080  1024 1160 1260 1320  Interlace

EndSection


# **********************************************************************
# Graphics device section
# **********************************************************************

# Any number of graphics device sections may be present


Section "Device"
    Identifier  "CL"
    VendorName  "Cirrus Logic"
    BoardName   "CL-5428"
    Chipset "clgd5428"    
    VideoRam    1024
    Clocks  25.23  28.32  41.16  36.08  31.50  39.99  45.08  49.87
    Clocks  64.98  72.16  75.00  80.01  85.23
    Option "fast_dram"
#    Option "fifo_aggressive"
    Option "fifo_conservative"
#    Option "noaccel"
#    Option "no_bitblt"
#    Option "linear" (won't work since I have 32Megs of RAM)
#    MemBase 0x04e00000
EndSection

Section "Device"
    Identifier  "Gen"
    VendorName  "Cirrus Logic"
    BoardName   "CL-5428 in dumb generic VGA mode"
    Chipset "generic"    
    VideoRam    1024
    Clocks  25.23  28.32  41.16  36.08  31.50  39.99  45.08  49.87
    Clocks  64.98  72.16  75.00  80.01  85.23
EndSection

# **********************************************************************
# Screen sections
# **********************************************************************

# The Colour SVGA server

Section "Screen"
    Driver      "svga"
    Device      "CL"
    Monitor     "ETC"
    Subsection "Display"
        Depth       8
        # Omit the Modes line for the "Generic VGA" device
        Modes       "1152x864" "1024x768" "800x600" "640x480" 
        #ViewPort    0 0
        #Virtual     1152 864
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "800x600" "640x480"
        #ViewPort    0 0
        #Virtual     800 600
    EndSubsection
EndSection

# The 16-color VGA server (of no use since high res don't work)

Section "Screen"
    Driver      "vga16"
    Device      "Gen"
    Monitor     "ETC"
    Subsection "Display"
        Modes       "1152x864" "1024x768" "800x600" "640x480" 
        #ViewPort    0 0
        #Virtual     1152 800
    EndSubsection
EndSection

# The Mono server

Section "Screen"
    Driver      "vga2"
    Device      "CL"
    Monitor     "ETC"
    Subsection "Display"
        Modes       "1528x1024" "1152x900"   
        #ViewPort    0 0
        #Virtual     1528 1024
    EndSubsection
EndSection


2) Carte Kelvin Farenheit (chip CL 5434 sur un écran MAG 17")
-------------------------------------------------------------

(...)

# **********************************************************************
# Monitor section
# **********************************************************************

# Any number of monitor sections may be present

Section "Monitor"

    Identifier  "MX17H"
    VendorName  "MAG"
    ModelName   "Magic View 17H"

# Bandwidth is in MHz unless units are specified

    Bandwidth	100

# HorizSync is in kHz unless units are specified.
# HorizSync may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    HorizSync   30 - 68.4

# VertRefresh is in Hz unless units are specified.
# VertRefresh may be a comma separated list of discrete values, or a
# comma separated list of ranges of values.
# NOTE: THE VALUES HERE ARE EXAMPLES ONLY.  REFER TO YOUR MONITOR'S
# USER MANUAL FOR THE CORRECT NUMBERS.

    VertRefresh 50 - 120




############# bpp 8 modes ##############

# Dot clock 45 Mhz (661 dots < HFL < 1500 dots)

# VR 110Hz, 55.7 kHz hsync 
Modeline "640x480a"    45   640  688  776  808   480  481  501  502



# Dot clock 50 Mhz (735 dots < HFL < 1666 dots)

# VR 119Hz, 60.1 kHz hsync (too shallow)
Modeline "640x480b"    50   640  688  824  832   480  481  504  505

# VR 73Hz, 48.8 kHz hsync (fine)
Modeline "800x600a"    50   800  872  976 1024   600  640  665  667 



# Dot clock 65 Mhz (955 dots < HFL < 2166 dots)

# VR 98Hz, 61.6 kHz hsync (too shallow)
Modeline "800x600b"    65   800  848 1024 1056   600  601  624  625 



# Dot clock 90 Mhz (1323 dots < HFL < 3000 dots)

# VR 84Hz, 67.7 kHz hsync 
Modeline "1024x768"   90   1024 1064 1296 1328    768  769  799  800



# Dot clock 95 Mhz (1397 dots < HFL < 3166 dots)



# Dot clock 100 Mhz (1470 dots < HFL < 3333 dots)

# VR 71Hz, 66.4 kHz hsync (fine)
Modeline "1152x900a" 100   1152 1200 1472 1504    900  901  930  931



# Dot clock 108 Mhz (1588 dots < HFL < 3600 dots)

# VR 73Hz, 67.6 kHz hsync (still not wide enough though, out of range also)
Modeline "1152x900b" 108   1152 1216 1532 1580    900  901  930  931



# Dot clock 110 Mhz (1617 dots < HFL < 3666 dots)

# VR 73Hz, 68 kHz hsync (not wide enough though)
Modeline "1152x900c" 110   1152 1240 1552 1616    900  901  930  931

# VR 61Hz, 66.1 kHz hsync
Modeline "1280x1024" 110   1280 1312 1632 1664   1024 1032 1072 1072

# VR 60Hz, 66.1 kHz hsync
Modeline "1280x1056" 110   1280 1312 1632 1664   1056 1062 1104 1104

# VR 55Hz, 60.3 kHz hsync
Modeline "1400x1056" 110   1408 1496 1784 1824   1056 1062 1104 1104

# VR 2*44Hz, 55 kHz hsync
Modeline "1600x1200" 110   1600 1720 1932 2000   1200 1202 1263 1264  Interlace


############# bpp 16 modes ##############

# Dot clock 75 Mhz (1096 dots < HFL < 2500)

# VR 72 Hz, 56.8 kHz hsync 
Modeline "1024x768_16"    75    1024 1064 1280  1312   768  768  772  800



# Dot clock 85 Mhz (1242 dots < HFL < 2833 dots)

# VR 68 Hz, 56.8 kHz hsync 
Modeline "1152x800_16"    85    1152 1200 1384 1496    800  802  816  836

# VR 62 Hz, 56.8 kHz hsync 
Modeline "1152x864_16"    85    1152 1200 1384 1496    864  866  880  910

# VR 58 Hz, 56.8 kHz hsync
Modeline "1152x900_16"    85    1152 1200 1384 1496    900  916  926  980


EndSection


# **********************************************************************
# Graphics device section
# **********************************************************************

# Any number of graphics device sections may be present


Section "Device"
    Identifier  "Kelvin"
    VendorName  "Orchid"
    BoardName   "CL-5434"
    Chipset "clgd5434"    
    VideoRam    2048
#    Clocks  25.23  28.32  41.16  36.08  31.50  39.99  45.08  49.87
#    Clocks  64.98  72.16  75.00  80.01  85.23  90.00  95.02 100.23
#    Clocks  108.03 109.77
#    Option "fast_dram"
    Option "slow_dram"
    Option "sw_cursor"
#    Option "fifo_aggressive"
    Option "fifo_conservative"
#    Option "noaccel"
#    Option "no_bitblt"
    Option "linear"
    MemBase 0x02000000
EndSection

Section "Device"
    Identifier  "Gen"
    VendorName  "Orchid"
    BoardName   "CL-5434 in dumb generic VGA mode"
    Chipset "generic"    
    VideoRam    2048
EndSection

# **********************************************************************
# Screen sections
# **********************************************************************

# The Colour SVGA server

Section "Screen"
    Driver      "svga"
    Device      "Kelvin"
    Monitor     "MX17H"
    Subsection "Display"
        Depth       8
        Modes	"1280x1056" "1400x1056" "1600x1200" "1280x1024" 
		"1152x900a" "1152x900b" "1152x900c" "1024x768" 
		"800x600a"  "800x600b"  "640x480a"  "640x480b" 
        ViewPort       0  176
        Virtual     1520 1056
    EndSubsection
    Subsection "Display"
        Depth       16
	Modes	"1152x900_16" "1152x864_16" "1152x800_16" 
		"1024x768_16" "800x600a" "640x480a" 
    EndSubsection
EndSection