Video Graphics Array (VGA) ist ein Computergrafik-Standard, der bestimmte Kombinationen von Bildauflösung und Farbanzahl (Farb-Bit-Tiefe) sowie Wiederholfrequenz definiert und 1987 von IBM eingeführt wurde.

Anders als seine Vorgänger EGA und CGA war VGA anfangs als Ein-Zoll-Prozessor zur leichteren Integration auf Hauptplatinen konzipiert, aber nicht als eigener „Adapter“. Ein unmittelbarer Vorläufer war die Multi-Color Graphics Array (MCGA) genannte Onboard-Grafik des IBM PS/2 Model 30. Diese war nur mit 64 kB Videospeicher ausgestattet, was zwar den bei Spielen beliebten 256-Farben-Modus erlaubte, der daher auch „MCGA-Modus“ genannt wurde, die VGA-typische Videoauflösung von 640×480 Pixeln jedoch nur monochrom (1 Bit pro Pixel) darstellen konnte. Auch fehlte dem MCGA die Kompatibilität zur EGA-Karte.

Da auch alle modernen Grafikkarten immer noch kompatibel zu IBMs VGA sind, verwenden auch moderne Betriebssysteme noch den VGA-Grafikmodus, z. B. während der Installation oder wenn kein zur Grafikkarte passender Treiber installiert ist.

Merkmale einer VGA-kompatiblen Grafikkarte

Grundsätzliche Eigenschaften Die VGA-Funktionalität setzt sich zusammen aus einem Videospeicher (RAM), einem Digital-Analog-Wandler und einer Prüfschaltung, welche ermittelt, ob der angeschlossene Bildschirm eine farbige oder monochrome Darstellung unterstützt.

Der 256 KB umfassende Videospeicher ist in vier Speicherbänke à 64 KB aufteilt, welche „übereinander“ im Adressraum des Mikroprozessors liegen. Befindet sich die VGA-Grafikkarte in einem Grafikmodus, können alle Pixel über den Videospeicher angesprochen werden. In einem Textmodus wird der Code jedes darzustellenden Zeichens zusammen mit seinen Attributen wie bspw. „unterstrichen“ oder „blinkend“ im Videospeicher abgelegt. In diesem Fall wird die Darstellung jedes Zeichens durch einen Pixelblock mithilfe eines Zeichensatzes bestimmt, der ebenfalls im Videospeicher abgelegt ist.

In einem Nur-Lesespeicher (ROM) befinden sich drei vordefinierte Zeichensätze mit bzw. 8 × 8 Pixeln, 8 × 14 Pixeln und 8 × 16 Pixeln je Zeichen.

Die Farben werden indirekt mithilfe einer frei definierbaren Farbpalette generiert, die jedem Farbcode im Videospeicher eine Zahl von 0 bis 23×6 − 1 = 262143 zuordnet, die final die darzustellende Farbe durch den Digital-Analog-Wandler bestimmt. Dieser sendet im Fall eines angeschlossenen Farbbildschirms diesem drei der Farbe entsprechende analoge Farbsignale (Rot-, Grün und Blauanteil der Farbe).

Hardware-Ebene VGA-Anschluss mit analoger Übertragung der RGB-Signalkomponenten (anders als bei EGA, ähnlich wie beim PGC), was (abhängig von der Karte oder Signalquelle) prinzipiell die Darstellung unendlich vieler Farben und Zwischenabstufungen in Verbindung mit einem geringen Schaltungsaufwand bei einem Röhrenmonitor erlaubt. Allerdings ist die Bildqualität stark vom Schaltungsaufbau und der Bauteilequalität der Karte sowie der anschließenden Übertragungskabel zur Bildröhre abhängig.

Anzeigemodi mini|VGA und weitere Standards +VGA-BIOS-ModiModusTypFormatFarbanzahl0hText40 × 2516 (monochrom)1hText40 × 25162hText80 × 2516 (monochrom)3hText80 × 25164hCGA-Grafik320 × 20045hCGA-Grafik320 × 2004 (monochrom)6hCGA-Grafik640 × 20027hMDA-Text80 × 253 (monochrom)DhEGA-Grafik320 × 20016EhEGA-Grafik640 × 20016FhEGA-Grafik640 × 3503 (monochrom)10hEGA-Grafik640 × 3501611hVGA-Grafik640 × 480212hVGA-Grafik640 × 4801613hVGA-Grafik320 × 200256 Als Textmodi werden vor allem 80 × 25 Zeichen (16 Pixelzeilen pro Zeichen) und 80 × 50 Zeichen (8 Pixelzeilen pro Zeichen) genutzt, beide mit einer zugrundeliegenden Bildauflösung von 720 × 400 Pixel.

