VESA BIOS-tillägg
VESA BIOS Extensions ( VBE ) är en VESA- standard, för närvarande i version 3, som definierar gränssnittet som kan användas av programvara för att komma åt kompatibla videokort med höga upplösningar och bitdjup. Detta är i motsats till de "traditionella" INT 10h BIOS -anropen, som är begränsade till upplösningar på 640×480 pixlar med 16 färger (4-bitars) djup eller mindre. VBE görs tillgänglig via grafikkortets BIOS , som under uppstart installerar några avbrottsvektorer som pekar på sig själv.
De flesta nyare kort implementerar den mer kapabla VBE 3.0-standarden. Äldre versioner av VBE tillhandahåller endast ett riktigt lägesgränssnitt , som inte kan användas utan en betydande prestandastraff från operativsystem med skyddat läge . Följaktligen har VBE-standarden nästan aldrig använts för att skriva ett grafikkorts drivrutiner; varje leverantör har alltså varit tvungen att uppfinna ett proprietärt protokoll för att kommunicera med sitt eget grafikkort. Trots detta är det vanligt att en förare går ut till det verkliga lägesavbrottet för att initiera skärmlägen och få direkt tillgång till ett korts linjära rambuffert , eftersom dessa uppgifter annars skulle kräva hantering av många hundra proprietära variationer som finns från kort till kort.
I EFI 1.x-system ersätts INT 10H och VESA BIOS Extensions (VBE) av EFI UGA-protokollet. I mycket använda UEFI 2.x-system ersätts INT 10H och VBE med UEFI GOP .
Standarder
Tidig VBE
VBE 1.0 (VS891001) definierades 1989. VBE 1.1 (VS900602) definierades 1990. VBE 1.2 (VS911022) definierades 1991. Dessa versioner av VBE kräver verkligt läge för att fungera.
VBE definierar flera nya funktioner som anropas via INT 10H . Funktionsnumreringen börjar med AX=4F00, eller (AH=4F, AL=00), för funktion 00h . 00h till 05h definierades i VBE 1.0, 06h och 07h i 1.1 och 08h i 1.2.
VESA BIOS Extensions (VBE core) 2.0 (november 1994)
Den här standarden tillhandahåller den primära funktionaliteten för VESA BIOS Extensions. Det tillåter applikationer att bestämma grafikkortets kapacitet och ger möjlighet att ställa in de visningslägen som hittas. VBE 2.0 lägger till några nya funktioner utöver den tidigare VBE 1.2-standarden, inklusive linjär rambuffertåtkomst och banking i skyddat läge . Några av VBE Core 2.0-funktionerna inkluderar:
- Linjär rambuffertåtkomst
- Möjliggör direkt rambuffertåtkomst i skyddat läge som ett stort minnesområde istället för mindre effektiva mindre bitar.
- Banking i skyddat läge
- Tillåter åtkomst till rambufferten från skyddat läge utan att "tänka" ner till verkligt läge . Detta implementeras med en ny funktion 0Ah .
- Super VGA- sidvändning
- Tillåter animering med högre prestanda för att ge smidig animering för datorspel och andra högpresterande grafikprogram.
- Super VGA virtuella skärmar
- Tillåter programvara att ställa in virtuella skärmupplösningar , större än den faktiska visade upplösningen, och smidigt rulla eller panorera runt den större bilden.
- Höga färg- och TrueColor -lägen
- Branschstandard 16-bitars och 24-bitars grafiklägen för upplösningar från 320×200 upp till 1600 × 1200 .
VESA BIOS Extensions (VBE core) 3.0 (september 1998)
En superset av VBE 2.0-standarden. Denna standard lägger till uppdateringsfrekvens , faciliteter för stereoglasögon , förbättrad multibuffring och andra funktioner till VBE 2.0-standarden.
- Trippelbuffring
- Låter höghastighetsapplikationer utföra multibuffring med mindre skärmflimmer och utan att behöva vänta på grafikkontrollen.
- Kontroll av uppdateringsfrekvens med GTF-timing
- Detta tillåter applikationer och operativsystemsverktyg att ändra uppdateringsfrekvensen på ett standardsätt på alla VBE 3.0-grafikkontroller. Viktigt för stereoapplikationer, eftersom när stereo är aktiverat halveras användarens effektiva uppdateringsfrekvens.
- Vändning av stereosidor
- När du tittar på en applikation med stereoglasögon måste programvaran bläddra dubbelt så ofta som normalt, eftersom den måste generera separata bilder för varje öga. Den här nya funktionen gör att stereokompatibel programvara kan visas korrekt.
- Stereosynkronisering av hårdvara
- Låter stereoprogramvara avgöra om det finns en kontakt för stereoglasögon på användarens grafikkort.
En ny "Protected Mode Entry Point" lades till som ett alternativ till funktion 0Ah .
VBE/acceleratorfunktioner (VBE/AF) (augusti 1996)
VBE/AF tillhandahåller ett standardgränssnitt på låg nivå till vanliga accelerationsfunktioner som är tillgängliga på de flesta hårdvara. Några av funktionerna som definieras i standarden är åtkomst till hårdvarumarkörer, Bit Block Transfers (Bit Blt), off screen sprites , maskinvarupanorering, ritning och andra funktioner. Den är definierad att fungera i 32-bitars skyddat läge.
Kompletterande specifikationer
Kompletterande specifikationer ger enhetsoberoende gränssnitt mellan applikationsprogramvara och Super VGA-hårdvara. Funktionsnummer tilldelas av VESA Software Standards Committee (SSC).
Power Management extensions (PM)
DPMS är en hårdvarustandard som gör att grafikkort kan kommunicera med DPMS-kompatibla bildskärmar via ett speciellt signaleringssystem som kan användas med befintliga grafikkontroller och bildskärmskablar. Detta signalsystem låter grafikkortet tala om för monitorn att gå in i ett antal olika energisparlägen, vilket effektivt gör att monitorn kan stänga av sig själv när den inte används.
Platta gränssnittstillägg (FP)
Ger tillgång till specialfunktioner i platta kontroller.
Audio interface extensions (AI)
Ger standard till ljudtjänster.
För närvarande (version 1.00) definierar VBE/AI-specifikationen tre enhetsklasser: WAVE, MIDI och VOLUME. Enhetstyper som inte täcks:
- CDROM-kontroll
- som täcks av Microsofts CD-ROM-tillägg .
- Effektprocessorer
- Denna enhetsklass kommer att utökas i framtida versioner av VBE/AI-specifikationen.
OEM-tillägg
Ger standardinträde till leverantörsspecifika tillägg.
Visa datakanal (DDC)
Display Data Channel eller DDC är en digital anslutning mellan en datorskärm och en grafikadapter som gör att skärmen kan kommunicera sina specifikationer till adaptern. Standarden skapades av VESA .
Serial Control Interface (SCI)
Tillhandahåller hårdvaruoberoende sätt för operativsystem och applikation att läsa och skriva data över I²C seriellt kontrollgränssnitt.
VBE-lägesnummer
Även om lägesnummer är ett 16-bitars värde, är de valfria VBE-lägesnumren 14 bitar breda. Bit 15 används av VGA BIOS som en flagga för att rensa eller bevara bildskärmsminne. VBE definierade lägesnummer enligt följande:
Bit | Menande |
---|---|
0–8 | Lägesnummer. Om bit 8 är 1 är det ett VESA-definierat VBE-läge. |
9-10 | Reserverad för expansion. Måste sättas till 0. |
11 | Kontroll av uppdateringshastighet Välj. Om den är inställd på 1, använd användarspecificerade CRTC-värden för uppdateringsfrekvens, annars använd BIOS-standarduppdateringsfrekvens. |
12–13 | Reserverad för VBE/AF. Måste sättas till 0. |
14 | Linjär/flat rambuffert Välj. Om inställt på 1, använd linjär rambuffert, annars använd bankad rambuffert. |
15 | Bevara displayminne Välj. Om den är inställd på 1, bevara bildskärmsminnet, annars rensa bildskärmsminnet. |
Från och med VBE/Core 2.0 definierar VESA inte längre nya VESA-lägesnummer och kräver inte längre en enhet för att implementera de gamla numren. För att korrekt upptäcka information om ett skärmläge, använd Funktion 01h - Return VBE Mode Information .
Mode 81FFh är ett speciellt videoläge utformat för att bevara aktuellt minnesinnehåll och ge tillgång till hela videominnet.
Lägen definierade av VESA
Från och med VBE 2.0-standarden kommer inga nya lägen att definieras av VESA, och gamla lägen är inte längre obligatoriska. Användningen av definierade lägen bör betraktas som utfasad: moderna grafikkort kanske använder dessa lägesnummer (även om de flesta gör det för bakåtkompatibilitet), och modern programvara bör inte använda dem. Det korrekta sättet för programvara att upptäcka tillgängliga visningslägen är att få en lista över lägen (med "Function 00h - Return VBE Controller Information") och sedan kontrollera varje läge (med "Function 01h: Return VBE Mode Information") tills den hittar det/de lägen som krävs. [ citat behövs ]
Grafiklägen | 320×200 | 640×400 | 640×480 | 800×600 | 1024×768 | 1280×1024 |
---|---|---|---|---|---|---|
16-färgspalett | 258 (0102h), 106 (6Ah) | 260 (0104h) | 262 (0106h) | |||
256-färgspalett | 256 (0100h) | 257 (0101h) | 259 (0103h) | 261 (0105h) | 263 (0107h) | |
15-bitars (5:5:5) | 269 (010Dh) | 272 (0110h) | 275 (0113h) | 278 (0116h) | 281 (0119h) | |
16-bitars (5:6:5) | 270 (010Eh) | 273 (0111h) | 276 (0114h) | 279 (0117h) | 282 (011Ah) | |
24-bitars (8:8:8) | 271 (010Fh) | 274 (0112h) | 277 (0115h) | 280 (0118h) | 283 (011Bh) |
Lägen 264–268 är textlägen. 264 (0108h) är 80 kolumner × 60 rader (80×60), 265 (0109h) är 132×25, 266 (010Ah) är 132×43, 267 (010Bh) är 132×50 och 0Ch) är 0 60.
Textlägen | Kolumner | |
---|---|---|
Rader | 80 | 132 |
25 | 265 (0109h) | |
43 | 266 (010Ah) | |
50 | 267 (010Bh) | |
60 | 264 (0108h) | 268 (010Ch) |
Andra allmänt tillgängliga grafiklägen
Tabellen nedan kombinerar de lägen som definieras av VESA (värdena angivna i svart) tillsammans med lägen som ofta används, men som kanske inte fungerar på alla grafikkort eftersom de inte definieras av någon standard (betecknas i rött ) .
Grafiklägen | 320×200 | 640×400 | 640×480 | 800×500 | 800×600 | 896×672 | 1 024×640 | 1 024×768 | 1152 × 720 | 1280 × 1024 | 1360 × 768 | 1440 × 900 | 1600 × 1200 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16-färgspalett |
258 (0102h), 106 (6Ah) |
260 (0104h) | 262 (0106h) | ||||||||||
256-färgspalett | 256 (0100h) | 257 (0101h) | 367 (016Fh) | 259 (0103h) | 303 (012Fh) | 362 (016Ah) | 261 (0105h) | 357 (0165h) | 263 (0107h) | 352 (0160h) | 284 (011Ch) | ||
15-bitars (5:5:5) | 269 (010Dh) | 289 (0121h) | 272 (0110h) | 368 (0170h) | 275 (0113h) | 304 (0130h) | 363 (016Bh) | 278 (0116h) | 358 (0166h) | 281 (0119h) | 353 (0161h) | 285 (011Dh) | |
16-bitars (5:6:5) | 270 (010Eh) | 290 (0122h) | 273 (0111h) | 369 (0171h) | 276 (0114h) | 305 (0131h) | 364 (016Ch) | 279 (0117h) | 359 (0167h) | 282 (011Ah) | 978 (03d2h) | 354 (0162h) | 286 (011Eh) |
24-bitars (8:8:8) | 271 (010Fh) | 291 (0123h) | 274 (0112h) | 370 (0172h) | 277 (0115h) | 306 (0132h) | 365 (016Dh) | 280 (0118h) | 360 (0168h) | 283 (011Bh) | 355 (0163h) | 287 (011Fh) | |
32-bitars (8:8:8) | 292 (0124h) | 297 (0129h) | 371 (0173h) | 302 (012Eh) | 307 (0133h) | 366 (016Eh) | 312 (0138h) | 361 (0169h) | 317 (013Dh) | 980 (03d4h) | 356 (0164h) | 322 (0142h) |
Lägesdetektering
Några verktyg har skrivits för att upptäcka VBE-lägen som är tillgängliga på ett system. De fungerar vanligtvis genom att anropa funktion 01h , vilket är mer tillförlitligt än att anta en tabell över utökade lägen eftersom det är en del av enhetens självdokumentation.
- hwinfo är verktyget för maskinvaruavkänning som används i SuSE Linux och i vissa andra Linux-distributioner . Att köra
hwinfo --framebuffer
rapporterar grafikinformation, inklusive VESA-lägen på en "Mode"-rad. - mdt är ett Linux- eller DOS -verktyg som använder VESA BIOS-funktioner för att läsa monitordata.
- Linux Real Mode Interface (LRMI) har ett
vbetest
-program som skriver ut VESA-information. -
SciTech Software hade en icke-relaterad
vbetest
för DOS som går tillbaka till 1994. - x86 "PC"-versionen GNU GRUB 2 har ett
vbeinfo-
kommando för att skriva ut tillgängliga videolägen ochvbetest
för att prova ett specifikt läge. De använder ett inbyggt bord istället för Funktion 01h . För andra plattformar, inklusive x86 EFI, ersätts de av det mer generiskavideoinfo-
ochvideotestet
.
Linux-videolägesnummer
Linuxkärnan låter användaren välja VESA-läge vid uppstart genom att skicka en kod i minnet till kärnan . LILO-starthanteraren skickar denna kod baserat på en "vga"-parameter i sin konfigurationsfil. Den har formen 'vga=XXX', där XXX är decimalvärdet, eller 'vga=0xHHH', där HHH är det hexadecimala värdet. Men starthanteraren 'vga=' accepterar inte direkt VESA-videolägesnummer; snarare är Linux-videolägesnumret VESA-numret plus 512 (i fallet med decimalrepresentation) eller plus 0x200 (i fallet med hexadecimalrepresentation). Till exempel har det definierade VESA-värdet på 257 (0x101), som representerar 640x480 och 256 färger, ett motsvarande Linux-videolägesvärde på 769 (0x301).
Som nämnts tidigare definierar VESA-standarden en begränsad uppsättning lägen; i synnerhet täcks ingen över 1280 × 1024 och i stället är implementeringen helt valfri för grafikkortstillverkare. Eftersom leverantörer är fria att använda vilka ytterligare värden de vill, betyder det att, i tabellen nedan, kan det hända att lägena som anges i rött (och uttryckta i decimalform) inte gäller för din grafikadapter !
320×200 | 640×400 | 640×480 | 800×500 | 800×600 | 896×672 | 1024 × 640 | 1024 × 768 | 1152 × 720 | 1 280 × 1 024 | 1 400 × 1 050 | 1440 × 900 | 1 600 × 1 200 | 1920 × 1200 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
16 färger | 770 0302h | 772 0304h | 774 0306h | |||||||||||
256 färger | 768 0300h | 769 0301h | 879 036Fh | 771 0303h | 815 032Fh | 874 036 Ah | 773 0305h | 869 | 775 0307h | 835 | 864 | 796 | 893 | |
15-bitars (5:5:5) | 781 030Dh | 801 0321h | 784 0310h | 880 0370h | 787 0313h | 816 0330h | 875 036Bh | 790 0316h | 870 | 793 0319h | 865 | 797 | ||
16-bitars (5:6:5) | 782 030Eh | 802 0322h | 785 0311h | 881 0371h | 788 0314h | 817 0331h | 876 036Ch | 791 0317h | 871 | 794 031 Ah | 837 | 866 | 798 | |
24-bitars (8:8:8) | 783 030Fh | 803 0323h | 786 0312h | 882 0372h | 789 0315h | 818 0332h | 877 036Dh | 792 0318h | 872 | 795 031Bh | 838 | 867 | 799 | |
32-bitars (8:8:8) 1 | 804 | 809 | 883 | 814 | 819 | 878 | 824 | 873 | 829 | 868 | 834 |
1: 32-bitars är egentligen (8:8:8:8), men det slutliga 8-bitarsnumret är en "tom" alfakanal. Det är annars lika med 24-bitars färg. Många GPU:er använder 32-bitars färgläge istället för 24-bitarsläge bara för snabbare videominnesåtkomst genom 32-bitars minnesjustering.
VGA= 864 [ 352 (0160h)] verkar också välja 1280 × 800 (8-bitars) för olika bärbara datorers skärmar. VGA= 834 [ 322 (0142h)] är 1400 × 1050
Lägen tillgängliga i paralleller
VESA BIOS-emuleringen i Parallels virtuella maskin har en annan uppsättning icke-standardiserade VESA-lägen. Från och med build 3214 avslöjar LRMI vbetest dessa lägen:
640×400 | 640×480 | 720×480 | 800×500 | 800×600 | 896×672 | 1024 × 640 | 1024 × 768 | 1152 × 720 | 1 280 × 1 024 | 1440 × 900 | 1 600 × 1 200 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
256 färgpalett | 256 (0100h) | 257 (0101h) | 367 (016Fh) | 364 (016Ch) | 259 (0103h) | 297 (0129h) | 358 (0166h) | 261 (0105h) | 355 (0163h) | 263 (0107h) | 352 (0160h) | 284 (011Ch) |
15-bitars (5:5:5) | 272 (0110h) | 275 (0113h) | 278 (0116h) | 281 (0119h) | 285 (011Dh) | |||||||
16-bitars (5:6:5) | 289 (0121h) | 273 (0111h) | 368 (0170h) | 365 (016Dh) | 276 (0114h) | 298 (012Ah) | 359 (0167h) | 279 (0117h) | 356 (0164h) | 282 (011Ah) | 353 (0161h) | 286 (011Eh) |
24-bitars (8:8:8) | 290 (0122h) | 274 (0112h) | 369 (0171h) | 366 (016Eh) | 277 (0115h) | 299 (012Bh) | 360 (0168h) | 280 (0118h) | 357 (0165h) | 283 (011Bh) | 354 (0162h) | 287 (011Fh) |
Se även
Vidare läsning
- VESA Super VGA BIOS Extension 1.0 (Standard # VS891001) 1 oktober 1989
- VESA BIOS-tillägg 1.2
- VESA BIOS Extension 2.0
- VESA BIOS Extension 3.0
- Dr. Dobb undersöker VESA VBE 2.0-specifikationen
- Hur man använder Super VGA (VESA 1.x Non-Linear)
- VESA BIOS Extension Serial Control Interface Standard på Wayback Machine (arkiverad 2005-12-21)
- VESA BIOS Extension/Accelerator Functions (VBE/AF) på Wayback Machine (arkiverad 2008-12-09)
- VESA BIOS-gränssnitt
externa länkar
- SuperVGA/VESA-programmerares anteckningar
- Lista över VESA VBE 2.0/3.0-implementerande styrkretsar
- Fånga VBE-läge info vbespy källpaket
- Hur man använder vbespy källkodspaket
- VBETOOL - en (under tiden arkiverad) applikation för exekvering av grafikkortets BIOS-kod