VESA BIOS Extension
VESA BIOS Extension (VBE) ist ein in den 1990er Jahren entwickelter Standard der Video Electronics Standards Association (VESA) für Grafikkarten in IBM-PC-kompatiblen Computern (PCs).
Er ist eine üblicherweise im Grafikkarten-BIOS implementierte Programmierschnittstelle (API), die den Programmen Interrupts zur Verfügung stellt, um damit Aktionen wie das Setzen oder Abfragen von Videomodi durchzuführen sowie weitere von der Hardware unterstützte Funktionen (z. B. Synchronisation von 3D-Shutterbrillen) anzusprechen. So waren Programme und Spiele für DOS oft auf ein VBE angewiesen und funktionierten somit auf allen Systemen, die ein „VESA BIOS“ bereitstellten. Auf Grafikkarten ohne VBE im Grafik-BIOS kann unter DOS ein speicherresidenter Treiber geladen werden, der die Funktionen der Extension bereitstellt. Spätere Software setzt auf die schnelleren APIs von DirectX, OpenGL und deren Nachfolgern auf, die jedoch auf Betriebssystemebene implementiert sind.
Die VESA BIOS Extension ist nur im für IBM-PC-kompatible Computer mit BIOS verfügbar. Auf dem BIOS-Nachfolger Extensible Firmware Interface (EFI) wurde VBE anfangs durch UGA (Universal Graphics Adapter) ersetzt, das wiederum ab UEFI (Unified EFI ab Version 2) von GOP (Graphics Output Protocol) abgelöst wurde. Für die meisten Betriebssysteme erfüllen VBE, EFI-UGA und UEFI-GOP eine Fallback-Funktion, falls kein Grafiktreiber zur Verfügung steht. Bei (U)EFI wird UGA/GOP vor dem Betriebssystemstart von der Firmware selbst verwendet, um für ein angeschlossenes Display per DDC in einen geeigneten Grafikmodus zu schalten.[1]
Einsatzbereich
Primär war die VESA BIOS Extension für 16-Bit-Applikationen unter DOS gedacht. Die meisten MS-DOS-basierten PC-Spiele zwischen etwa 1993 und 1997 verwendeten die schnellen 16-Bit-Modi mit niedriger Auflösung wie etwa 320×200 oder 320×240, später 640×480. Der Framebuffer kann allerdings auch von 32-Bit-DPMI-Programmen verwendet werden. Mit der Einführung von VBE 2.0 im November 1994[2]war es möglich, Grafikmodi in 16-Bit-Farbtiefe (65.536 Farben) mit Auflösungen bis zu 1600×1200 Pixeln zu verwenden, ohne gezielt programminterne Unterscheidungen zur verwendeten Grafikhardware zu implementieren. Außerdem wurde mit VBE 2.0 ein linearer Framebufferzugriff aus dem Protected Mode ermöglicht, was zu einem deutlich beschleunigten Bildaufbau führte.[3][4] Unter DOS gab es vorher keine standardisierte Schnittstelle für Grafik, die über den VGA-Standard hinausging.[5]
Die aktuelle Version des Standards 3.0 ist abwärtskompatibel zur vorherigen Spezifikation 2.0. Die wesentliche Neuerung der Version 3.0 ist der Protected Mode Entry Point, der sowohl vom 16- als auch vom 32-Bit-Protected-Mode aus aufgerufen werden kann. Version 3.0 wird von Anwendungssoftware nur selten vorausgesetzt, da bereits mit VBE 2.0 alle wesentlichen Funktionen zur Verfügung stehen.
VBE wird auf Computern mit BIOS, und damit auch auf (U)EFI-Systemen im BIOS-kompatiblen Modus „CSM“ (für Compatibility Support Module), von den meisten modernen Grafikkarten unterstützt. Die VESA BIOS Extension ist dabei im Grafik-BIOS der Grafikkarte enthalten. Da bei Einführung der VESA BIOS Extension nicht alle Grafikkarten eine entsprechende Funktionalität implementiert hatten, gibt es universelle „VESA-Treiber“ – Zusatzprogramme wie beispielsweise UniVBE oder Scitech Display Doctor, aber auch hardwarespezifische Treiber der Grafikkartenhersteller selbst (etwa S3VBE Core 2.0 für S3-Grafikkarten oder TLIVESA für Grafikkarten von Tseng Labs) – die unter DOS speicherresident als TSR-Programm geladen werden und ein VBE-Grafik-BIOS nachrüsten. Mit manchen entsprechenden Zusatzprogrammen ist es auch möglich, zusätzliche Grafikmodi einzufügen bzw. vorhandene auszutauschen; das kann z. B. dann erforderlich sein, wenn die native Auflösung eines Monitors verwendet werden soll, diese jedoch in den voreingestellten Standard-Auflösungen im VBE-Grafik-BIOS fehlen. Dem gleichen Prinzip folgend wurden auf Laptops einige der VBE-Standard-Modi im Grafik-BIOS z. B. mit WXGA-Auflösungen überschrieben, wenn dies der nativen Display-Auslösung entspricht.
Von Anwendungssoftware für moderne Betriebssysteme wird VBE kaum noch verwendet, da diese die Hardware nicht mehr direkt ansprechen können – auf Desktop-Systemen wie Windows, macOS oder Linux werden von der Grafikkarte unabhängige APIs verwendet, die die entsprechende Funktionalität über herstellerspezifische Treiber mit definierten Schnittstellen umsetzen. Linearer Framebuffer Zugriff (LFB) ist unter Windows in einer Virtual DOS Machine mittels NTVDM nicht möglich, da dessen DPMI nur Vesa Modi ohne linearen Framebuffer Zugriff unterstützen. Einige Anwendungen ermöglichen daher die höheren VESA Modi per CLI Parameter nicht zu nutzen und zu VESA 1.2 zurückzufallen. In VESA 1.2 gibt es noch keinen Linearen Framebuffer Zugriff, sondern nur Bank Switching, was wiederum von NTVDM und dessen DPMI unterstützt wird.[6]
Der Standard spielt heute noch unter Betriebssystemen eine Rolle, für die es keine spezielle Treiberunterstützung für einen bestimmten Grafikchipsatz gibt. Sind bspw. für Windows, Linux oder FreeBSD keine Grafikkartentreiber für bestimmte Grafikkarten verfügbar, so können nur durch Verwendung eines VESA-Treibers, der die hier beschriebene Funktionalität nutzt, Auflösungen von mehr als 640×480 Pixel bei mehr als 256 Farben verwendet werden.
Unter Windows wird im abgesicherten Modus vom VESA-Modus massiv Gebrauch gemacht, weil in diesem Modus in der Regel keine herstellerspezifischen 3rd-Party-Treiber geladen werden.
Der Standard deckt allerdings keine 2D- oder 3D-Beschleunigerfunktionen ab. Bei der Darstellung von 2D- oder 3D-Inhalten muss die CPU also alles in Software rendern.
VESA VBE 1.2 unterstützt virtuelles Scrolling und Double und Tripple Buffering in Hardware.[7]
Ergänzende Spezifikationen
Audio interface extensions (AI)
Die VBE/AI Version 1.0 Spezifikation bietet Standard-Audiodienste und definiert drei Geräteklassen, dies sind WAVE, MIDI und VOLUME (Lautstärke).[8]
Liste der Modi
Modus (hexadezimal) | Auflösung (Pixel×Pixel) | Farbtiefe (Bit) | Text/Grafisch | VESA VBE Version |
---|---|---|---|---|
0x100 | 640× 400 | 8 | 1.0 | |
0x101 | 640× 480 | 8 | 1.0 | |
0x102 | 800× 600 | 4 | 1.0 | |
0x103 | 800× 600 | 8 | 1.0 | |
0x104 | 1024× | 7684 | 1.0 | |
0x105 | 1024× | 7688 | 1.0 | |
0x106 | 1280×1024 | 4 | 1.0 | |
0x107 | 1280×1024 | 8 | 1.0 | |
0x108 | 80× 60 | 4 | Text | 1.0 |
0x109 | 132× 25 | 4 | Text | 1.0 |
0x10A | 132× 43 | 4 | Text | 1.0 |
0x10B | 132× 50 | 4 | Text | 1.0 |
0x10C | 132× 60 | 4 | Text | 1.0 |
0x10D | 320× 200 | 15 | 1.2 | |
0x10E | 320× 200 | 16 | 1.2 | |
0x10F | 320× 200 | 24 | 1.2 | |
0x110 | 640× 480 | 15 | 1.2 | |
0x111 | 640× 480 | 16 | 1.2 | |
0x112 | 640× 480 | 24 | 1.2 | |
0x113 | 800× 600 | 15 | 1.2 | |
0x114 | 800× 600 | 16 | 1.2 | |
0x115 | 800× 600 | 24 | 1.2 | |
0x116 | 1024× | 76815 | 1.2 | |
0x117 | 1024× | 76816 | 1.2 | |
0x118 | 1024× | 76824 | 1.2 | |
0x119 | 1280×1024 | 15 | 1.2 | |
0x11A | 1280×1024 | 16 | 1.2 | |
0x11B | 1280×1024 | 24 | 1.2 | |
0x11C | 1600×1200 | 8 | ? | |
0x11D | 1600×1200 | 15 | ? | |
0x11E | 1600×1200 | 16 | ? | |
0x11F | 1600×1200 | 24 | ? | |
0x120h | 1600x1200 | 8 | 2.0 | |
0x121h | 1600x1200 | 15 | 2.0 | |
0x122h | 1600x1200 | 16 | 2.0 |
Mit Bit lassen sich verschiedene Farben darstellen. Da für die rote, grüne und blaue Komponente eines Pixels jeweils 8 Bit zur Verfügung stehen, sind somit verschiedenen Farben für ein Pixel möglich, auch True Color genannt (siehe dazu RGB-Farbraum). Bei einer Farbtiefe von 16 Bit sind 65.536 verschiedene Farben für ein Pixel möglich, was High Color genannt wird.
Siehe auch
Literatur
Weblinks
- VESA-Website
- Super VGA BIOS Extension v1.2 vom 22. October 1991. TXT-Dokument (englisch)
- VESA BIOS EXTENSIONS (VBE) Core Functions Standard v2.0 Rev1.1 vom 18. November 1994. PDF-Dokument (englisch).
- VESA BIOS EXTENSION (VBE) Core Functions Standard v3.0 vom 16. September 1998. PDF-Dokument (englisch).
- Getting VBE Mode Info Entwickler/Programmierer-Wiki (englisch)
- Liste von standard-, VESA VBE (1.0 bis 3.0) und proprietären Text- und Grafikmodi für den PC
Einzelnachweise
- ↑ Replacing VGA, GOP implementation for UEFI. (PDF; 840 kB) UEFI Summer Plugfest 2011. AMD, Juli 2011, S. 4, abgerufen am 13. Januar 2021 (englisch): „The ultimate goal of GOP is to replace legacy VGA BIOS and eliminate VGA HW functionality.“
- ↑ https://jacobfilipp.com/DrDobbs/articles/DDJ/1995/9507/9507h/9507h.htm Examining the VESA VBE 2.0 Specification - Extending the VESA standard von Brad Haakenson, Dr. Dobb's Journal Juli 1995
- ↑ Nico Ernst: VESA-Treiber und UniVBE - So wird SVGA schneller. In: PC Player Special: Tipps & Tricks zu 400 Spielen. Nr. 1, 1997, ISSN 0943-6693, S. 10 (pcplayer.de [abgerufen am 25. Juni 2024]).
- ↑ https://jacobfilipp.com/DrDobbs/articles/DDJ/1995/9513/9513f/9513f.htm Using the VESA BIOS 2.0 Linear Frame Buffer - Performance enhancement with and without bank switching by Brian Hook and Kendall Bennett Dr. Dobb's Journal Special Issue 1995 - GAMES PROGRAMMING
- ↑ https://jacobfilipp.com/DrDobbs/articles/DDJ/1990/9004/9004f/9004f.htm VESA VGA BIOS EXTENSIONS - A software standard for Super VGA von Bo Ericsson Dr. Dobb's Journal April, 1990
- ↑ VESA Support & XP. In: sierrahelp.com. Abgerufen am 10. Januar 2022 (englisch).
- ↑ Introduction to VESA programming. 6.9 Function 07h - Set/Get Display Start. In: monstersoft.com. Abgerufen am 19. Mai 2024 (englisch).
- ↑ https://jacobfilipp.com/DrDobbs/articles/DDJ/1994/9413/9413i/9413i.htm The VESA BIOS Extension/Audio Interface - A standard software interface for audio von Doug Cody, Dr. Dobb’s Journal 1994