Les cartes graphiques/Les cartes d'affichage

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Les cartes graphiques sont des cartes qui s'occupent de communiquer avec l'écran, pour y afficher des images. Au tout début de l'informatique, ces opérations étaient prises en charge par le processeur : celui-ci calculait l'image à afficher à l'écran, et l'envoyait pixel par pixel à l'écran, ceux-ci étant affichés immédiatement après. Cela demandait de synchroniser l'envoi des pixels avec le rafraichissement de l'écran. Pour simplifier la vie des programmeurs, les fabricants de matériel ont inventé des cartes d'affichage, ou cartes vidéo. Avec celles-ci, le processeur calcule l'image à envoyer à l'écran, et la transmet à la carte d'affichage. Celle-ci prend alors en charge son affichage à l'écran, déchargeant le processeur de cette tâche.

Cartes d'affichage en mode texte[modifier | modifier le wikicode]

Illustration du mode texte.

Les premières cartes graphiques fonctionnaient en mode texte, c'est à dire qu'elles traitaient des caractères et non des pixels. Il était impossible de modifier des pixels individuellement. A la place, la carte graphique pouvait modifier des paquets de pixels, des sortes de pavés rectangulaires de pixels. Chaque pavé affiche un caractère, ce qui induit que tout les caractères ont une taille fixe, que ce soit en largeur ou en hauteur. Par exemple, chaque caractère occupera 8 pixels de haut et 5 pixels de large. Ce mode texte est toujours présent dans nos cartes graphiques actuelles et est encore utilisé par le BIOS ou par les écrans bleus de Windows.

VGAText3

Les caractères sont des lettres, des chiffres, ou des symboles courants, même si des caractères spéciaux sont disponibles. Ceux-ci sont encodés dans un jeu de caractère spécifique (ASCII, ISO-8859, etc.). L'ensemble des caractères gérés par une carte graphique (y compris ceux crées par l'utilisateur) s'appelle la table des caractères. Certaines cartes graphiques permettent à l'utilisateur de créer ses propres caractères en modifiant cette table. La mémoire de caractères est une mémoire ROM/EEPROM. Dans cette mémoire, chaque caractère est représenté par une matrice de pixels.

Représentation d'un caractère à l'écran et dans la table de caractère.

Ces caractères se voient attribuer des informations en plus de leur code ASCII. A la suite de leur code ASCII, on peut trouver un octet qui indique si le caractère clignote, sa couleur, sa luminosité, si le caractère doit être souligné, etc. Une gestion minimale de la couleur est parfois présente. La carte graphique contient un circuit chargé de gérer les attributs des caractères : l'ATC (Attribute Controller), aussi appelé le contrôleur d'attributs.

Le text buffer est une mémoire dans laquelle les caractères à afficher sont placés les uns à la suite des autres. Chaque caractère est alors stocké en mémoire sous la forme d'un code ASCII suivi d'un octet d'attributs. Le processeur va envoyer les caractères à afficher un par un, ceux-ci étant accumulés dans le text buffer au fur et à mesure de leur arrivée.

Vient ensuite le CRTC (Cathod Ray Tube Controller) ou contrôleur de tube cathodique. Celui-ci gère l'affichage sur l'écran proprement dit. Sur les vieux écrans CRT, les pixels sont affichés les uns après les autres, ligne par ligne, en commençant par le pixel en haut à gauche. Pour une carte en mode texte, ce contrôleur va envoyer ces pixels les uns après les autres, en utilisant la mémoire de caractères et le text buffer. Pour commencer, il se souvient du prochain pixel à afficher grâce à deux registres : un registre X pour la ligne, et un registre Y pour la colonne. Évidemment, nos deux registres de ligne et de colonne sont incrémentés régulièrement afin de passer au pixel suivant. Le CRTC va déduire à quel caractère cela correspond dans le text buffer avec quelques bits des registres X et Y, le lire et l'envoyer à la mémoire de caractères. Là, le code du caractère, et les bits restants des deux registres sont utilisés pour calculer l'adresse mémoire du pixel à afficher. Ce pixel est alors envoyé à l'écran.

Enfin, le pixel à afficher est envoyé à l'écran. Ceci dit, les écrans assez anciens fonctionnent en analogiques et non en binaire, ce qui demande de faire une conversion. C'est le rôle du DAC, un convertisseur qui traduit des données binaires en données analogiques. Sur les écrans récents, ce DAC n'existe pas : les données sont envoyées sous forme numérique à l'écran, via une interface DVI ou autre, et sont automatiquement gérées par l'écran.

Architecture interne d'une carte d'affichage en mode texte

Cartes d'affichage en mode graphique[modifier | modifier le wikicode]

Les cartes en mode texte ont rapidement été remplacées par des cartes graphiques capables de colorier chaque pixel de l'écran individuellement. Il s'agit d'une avancée énorme, qui permet beaucoup plus de flexibilité dans l'affichage. Ces cartes graphiques étaient conçues avec des composants assez similaires aux composants des cartes graphiques à mode texte. Divers composants sont toutefois modifiés.

  • La mémoire de caractères a évidemment disparu.
  • La mémoire vidéo stocke une image à afficher à l'écran, et non des caractères : on appelle cette mémoire vidéo le Frame Buffer.
  • Le CRTC peut gérer différentes résolutions, quelques registres permettant de configurer la résolution voulue.

La couleur fait son apparition. Toutefois, ces cartes graphiques codaient ces couleurs sur 4 bits, 8 bits, à la rigueur 16. Dans ces conditions, les couleurs n'étaient pas encodées au format RGB habituel : chaque couleur se voyait attribuer un numéro prédéterminé lors de la conception de la carte graphique. Vu que les écrans ne gèrent que des données au format RGB, ces cartes graphiques devaient effectuer la conversion en RGB avec un circuit, la Color Look-up Table. Dans le cas le plus simple, il s'agissait d'une ROM qui mémorisait la couleur RGB pour chaque numéro envoyé en adresse. Dans d'autres cas, cette mémoire était une RAM, ce qui permettait de modifier la palette au fur et à mesure : on pouvait ainsi changer les couleurs de la palette d'une application à l'autre sans aucun problème. Cette Color Look-up Table était alors fusionnée avec le DAC, et formait ce qu'on appelait le RAMDAC.

Architecture interne d'une carte d'affichage en mode graphique