# Framebuffer

Un framebuffer (soit en français tampon de trame ou mémoire d'image) est un équipement de sortie vidéo qui commande un affichage vidéo à partir d'un tampon mémoire contenant une trame complète de données. Les informations dans le tampon mémoire sont en général les valeurs des composantes de couleurs pour chaque pixel (chaque point à afficher sur l'écran). Les valeurs sont habituellement mémorisées sous les formats 1-bit monochrome, 4-bit palettisées, 8-bit palettisées, 16-bit highcolor ou 24-bit truecolor (vraies couleurs). Un canal alpha (alpha channel) est parfois utilisé pour l'information de transparence associée à chaque pixel. La quantité de mémoire nécessaire à la commande d'un framebuffer dépend de la résolution, de la profondeur de couleur (color depth) et de la taille de la palette.
Les framebuffer diffèrent significativement des affichages graphiques vectoriels (vector graphics displays) qui étaient communément utilisés avant l'arrivée des framebuffer. Dans un affichage vectoriel, seules les valeurs des extrémités des primitives graphiques sont stockées. Le faisceau électronique du tube d'affichage est alors dirigé d'extrémité en extrémité, traçant une ligne analogique entre ces points. Dans le cas du framebuffer, le faisceau électronique (si la technologie d'affichage est l'écran cathodique) est dirigé pour tracer de gauche à droite et de haut en bas de façon à balayer l'ensemble de l'écran, de la même façon qu'un téléviseur dans le cas de la transmission télévisée. En même temps que cette opération de balayage, l'information de couleur pour chaque point de l'écran est extraite du framebuffer, créant ainsi un ensemble d'éléments discrets (non continus) d'image (pixels).

## Historique

Les chercheurs en informatique ont discuté pendant longtemps les avantages théoriques d'un framebuffer, mais étaient incapables de fabriquer une machine possédant suffisamment de mémoire. En 1969, Joan Miller des Bell Labs a expérimenté la première réalisation de framebuffer. L'appareil affichait une image ayant une profondeur de couleur de 3 bits. Cependant, ce n'est pas avant les années 1970 que les progrès des mémoires à circuit intégré rendirent pratiquement réalisable le premier framebuffer capable de mémoriser une image vidéo standard.
En 1972, Richard Shoup a développé le système SuperPaint (en) au Xerox PARC. Ce système avait 311040 octets de mémoire et pouvait stocker une image de 640 par 480 pixels avec une profondeur de couleur de 8 bits. Les mémoires étaient réparties sur 16 circuits imprimés, chacun ayant plusieurs puces de registres à décalage de 2-kilobit. Bien que fonctionnelle, cette conception imposait que le framebuffer soit implémenté comme un registre à décalage de 307200 octets dont le rythme était synchronisé avec celui du signal de balayage. Le principal inconvénient de cette solution était que la mémoire n'était pas à accès aléatoire. En fait, une position ne pouvait être accédée que lorsque la ligne balayée et le pixel étaient déroulés. Ce qui impliquait un temps d'attente maximum de 33 ms pour écrire dans un framebuffer.
Shoup a aussi utilisé le framebuffer de SuperPaint pour créer un des premiers systèmes numériques de capture d'image. En synchronisant le signal de sortie avec le signal d'entrée, il pouvait réécrire chaque pixel qui entrait dans le registre à décalage. Shoup a aussi expérimenté la modification du signal de sortie en utilisant les tables de couleur (color table). Ces tables permettaient au système SuperPaint de produire une large variété de couleurs en dehors des limites des 8 bits contenus à l'origine. Cette solution sera ensuite largement utilisée dans les framebuffers des calculateurs.
En 1974 Evans & Sutherland réalisaient le premier framebuffer commercialisé, son coût était de 15 000 dollars environ. Il pouvait traiter des résolutions jusqu'à 512 par 512 pixels en niveaux de gris codés sur 8 bits. Il devint une bénédiction pour les chercheurs en informatique graphique qui n'avaient pas les moyens de créer leur propre framebuffer. L'Institut de technologie de New York créera plus tard le premier système à profondeur de couleur de 24 bits en utilisant 3 des framebuffers Evans & Sutherland. Chacun des framebuffer était connecté à une des composantes RVB (une pour le rouge, une pour le vert et une pour le bleu), avec un ordinateur contrôlant les trois.
Les progrès rapides de la technologie des circuits intégrés ont rendu possible l'implémentation de framebuffers limités en couleurs dans beaucoup d'ordinateurs personnels dès la fin des années 1970 (par exemple Apple II). Bien qu'initialement critiqués pour leur faible performance comparée aux équipements graphiques plus évolués comme celui de l'Atari 400, les framebuffers sont finalement devenus la norme dans tous les ordinateurs personnels. Aujourd'hui, pratiquement tous les ordinateurs ayant des capacités graphiques utilisent un framebuffer pour générer le signal vidéo.
Les framebuffers sont également devenus fréquents dans les stations de travail évoluées au cours des années 1980. SGI, Sun Microsystems, HP, DEC, IBM, tous ont créé des framebuffers pour leurs ordinateurs. Ces framebuffers étaient en général de bien meilleure qualité que ceux que l'on trouvait dans les home computers. Ils étaient couramment utilisés en télévision, imprimerie, modélisation par calculateur et graphique 3D.
Amiga, de par leur position dans les techniques graphiques, a créé un vaste marché de cartes graphiques basées sur des framebuffers dans les années 1980. Il est important de mentionner la carte graphique de l'Amiga A2500 Unix qui était en 1991 le premier ordinateur qui implémentait un serveur X11 en tant qu'environnement graphique, ainsi que l'interface graphique Open Look en haute résolution (1 024×1 024 ou 1 024×768 en 256 couleurs).