VGA (inglise keelesVideo Graphics Array ehk video graafikamassiiv; vahel ka viidatud kui graafikaadapter) viitab eelkõige kuvaririistvarale, mida tutvustati esimest korda 1987. aastalIBM PS/2 tüüpi arvutitel. Tänu selle laialdasele kasutusvõtule on hakatud seda lühendit kasutama ka analoog arvutikuvari 15-kontaktiliseD-subminiatureVGA-pistikühenduse, aga ka 640×480pikslist koosnevalahutusvõime puhul. Personaalarvutite turul pärast 1990. aastaid VGAlahutusvõimet ei kasutatud, kuid see on saamas populaarsekslahutusvõimeks uutel mobiilseadmetel.
VGA oli viimane IBM-i loodud graafikastandard, millele suurem osa "PC kloonidest" vastasid. Seepärast oli see 2010. aasta seisuga üks väheseid standardeid, mille osas enamikupersonaalarvutite riistvaralistelt graafikalahendustelt võis eeldada ühilduvust ilma spetsiaalselt mingi seadme jaoks tehtudtarkvarata.
IBM vahetas VGA ametlikult välja "laiendatud graafikamassiivi" ehkXGA (Extended Graphics Array) vastu, kuid konkureerivad arvutitootjad võtsid selle asemel kasutusele mitmeid omi ja XGA-st erinevaid VGA laiendusi. Nende ühisnimetuseks sai Super-VGA. Tänapäeval on VGA ja Super-VGA signaalid sageli kättesaadavadDVI-pistikühenduse kaudu, juhul kuigraafikaadapteranaloogsignaale väljastab.
VGA-d nimetatakse massiiviks, mitte aga adapteriks, sest see oli algselt rakendatud üheainsa kiibina (ASIC), asendadesMotorola 6845 ja tosinaid teisi loogilisi kiibistikke, mis hõlmasid IBMMDA,CGA jaEGA täispikkusesISAgraafikakaarte. Kuna VGA oli ühekiibiline, siis sai seda vähese pingutusega ka paigutada otse arvutiemaplaadile (vajalikud olid ainult videomälu, (taktsageduse) ajastuskristall ja väline RAMDAC) ja esimesed IBM PS/2 mudelid olid varustatud emaplaadile integreeritud VGA-ga. Võrdluseks võib tuua "esimese põlvkonna" IBM PC desktop mudelid – PC [5150], PC/XT [5160] ja PC AT [5170] – mis vajasid ekraani ühendamiseks siinile installitud kuvaadapterit.
VGA spetsifikatsioonid (tehnilised andmed) on järgmised:
256 kB videoRAM-i (esimesi kaarte oli võimalik tellida ka 64 kB või 128 kB RAM-iga, kaotades sellega aga mõned videorežiimid)
16 värvi ja 256 värvi režiim
262 144 väärtusega värvipalett (6 bitti kanali kohta ehk punasele 6 bitti, sinisele 6 bitti ja rohelisele 6 bitti)
VGA toetab nii graafilist režiimi (kõik punktid adresseeritud) kui ka tärktekstirežiimi. Graafika standardrežiimid on:
640x480 – 16 värvi režiimis
640x350 – 16 värvi režiimis
320x200 – 16 värvi režiimis
320x200 – 256 värvi režiimis (Mode 13h)
Peale standardrežiimide saab VGA-d seadistada ka jäljendama paljude tema eelkäijate (EGA,CGA jaMDA) mitmeid režiime.BIOS-i tasemel on ühilduvus peaaegu täielik, aga ka registrite tasemel on saavutatud kõrge ühilduvuse määr. VGA ei ole ühilduv spetsiaalseteIBM PCjr egaHGC videorežiimidega.
VGA horisontaalse sageduse soovitud väärtus on täpselt kahekordneNTSC-M videosüsteemi väärtus. Valem VGA horisontaalse väärtuse arvutamiseks on seega (60 ÷ 1001) × 525kHz = 4500 ÷ 143kHz ≈ 31,4686kHz. Kõik teised väärtused, mida VGA-kaart kasutab, on tuletatud selle väärtuse korrutamisest või jagamisest täisarvuga. Kuna kvartskella täpsus on piiratud, on reaalsetel kaartidel natuke kõrgem või madalam sagedus. Kõige tavalisema VGA-režiimi 640x480 "60 Hz" progressiivlaotuse horisontaalsed ajastused on:
640 × 400 @ 70Hz videorežiim on kasutusel enamiku x86 arhitektuuriga personaalarvutite alglaadimisel.640 × 480 @ 60Hz on vaikimisi MS-Windowsi 16 värvi graafikarežiim.Tegelik ajastus võib natuke varieeruda. Näiteks 640×480 @ 60 FPS jaoks 25,17 µs aktiivvideo aega pikslisagedusega 25,174MHz annab tulemuseks 633 pikslit loodetud 640 piksli asemel.
BIOS pakub mõningaidtekstirežiime VGA-adapteritele, millel on 80x25, 40x25, 80x43 või 80x50 tekstiruudustik. Iga element võib valida ühe 16-st saadaolevast värvist esiplaani värviks ning 8-st värvist tausta jaoks. Need 8 taustavärvi, mis on lubatud, on need, millel on madala intensiivsusega bitikombinatsioon iga element võib olla tehtud ka vilkuvaks ning kõik vilkuvaks tehtud elemendid vilguvad korraga.
VGA-adapterid toetavad tavaliselt nii monokroomset kui ka värvirežiimi, kuigi monokroone (mustvalge) režiim leiab väga vähe kasutust ning tugi kõikidele MDA tekstirežiimi atribuutidele (heleduse intensiivsus, allajoonimine) on tihti puudu. Must ja valge tekst on peaaegu kõigil uuematel VGA-adapteritel kuvatud kasutades halli teksti mustal taustal värvirežiimis. Enamik monokroomsetest VGA-kuvaritest, mis algul olid mõeldud eelkõige teksti kuvamiseks, töötab vähemalt adekvaatselt VGA-adapteriga ka värvirežiimis. Mõnikord põhjustas vigane ühendus uuemakuvari jagraafikakaarti VGA osa vahel selle, et kuvar identifitseeriti kui mustvalge; see aga põhjustas BIOS-i ja alglaadimise mustvalge kuvamise. Kui aga videokaardidraiverid on laaditud (nt jätkates operatsioonisüsteemi alglaadimist), siis saadakse aru, et kuvar peaks töötama värvirežiimis, ja see lülitatakse värvirežiimi.
VGA videomälu on kaardistatudPC mällu läbi "akna", mis asub segmentide 0xA0000 ja 0xBFFFF vahel PC reaalrežiimi (real mode) aadressiruumis (A000:0000 ja B000:FFFF segmendid nihutatud notatsioonis). Tavaliselt on need algussegmendid:
0xA0000 EGA/VGA graafilistel režiimidel (64 kB);
0xB0000 monokroomse tekstirežiimi jaoks (32 kB);
0xB8000 värviteksti režiimi jaoks ja CGA-ühilduv graafikarežiim (32 kB).
Tänu erinevate režiimide erinevatele mäluaadressidele on võimalik installida samale arvutile nii monokroomne kuvaadapter kui ka värviadapter (nt VGA, EGA või CGA). 1980. aastate algul oli see tavaliselt kasutuselLotus 1-2-3 arvutustabelite (spreadsheets) kuvamisel kõrglahutusega tekstidena MDA-kuvaril ja sellega seotud graafika kuvamisel madala lahutusega CGA-kuvaril samaaegselt. Paljud programmeerijad kasutasid sama lahendust, et kuvada monokroomse kaardi abil veaparanduse (debug) informatsioon, samas kui programm ise jooksis graafikarežiimis teise kaardi peal. Mitmed veaparandusprogrammid, näiteks Borlandi Turbo Debugger, D86 (autor Alan J. Cox) ja Microsofti CodeView, olid võimelised töötama kahe kuvariga seadistuses. Nii Turbo Debuggeri kui ka CodeView' abil sai teha Windowsi veaparandust. Olid ka olemas DOS-i draiverid, näiteks ox.sys, mis käitasid jadaliidese simulatsiooni MDA-kuvaril, mis näiteks andsid kasutajale võimaluse saada veateateid Windowsi versioonide veaparanduse ajal tegelikku jadaterminali kasutamata. Võimalik oli kasutada ka "MODE MONO" käsku DOS-i redaktoris, et suunata väljund ümber monokroomsele kuvarile. Kui monokroomse kuvari adapter ei olnud ühendatud, oli võimalik kasutada 0xB000 – 0xB7FF aadressiruumi lisamäluna teistele programmidele (näiteks lisades rea "DEVICE=EMM386.EXE I=B000-B7FF" faili config.sys, see mälu tehti saadavaks nendele programmidele, mida oli võimalik "laadida kõrgele" – laadida kõrgmälusse).
VGA-värvisüsteem on tagasiühilduv CGA- ja EGA-adapteritega ja see lisab neile ühe konfiguratsioonitaseme. CGA oli võimeline kuvama kuni 16 värvi ja EGA laiendas seda, lastes iga värvi 16-st valida 64-värvilisest paletist (need 64 värvi on moodustatud kahest bitist iga värvi – punane, roheline, sinine – jaoks. Kaksbitti korda kolm värvi võrdub kuus bitti, seega 64 värvi). VGA laiendab seda süsteemi veelgi, suurendades EGA paletti 64-lt sisendilt 256-le sisendile. Lisati veel kaks plokki järjest tumedamates toonides värve ja ka 8 "tühja" sisendit, mis seadistati mustaks.
Lisaks laiendatud paletile võis igaühele 256-st sisendist määrata suvalise värvi väärtuse VGA DAC kaudu. EGA BIOS lasi ainult kahel bitil kanali kohta väljendada igat sisendit, samas kui VGA lasi kuuel bitil väljendada iga põhivärvi (punane, roheline, sinine) intensiivsust. See andis kokku 64 erinevat intensiivsusetaset punasele, rohelisele ja sinisele, andes kokku 262 144 võimalikku värvi, igaüks 256-st oli võimalik määrata paletile (ning samas nendest 256-st 16 oli võimalik kuvada CGA-videorežiimides).
See meetod lasi uusi VGA värve kasutada ka EGA ja CGA graafikarežiimides, eeldades, et need mäletasid, kuidas erinevad paletisüsteemid on kokku pandud. Näiteks et seada tekstirežiimis teksti värvus tumepunaseks, peab see olema seadistatud ühte CGA värvi (näiteks vaikevärvi #7: helehall.) See värv määratakse siis ühte EGA paletti kuulavasse sisendisse – CGA värvi 7 puhul määratakse see EGA sisendisse 42. VGA DAC peab olema siis seadistatud nii, et ta muudaks värvi 42 tumepunaseks, ja kohe muutub tumepunaseks kõik, mis oli ekraanil kuvatud helehallina (CGA värv 7). Seda funktsiooni kasutati tihti 256-värvilistes VGA DOS-i mängudes, kui nad algul laadisid ja tekstiaken hääbus mustaks (nt mäng "Descent" aastast 1995).
Kui CGA ja EGA-ühilduvad režiimid lasid kuvada ainult 16 värvi korraga, siis teistes VGA-režiimides, näiteks laialt kasutatud mode 13h, lasi kuvada kõik 256 paleti sisendit korraga, seejuures nendes režiimides olid 256 värvi valitud saadaolevast 262 144 värvist.
Dokumenteerimata, kuid populaarne VGA-graafikaadapterite kasutamise tehnika oli hüüdnimega "Mode X" ehk "tuunitud VGA" (autor Michael Abrash). See muutis võimalikukslahtusvõimed, mis polnud võimalikudBIOS-i katkestuse nr. 13h standardsete funktsioonidega (Mode 13h). Sellega saavutati 256 kB VGA videomälu "lahtiühendamine" neljaks erinevaks "tasandiks," mis muutis kogu VGA 256 kB muutmälu kasutatavaks 256-värvilistes režiimides. See oli kompromiss lisakeerukuse ja jõudluse vähenemise näol mõnda tüüpi graafikaoperatsioonides, mille positiivne pool oli see, et teised operatsioonid muutusid teatud olukordades kiiremaks:
Ühevärvilise hulknurga täitmiine kiirenes tänu võimalusele seada neli pikslit ühe kirjutamiskorraga riistvarale.
Videoadapter sai abistada videomälu pildiregioonide kopeerimiseks, mis oli mõnikord kiirem, kui pildiregioonide kopeerimine protsessori abil läbi suhteliselt aeglase arvutisiini (vtISA siin).
Võimalikud olid ka suurema lahutusega kuvarežiimid: 16 värviga, 704×528, 736×552, 768×576 ja isegi 800×600. Programmiteek nagu näiteksXlib (VGA-graafika kogu C-keele jaoks 1990. aastate alguses) ja programmColoRIX (256 värviga graafika programm), toetasid samuti tuunitud 256 värvi režiimi, kasutades laiusi 256, 320, ja 360 pikslit ja kõrgusi 200, 240, 256, 400 ja 480 rida (ülemine piir oli 640×400, mis kasutas 250 kB VGA 256 kB video RAM-ist). Sellegipoolest oli 320×240 kõige tuntum ja sagedamini kasutatud, sest see oli tavaline 4:3kuvasuhtega ja ruudukujuliste pikslitega (square pixels) lahutus.
Mitme videotasandi kasutamine riistvaras lubas programmeerijal teha kahekordset puhverdamist, kolmekordset puhverdamist või ekraani poolitamist, mis olid võimalikud küll VGA 320×200 16 värvi režiimis, kuid ei olnud võimalikud kasutades vaikerežiimi Mode 13h.
Vahel tuli kuvarilaotussagedust vähendada, et neid režiime kasutada, mis aga suurendas koormust silmadele. Need režiimid olid ka ühildumatud mõnede vanemate kuvaritega, tekitades probleeme, näiteks pildi detailsuse kadumine, vilkumine ja horisontaalse sünkronisatsiooni puudumine, olenevalt režiimist, mida kasutati. Seepärast oli enamik VGA parandusi, mida kasutati reklaamtoodetel, piiratud "kuvari-turvalistes" kombinatsioonides, näiteks 320×240 (ruutpikslid, kolm videotasandit), 320×400 (topeltlahutus, kaks videotasandit) ja 360×480 (suurim lahutus, mis oli VGA-kuvaritega ühilduv, üks videotasand). Praegu on kõrgeim rakendatud VGA lahutus 400x600x256 (400×600 pikslit × 256 värvi). See oli kasutusel Fractintis kuulusfraktaali generaator.