# Contrôleur d'affichage vidéo

Dans un système informatique, un contrôleur d'affichage vidéo (anglais : Video Display Controller), également appelé un processeur vidéo (anglais : video processor) ou processeur d'affichage (anglais : display processor) est une unité de traitement spécialisée dans la vidéo. Son rôle peut être divers selon les architectures matérielles, allant de la gestion de la superposition d'éléments graphiques au défilement pixel à pixel. Il se distingue généralement du processeur graphique (GPU) 2D ou 3D, qui est une unité de traitement chargée d'opérations géométriques, telles que les tracés de droites, triangles, textures et différents filtrages logiques.

## Générations 8 bits

Sur les micro-ordinateurs 8 bits, il était chargé de la lecture de la mémoire et de l'envoi au connecteur vidéo. Dans ce type de processeur il y a une gestion plus ou moins complexe des couleurs, des fonctions de type gestion dynamique des sprites, évitant des assemblages en mémoire coûteux en traitement. Il gère également la gestion de la zone mémoire à afficher en fonction de la position du canon à électrons sur l'écran. Sur certains modèles il est également possible de changer la palette de couleur en fonction de la position verticale.
Un processeur vidéo peut également gérer des décalages mémoire pixel à pixel (bit à bit si monochrome, plus important si en couleur) pour le défilement (anglais : scrolling) de décor dans un jeu vidéo. Par exemple, le registre de contrôle 18 du VDP des MSX 2 et supérieurs permet de préciser la position des décalages horizontal et vertical, chacun sur 4 bits, permettant donc un décalage de 16 pixels (de -7 à 8). La commande basic SET ADJUST sert à modifier ce registre.
Dans le cas de la console de jeu de Nintendo, NES, un processeur appelé « PPU » a cette fonction : il est chargé de récupérer, dans la cartouche du jeu, les tuiles du décor (organisé en 2 banques de 4 Ko, pour un total de 8 Ko), les sprites et palettes (qu'il stocke dynamiquement dans ses 4 octets de mémoire). Les tables des états graphiques du jeu sont situés dans 2 Ko de SRAM de la carte mère, appelés « Nametables ». Il n'y a pas de tampon d'image, l'image est construite dynamiquement, de façon synchronisée avec le balayage du canon à électron.

## Générations 16 bits

À partir des ordinateurs 16 bits, sont apparus une gestion de multiples calques, appelés plan de bits (de anglais : bitplane), sur Amiga, ou tampon (plus généralement), le processeur vidéo étant chargé, comme pour les sprites, d'afficher l'un ou l'autre en fonction de la transparence des plans les plus en avant.

## Aujourd'hui

Dans les processeurs vidéo modernes que l'on trouve sur les SoC, on retrouve généralement le principe de sprite matériel (notamment utilisé pour le curseur de la souris), de mixage de calques graphiques (avec la gestion de différents types de mixages logiques) et également des fonctions d'encodage et décodage de flux vidéos (que ce soit d'une source provenant du réseau ou du contenu d'un fichier).
Sur les systèmes informatiques utilisant des processeurs d'architecture x86_64, le décodage vidéo est plutôt fait par des processeurs graphiques aux circuits plus génériques. Le décodage y a donc un moins bon rendement en termes de calcul et d'énergie nécessaire.

## Implémentations

* Les rôles sont répartis entre les puces Denise (MOS 8362) et Agnus (MOS 8361 ou MOS 8367) sur l'Amiga ;
* Mali-V500 d'ARM, permettant l'encodage, le décodage et des tampons compressés.
* SHIFTER (plusieurs déclinaisons selon les modèles ST, STe et TT) et VIDEL (Falcon030 uniquement) sur les ordinateurs de la marque Atari
* VDP sur MSX (et ColecoVision), incluant la famille Texas Instruments TMS9918, le Toshiba T6950, et les Yamaha YM2220, V9938 et V9958