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 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 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 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. Unter DOS gab es vorher keine standardisierte Schnittstelle für Grafik, die über den VGA-Standard hinausging.

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.[2]

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.

Liste der Modi

Modus
(hexadezimal)
Auflösung
(Pixel×Pixel)
Farbtiefe
(Bit)
0x1000640×040008
0x1010640×048008
0x1020800×060004
0x1030800×060008
0x1041024×076804
0x1051024×076808
0x1061280×102404
0x1071280×102408
0x1080080×0060 (Text)04
0x1090132×0025 (Text)04
0x10A0132×0043 (Text)04
0x10B0132×0050 (Text)04
0x10C0132×0060 (Text)04
0x10D0320×020015
0x10E0320×020016
0x10F0320×020024
0x1100640×048015
0x1110640×048016
0x1120640×048024
0x1130800×060015
0x1140800×060016
0x1150800×060024
0x1161024×076815
0x1171024×076816
0x1181024×076824
0x1191280×102415
0x11A1280×102416
0x11B1280×102424
0x11C1600×120008
0x11D1600×120015
0x11E1600×120016
0x11F1600×120024

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

Weblinks

Einzelnachweise

  1. 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.“
  2. http://www.sierrahelp.com/XPHelp/VESAModesAndXP.html