VESA BIOS Extension

Van Wikipedia, de gratis encyclopedie

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[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Modus
(hexadezimal)
Auflösung
(Pixel×Pixel)
Farbtiefe
(Bit)
0x100 0640×0400 08
0x101 0640×0480 08
0x102 0800×0600 04
0x103 0800×0600 08
0x104 1024×0768 04
0x105 1024×0768 08
0x106 1280×1024 04
0x107 1280×1024 08
0x108 0080×0060 (Text) 04
0x109 0132×0025 (Text) 04
0x10A 0132×0043 (Text) 04
0x10B 0132×0050 (Text) 04
0x10C 0132×0060 (Text) 04
0x10D 0320×0200 15
0x10E 0320×0200 16
0x10F 0320×0200 24
0x110 0640×0480 15
0x111 0640×0480 16
0x112 0640×0480 24
0x113 0800×0600 15
0x114 0800×0600 16
0x115 0800×0600 24
0x116 1024×0768 15
0x117 1024×0768 16
0x118 1024×0768 24
0x119 1280×1024 15
0x11A 1280×1024 16
0x11B 1280×1024 24
0x11C 1600×1200 08
0x11D 1600×1200 15
0x11E 1600×1200 16
0x11F 1600×1200 24

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[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  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