Framebuffer HOWTO: Le pilote de mémoire vidéo sur les Atari m68k

Cette partie décrit les options offertes par le pilote de mémoire vidéo sur les machines Atari m68k.

6.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 employés sur les modèles TT tandis que vga2, vga4, vga15, vga256, falh3 et falh16 ne servent que sur le Falcon. Lorsqu’une option video=xxx est donnée au noyau, en l’absence toute sous-option, le noyau teste les modes vidéo dans l’ordre suivant jusqu’à ce qu’il en trouve un d’adapté au matériel :

  • ttmid
  • tthigh
  • vga16
  • sthigh
  • stmid

Vous pouvez préciser le mode à employer pour éviter l’auto-détection. Par exemple, video=vga16 procure un écran en 640 par 480 avec une profondeur de 4 bits.

6.2 Sous options supplémentaires sur les machines Atari m68k

Options supplémentaires disponibles avec le paramètre 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 utilisée par défaut si la dimension verticale de l’écran est inférieure à 400 pixels sans quoi la fonte VGA8x16 est employée.
  • internal – très intéressant. Se reporter à la section suivante.
  • external – idem.
  • monitorcap – description des modes multisync disponibles. PROSCRIT pour les moniteurs à fréquence fixe.

6.3 Sous option « internal » sur les machines Atari m68k

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

L’option indique les fonctionnalités ajoutés par certains périphériques vidéo tels les modes d’OverScan. (xres) et (yres) fournissent les dimensions étendues de l’écran. Si vos modes d’OverScan nécessitent une bordure noire, vous devrez expliciter les trois derniers arguments de la sous-option internal:. (xres_max) correspond à la plus grande dimension de ligne acceptée par le matériel tandis que (yres_max) donne le nombre maximal de lignes et (offset) le décalage en octets entre la partie visible de la mémoire vidéo et son emplacement physique.

Les matériel vidéo étendu requiert souvent une activation qui fait appel aux options "switches=*". [L’auteur apprécierait de recevoir des informations supplémentaires à ce sujet. La documentation m68k du noyau manque de clarté sur ce sujet et l’auteur ne possède pas d’Atari! Des exemples seront également les bienvenus.]

6.4 Sous option « external » sur les machines Atari m68k

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

On rentre dans le compliqué. Le présent document essaye d’être aussi clair que possible mais l’auteur n’a rien contre une relecture afin d’être sûr qu’il n’a rien loos^H^Hupé.

Cette sous-option indique que vous disposez de périphériques vidéo externes (vraisemblablement une carte vidéo) et indique comment Linux doit l’employer. Normalement, le noyau se limite à ce qu’il peut apprendre des périphériques vidéo internes. Vous devez donc lui fournir tous les paramètres nécessaires afin qu’il soit en mesure de gérer des périphériques externes. Il y a deux limitations : vous basculerez dans le mode adéquat avant l’initialisation et une fois celle-ci effectuée, vous ne pourrez pas changer de mode.

Les trois premiers paramètres sont évidents. Ils correspondent aux dimensions de la zone d’affichage : hauteur et largeur en pixel suivies de la profondeur. Le paramètre de profondeur servant d’exposant au nombre 2 donne le nombre de couleurs. Par exemple, pour un affichage en 256 couleurs, vous préciserez un paramètre de 8. Le paramètre dépend de l’adaptateur graphique externe bien que vous soyez de toute façon limité par le matériel.

READ  A Tale in Writing LG #28

Vous devez ensuite décrire au noyau l’organisation de la mémoire vidéo via le paramètre (org).

  • n – plans disposés normalement, les uns à la suite des autres.
  • i – plans entrelacés, c’est à dire 16 bits du premier plan, puis du suivant etc. Seuls les modes vidéo natifs d’Atari utilisent ça et aucune carte vidéo ne le gère.
  • p – pixels regroupés. Les bits constitutifs des différents plans d’un même pixel se suivent. Ce mode est le plus courant en 256 couleurs.
  • t – couleurs vraies. Il s’agit du mode précédent en l’absence de toute table de correspondance des couleurs. Ces modes sont généralement sur 24 bits et procurent quelques 16,8 millions de couleurs.

A coté de ça, le paramètre (org) a une signification bien différente pour les modes monochromes.

  • n – couleurs usuelles, c’est à dire 0 pour le blanc et 1 pour le noir;
  • i – couleurs inversées, c’est à dire 0 pour le noir et 1 pour le blanc.

L’élément suivant ayant trait au périphérique vidéo fixe l’adresse de base de la mémoire vidéo. Il est donné par le paramètre (scrmem) sous forme hexadécimal (préfixé par 0x). Vous devriez trouver cette information dans la documentation fournie avec le périphérique.

Le paramètre suivant, (scrlen), fournit au noyau la taille de la zone de mémoire vidéo. S’il est absent, il est calculé à partir des valeurs de (xres), (yres) et (depth). En bref, il ne sert à rien de préciser une valeur. Si vous donnez à sa suite le paramètre (vgabase), laissez le champ vide en rentrant deux point-virgules. Autrement, oubliez le.

Le paramètre (vgabase) est optionnel. En son absence, le noyau ne pourra lire ni écrire le moindre des registres de couleur du périphérique et il vous faudra donc installer les couleurs appropriées avant le démarrage de Linux. Si la carte est compatible VGA, vous pouvez donner au noyau l’adresse où se trouvent les registres vidéo de façon à ce qu’il modifie lui-même les tables des couleurs. Vous trouverez cette information dans la documentation fournie avec le périphérique. Afin d’être clair, (vgabase) est une adresse de base, donc alignée sur un multiple de 4k. Pour l’accès en lecture ou en écriture aux registres, le noyau utilise une plage d’adresses comprises entre (vgabase) + 0x3c7 et (vgabase) + 0x3c9. La valeur est donnée en hexadécimal et doit être préfixée par 0x (tout comme (scrmem)).

(colw) ne sert que si (vgabase) est spécifié. 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 défaut est de 6 bits mais il est courant d’en spécifier 8.

(coltype) s’emploie en conjonction avec (vgabase). Il précise aux noyau le type des registres de la carte graphique. Actuellement, deux modèles sont gérés : vga et mv300. Par défaut, vga est employé.

(xres_virtual) n’est nécessaire qu’avec les cartes ProMST/ET4000 pour lesquelles la longueur physique des lignes diffère de leur taille visible. Avec une ProMST, on donnera la valeur 2048 tandis que pour l’ET4000 cela dépendra de l’initialisation de la carte vidéo.