Mode-X und Mode-Y +VGA-Modi ohne BIOS-UnterstützungModusTypFormatFarbanzahlBemerkungMode-XVGA-Grafik320 × 240256Quadratische Pixel (Pixelseitenverhältnis hat den Wert eins)Mode-YVGA-Grafik320 × 200256Längliche Pixel wie im Modus 13h (Pixelseitenverhältnis ist kleiner als eins) Im Gegensatz zum einfacher zu programmierenden Modus 13h ist im Mode-X und Mode-Y Page Flipping möglich, und es kann der gesamte Videospeicher verwendet werden. Das erlaubt es, für den Bildaufbau Double Buffering zu verwenden oder oft benötige 2D-Grafiken als Sprites abzulegen, um auf diese schnell, wie bei einem Cache, zurückzugreifen. Dies erlaubt performantere Animationen, und die beim Mode-X quadratischen Pixel vereinfachen die Erstellung von Grafiken, bei denen es auf ein richtiges Seitenverhältnis ankommt.

Der größte Vorteil des Mode-X ist allerdings, dass er einen parallelen Zugriff auf vier Pixel gleichzeitig erlaubt, da bei Standard-VGA die Hardware grundsätzlich in vier Speicherbänke bzw. Ebenen von je 64 KiB pro Speicherbank organisiert ist, wovon jede Ebene in Vierer-Schritten die Pixel in der Horizontalen abbildet. D.h. das erste Byte in Ebene 0 bildet bspw. den 0., 4., 8. und 12. Pixel ab, die Ebene 1 bildet den 1., 5., 9. und 13. Pixel ab. Man nennt diese Zugriffsart auch planaren Zugriff; dieser ist auch als unchained mode bekannt. Durch diesen parallelen Zugriff ist Mode-X viermal so schnell wie Mode 13h, allerdings auch komplizierter zu programmieren.

Mode-X und Mode-Y unterscheiden sich in der Auflösung und beim Format der Pixel. Mode-X weist quadratische Pixel auf, während im Mode-Y die Pixel höher als breit sind, wie auch bereits im Modus 13h.

Flexibilität des VGA-Anschlusses Die Bildauflösung und Parameter der Bildausgabe über den klassischen VGA-Anschluss lassen sich ziemlich frei einstellen. Trotzdem lassen sich TV-Röhrengeräte prinzipiell nicht an einer Standard-VGA-Karte betreiben (kein CSync = erfordert Zusatzelektronik, etwas andere Pegel = erfordert Zusatzelektronik, kein Zeilensprung = nur 240…288 Zeilen-Darstellung möglich).

Für herkömmliche analoge VGA-Röhrenmonitore geeignet sind jedoch folgende Varianten: Pixelfrequenz: 28,322 MHz oder 25,175 MHz halbierbar Zeilenfrequenz: 31,4688 kHz ist der Standardwert. Exakt 80 % der Zeilenzeit wird zur Bilddarstellung genutzt. Vollbilddarstellung 70,08 Bilder/s bei maximal 400 sichtbaren Zeilen oder 59,94 Bilder/s bei maximal 480 sichtbaren Zeilen Die Anzahl der sichtbaren Zeilen lässt sich auf 350 reduzieren. Dem Monitor wurde das durch Änderung der Polarität der Sync-Signale übermittelt (+hsync -vsync). Genutzt für EGA-Simulation Eine weitere Möglichkeit, die Auflösung zu verringern, besteht darin, Zeilen doppelt darzustellen – aus 480 Zeilen werden so 240, oder aus 400 Zeilen werden 200 Zeilen. Genutzt für CGA-Simulation Pro Zeile sind 640 oder 720 sichtbare Pixel üblich (je nach gewähltem Pixeltakt). Dieser lässt sich halbieren auf 320 bzw. 360 Pixel. Im 256-Farben-Modus wird der Pixeltakt ebenfalls immer halbiert. Speicheraufbau 64 kB × 32 bit, erweiterte Karten 128 kB × 32 bit. Grafikmodi lesen alle 8 Takte ein 32-Bit-Wort aus. Modi mit bis zu 16 Farben generieren daraus 8 Pixel, 256-Farben-Modi 4 Pixel. Bei Textmodi kommt ein zweiter Zugriff für das Auslesen der Zeichenrepräsentation dazu.

Der Fortschritt des VGA-Anschlusses war die analoge Übertragung des Signals zum Monitor. Damit überwand man das Manko des CGA- bzw. EGA-Anschlusses, die prinzipiell nur 16 bzw. 64 Farben (bei SW: 3 bzw. 4 Graustufen) übertragen konnten. VGA-Anschlüsse konnten theoretisch beliebig viele Farben anzeigen, Standard-VGA-Karten haben 262144 davon genutzt.

Erst ein Jahrzehnt später hat sich die analoge Übertragung als Manko herausgestellt. Für TFT-Displays mit einzeln ansteuerbaren Pixeln führt sie bei hohen Auflösungen (spätestens bei 1600×1200 Pixeln) zu Unschärfe und Unruhe (Moiré) im Bild. Die Nachfolger heißen DVI-D, HDMI und DisplayPort. HDMI ist eine Weiterentwicklung von DVI; HDMI-Signale sind zu DVI abwärtskompatibel.

Kompatibilität zu MDA-, CGA- und EGA-Karten VGA war weitgehend abwärtskompatibel zu allen bisherigen IBM-Grafikkarten für PCs; beim Zugriff über das BIOS war die Kompatibilität besonders hoch, aber auch bei direkter Registerprogrammierung funktionierten die meisten Programme weiterhin. Insbesondere musste der Benutzer nicht mehr zwischen Farbfähigkeit (CGA, EGA) und hoher Textqualität (MDA) wählen. Für VGA wurden von Anfang an sowohl monochrome (meist weiße) als auch farbige Monitore angeboten.

Farbpaletten CGA bot 16 feststehende Farben. EGA bewahrte die CGA-Kompatibilität und erlaubte trotzdem 64 Farben in allen Modi, indem die 16 Farbnummern der CGA als Zeiger auf eine sogenannte Palette, eine Tabelle mit 16 Einträgen, interpretiert wurden; die Einträge der Palette enthielten dann die EGA-Farbnummern im Bereich 0 bis 63. Beim Start des Systems wurden dort Farbnummern eingetragen, die den gleichen Farbeindruck wie die 16 CGA-Farben boten; Programme, die den EGA-Standard kannten, konnten die Eintragungen aber ändern. Somit konnten zwar weiterhin nur 16 Farben gleichzeitig dargestellt werden, aber aus einer Gesamtmenge von 64 Farben.

mini|Defaultpalette im 256-Farben-Modus

VGA-Grafikkarten unterstützen 262.144 mögliche Farben. Bei VGA-Karten existiert die erwähnte Palette mit 16 Einträgen ebenfalls – die darin enthaltenen Werte im Bereich 0 bis 63 werden aber im Gegensatz zu EGA nicht direkt als Farbnummern, sondern wiederum als Zeiger auf die ersten 64 Einträge einer weiteren Tabelle interpretiert. Diese VGA-Farbpalette hat nun 256 Einträge im Bereich von 0 bis 262143. Auch hier werden beim Start in die ersten 64 Einträge solche VGA-Farben eingetragen, die den 64 EGA-Farben optisch gleichen, aber von Programmen, die VGA kennen, verändert werden können. Durch dieses zweistufige Verfahren können auch in den CGA- und EGA-kompatiblen Modi der VGA alle VGA-Farben dargestellt werden, allerdings weiterhin nur jeweils 16 davon gleichzeitig. Im 256-Farb-Grafikmodus werden die Daten im Bildschirmspeicher dagegen direkt als Zeiger auf die 256-Einträge-Tabelle interpretiert und die 16-Einträge-Tabelle nicht verwendet.

Bei einigen CGA-kompatiblen Modi verwendet VGA sogar eine dreistufige Palette, da auch die CGA-Karte in diesen Modi bereits eine, allerdings nicht frei wählbare, Palette von 2 oder 4 aus 16 Farben verwendet hatte.

Textmodus VGA-Grafikkarten stellen den Textmodus mit 720 Punkten pro Zeile dar, wie schon die MDA-Karte, aber im Gegensatz zu CGA und EGA, die 640 Punkte verwenden. Jedes der 80 Zeichen pro Zeile wurde im Vergleich zu CGA/EGA um einen Pixel auf 9 Pixel verbreitert, damit erhöht sich der Zeichenabstand und somit die Lesbarkeit. Da im Zeichenspeicher jedoch weiterhin nur acht Spalten gespeichert waren, wurde das 9. Pixel entweder leer gelassen oder durch Wiederholung des 8. Pixel erzeugt. Die Entscheidung darüber wird nach der Nummer des Zeichencodes getroffen – die Zeichen 0xC0 bis 0xDF, welche in der Codepage 437 Blockgrafikzeichen mit Anschluss nach rechts enthalten, benutzen die Wiederholung des 8. Pixels, bei den anderen ist die 9. Spalte immer leer. Dadurch ergeben sich auch die typischen vertikalen Streifen bei einigen Programmen (wie z. B. Turbo Pascal ab Version 6), die den Hintergrund mit Grauzeichen füllen. Für die Verwendung von anderen Codepages, die in den Positionen 0xC0 bis 0xDF gewöhnliche Druckzeichen enthalten, kann die Wiederholung des 8. Pixels auch komplett abgeschaltet werden (diese Möglichkeit gab es bei der MDA, deren Codepage unveränderlich auf die 437 festgelegt war, noch nicht).

Wie schon bei der EGA-Karte steuert das Bit 3 des Attribut-Bytes die Auswahl aus zwei Zeichensätzen. Somit ist es mit benutzerdefinierten Zeichensätzen möglich, bis zu 512 verschiedene Zeichen gleichzeitig im Textmodus darzustellen.

Der eingebaute Zeichengenerator unterstützt benutzerdefinierte Zeichensätze, die 1 bis 32 Pixel hoch sein können. Während die üblichen benutzerdefinierten Zeichensätze die üblichen Zeichengrößen von 8×8, 8×14 oder 8×16 Pixeln benutzen, existieren auch kleinere Schriften, die etwa bei 5 Pixel hohen Zeichen bis zu 96 Zeichenzeilen erlauben würden, die aber kaum noch lesbar sind.