Skip to content
Surf Wiki
Save to docs
general/bios

From Surf Wiki (app.surf) — the open knowledge base

VESA BIOS Extensions

Video board software standard


Summary

Video board software standard

VESA BIOS Extensions (VBE) is a VESA standard, currently at version 3, that defines the interface that can be used by software to access compliant video boards at high resolutions and bit depths. This is opposed to the "traditional" INT 10h BIOS calls, which are limited to resolutions of 640×480 pixels with 16 colour (4-bit) depth or less. VBE is made available through the video card's BIOS, which installs some interrupt vectors that point to itself during boot up.

Most newer cards implement the more capable VBE 3.0 standard. Older versions of VBE provide only a real mode interface, which cannot be used without a significant performance penalty from within protected mode operating systems. Consequently, the VBE standard has almost never been used for writing a video card's drivers; each vendor has thus had to invent a proprietary protocol for communicating with its own video card. Despite this, it is common that a driver thunk out to the real mode interrupt in order to initialize screen modes and gain direct access to a card's linear frame buffer, because these tasks would otherwise require handling many hundreds of proprietary variations that exist from card to card.

In EFI 1.x systems, the INT 10H and the VESA BIOS Extensions (VBE) are replaced by the EFI UGA protocol. In widely used UEFI 2.x systems, the INT 10H and the VBE are replaced by the UEFI GOP.

Standards

Initially, the need for standardization came from problems with accessing higher than standard VGA resolutions and color-depth modes on Super VGA graphic cards. Using those modes with cards produced by different manufacturers required drivers, which were available only for a few programs (mainly AutoCAD and Windows), while majority of the software was still made for DOS. The VBE allowed developers of DOS real-mode applications to use the new graphic modes in a common, standardized way.

Early VBE

VBE 1.0 (VS891001) was defined in 1989. VBE 1.1 (VS900602) was defined in 1990. VBE 1.2 (VS911022) was defined in 1991. These versions of VBE require real mode to work.

VBE defines several new functions called through INT 10H. The function numbering start with AX=4F00, or (AH=4F, AL=00), for Function 00h. 00h to 05h were defined in VBE 1.0, 06h and 07h in 1.1, and 08h in 1.2.

VESA BIOS Extensions (VBE core) 2.0 (November 1994)

This standard provides the primary functionality of the VESA BIOS Extensions. It allows applications to determine the capabilities of the graphics card and provides the ability to set the display modes that are found. VBE 2.0 adds some new features above the prior VBE 1.2 standard including linear framebuffer access and protected mode banking. Some of the VBE Core 2.0 features include:

; Linear framebuffer access: Enables direct framebuffer access in protected mode as one large area of memory instead of less efficient smaller chunks. ; Protected mode banking: Allows access to the framebuffer from protected mode without "thunking" down to real mode. This is implemented using a new Function 0Ah, but gives access only to functions 5 (Display Window Control, to select which part of the framebuffer is accessible through the 64KB VGA memory window), 7 (Get/Set Display Start, to change the memory position of the upper-left pixel, thus allowing scrolling and the use of multiple video pages), and 9 (Get/Set Palette Data, to change the palette colors in indexed modes). Thus setting the graphics mode required either doing it before entering Protected Mode, or using mode V86 to be able to run the BIOS software from a Protected-Mode operating system. ; Super VGA page flipping: Allows higher performance animation to provide for smooth animation for computer games and other high performance graphics programs. ; Super VGA virtual screens: Allows software to set up virtual display resolutions, larger than the actual displayed resolution, and smoothly scroll or pan around the larger image. ; High Color and TrueColor modes: Industry standard 16-bit and 24-bit graphics modes for resolutions from 320×200 up to ×.

VESA BIOS Extensions (VBE core) 3.0 (September 1998)

A superset of the VBE 2.0 standard. This standard adds refresh rate control, facilities for stereo glasses, improved multi-buffering and other functions to the VBE 2.0 standard.

; Triple buffering: Allows high speed applications to perform multi-buffering with less screen flickering and without having to wait for the graphics controller. ; Refresh rate control using GTF timings: This allows applications and operating system utilities to change the refresh rate in a standard way on all VBE 3.0 graphics controllers. Important for stereo applications, since when stereo is enabled, the user's effective refresh rate is cut in half. ; Stereo page flipping: When viewing an application using stereo glasses, software needs to page flip twice as often as normal, because it needs to generate separate images for each eye. This new feature allows stereo compatible software to display properly. ; Hardware stereo sync: Allows stereo software to determine if there is a connector for stereo glasses on the user's graphics card.

A new "Protected Mode Entry Point" was added as an alternative to Function 0Ah. This gives access to all the VBE functions, thus allowing things like changing the graphics mode or setting the logical scan line length from protected mode, which were not possible with the old Function 0Ah.

VBE/accelerator functions (VBE/AF) (August 1996)

VBE/AF provides a low-level, standard interface to common acceleration functions available on most hardware. Some of the functions defined in the standard are access to hardware cursors, Bit Block Transfers (Bit Blt), off screen sprites, hardware panning, drawing and other functions. It is defined to work under 32-bit protected mode. Despite the widespread adoption of VBE Core, very few devices support VBE/AF. The FreeBE/AF project implements free third-party VBE/AF drivers for certain graphics cards.

Supplemental specifications

Supplemental specifications provides device independent interface between application software and Super VGA hardware. Function numbers are assigned by VESA Software Standards Committee (SSC).

Power management extensions (PM)

DPMS is a hardware standard that allows graphics cards to communicate with DPMS-compliant monitors via a special signalling system that can be used with existing graphics controllers and monitor cables. This signalling system allows the graphics card to tell the monitor to go into a number of different power management or power saving states, which effectively allow the monitor to turn itself off when it is not in use.

Flat panel interface extensions (FP)

Allows access to special features in flat panel controllers.

Audio interface extensions (AI)

Provides standard to audio services.

Currently (version 1.00), the VBE/AI specification defines three device classes: WAVE, MIDI, and VOLUME. Device types not covered:

; CDROM control: which is covered by the Microsoft's CD-ROM Extensions. ; Effects processors: This class of device will be expanded in future version of the VBE/AI specification.

OEM extensions

Provides standard entry to vendor-specific extensions.

Display Data Channel (DDC)

Main article: Display Data Channel

The Display Data Channel or DDC is a digital connection between a computer display and a graphics adapter that allows the display to communicate its specifications to the adapter. The standard was created by VESA.

Serial Control Interface (SCI)

Provides hardware independent means for operating system and application to read and write data over I²C serial control interface.

VBE mode numbers

Although mode number is a 16-bit value, the optional VBE mode numbers are 14 bits wide. Bit 15 is used by VGA BIOS as a flag to clear or preserve display memory. VBE defined mode numbers as follows:

BitMeaning
0–8Mode numbers. If bit 8 is 1, it is a VESA defined VBE mode.
9-10Reserved for expansion. Must be set to 0.
11Refresh rate control Select. If set to 1, use user specified CRTC values for refresh rate, otherwise use BIOS default refresh rate.
12–13Reserved for VBE/AF. Must be set to 0.
14Linear/Flat Frame Buffer Select. If set to 1, use linear frame buffer, otherwise use banked frame buffer.
15Preserve Display Memory Select. If set to 1, preserve display memory, otherwise clear display memory.

Starting in VBE/Core 2.0, VESA no longer defines new VESA mode numbers and no longer requires a device to implement the old numbers. To properly detect information of a screen mode, use Function 01h - Return VBE Mode Information.

Mode 81FFh is a special video mode designed to preserve current memory contents and give access to the entire video memory.

Modes defined by VESA

Beginning with the VBE 2.0 standard, no new modes will be defined by VESA, and old modes are no longer mandatory. The use of defined modes should be considered deprecated: modern video cards may or may not use these mode numbers (even though most do for backward compatibility), and modern software should not use them. The correct way for software to discover available display modes is to obtain a list of modes (using "Function 00h - Return VBE Controller Information") and then to check each mode (using "Function 01h: Return VBE Mode Information") until it finds the mode/s it requires.

Graphics modes320×200640×400640×480800×6001024×7681280×102416-color palette256-color palette15-bit (5:5:5)16-bit (5:6:5)24-bit (8:8:8)
258 (0102h), 106 (6Ah)260 (0104h)262 (0106h)
256 (0100h)257 (0101h)259 (0103h)261 (0105h)263 (0107h)
269 (010Dh)272 (0110h)275 (0113h)278 (0116h)281 (0119h)
270 (010Eh)273 (0111h)276 (0114h)279 (0117h)282 (011Ah)
271 (010Fh)274 (0112h)277 (0115h)280 (0118h)283 (011Bh)

Modes 264–268 are text modes. 264 (0108h) is 80 columns × 60 rows (80×60), 265 (0109h) is 132×25, 266 (010Ah) is 132×43, 267 (010Bh) is 132×50 and 268 (010Ch) is 132×60.

Text modesColumnsRows8013225435060
265 (0109h)
266 (010Ah)
267 (010Bh)
264 (0108h)268 (010Ch)

Other commonly available graphics modes

The table below combines the modes defined by VESA (the values denoted in black) along with modes commonly used, but which may not work on all graphics cards as they are not defined by any standard ().

Graphics modes320×200640×400640×480800×6001024×768×16-color palette256-color palette15-bit (5:5:5)16-bit (5:6:5)24-bit (8:8:8)
258 (0102h),
106 (6Ah)260 (0104h)262 (0106h)
256 (0100h)257 (0101h)259 (0103h)261 (0105h)263 (0107h)
269 (010Dh)272 (0110h)275 (0113h)278 (0116h)281 (0119h)
270 (010Eh)273 (0111h)276 (0114h)279 (0117h)282 (011Ah)
271 (010Fh)274 (0112h)277 (0115h)280 (0118h)283 (011Bh)

Mode detection

A few tools have been written to detect VBE modes available on a system. They generally work by invoking Function 01h, which is more reliable than assuming a table of extended modes as it's part of the device's self-documentation.

  • hwinfo is the hardware detection tool used in SuSE Linux and in some other Linux distributions. Running hwinfo --framebuffer reports graphics information, including VESA modes on a "Mode" line.
  • mdt is a Linux or DOS tool that uses VESA BIOS functions to read monitor data.
  • The Linux Real Mode Interface (LRMI) has a program that prints out VESA info.
  • SciTech Software had a unrelated for DOS that dates back to 1994.
  • The x86 "PC" version GNU GRUB 2 has a command for printing out available video modes and for trying a specific mode. They use a built-in table instead of Function 01h. For other platforms, including x86 EFI, they are replaced by the more generic and .

Linux video mode numbers

The Linux kernel allows the user to select the VESA mode at boot time by passing a code in memory to the kernel. The LILO boot loader passes this code based on a "vga" parameter in its configuration file. It takes the form 'vga=XXX', where XXX is the decimal value, or 'vga=0xHHH', where HHH is the hexadecimal value. However, the 'vga=' boot loader parameter does not directly accept VESA video mode numbers; rather, the Linux video mode number is the VESA number plus 512 (in the case of the decimal representation) or plus 0x200 (in the case of the hexadecimal representation). For example, the defined VESA value of 257 (0x101), representing 640x480 and 256 colours, has an equivalent Linux video mode value of 769 (0x301).

As indicated earlier, the VESA standard defines a limited set of modes; in particular, none above × are covered and, instead, their implementation is completely optional for graphics adapter manufacturers. As vendors are free to utilize whatever additional values they please, this means that, in the table below, the modes (and expressed in decimal form) may not apply to every graphics adapter!

320×200640×400640×480800×500800×600896×672×640×768×720×1,024×1,050×900×1,200××16 colors256 colors15-bit (5:5:5)16-bit (5:6:5)24-bit (8:8:8)32-bit (8:8:8)1
770 0302h772 0304h774 0306h
768 0300h769 0301h879 036Fh771 0303h815 032Fh874 036Ah773 0305h775 0307h
781 030Dh801 0321h784 0310h880 0370h787 0313h816 0330h875 036Bh790 0316h793 0319h
782 030Eh802 0322h785 0311h881 0371h788 0314h817 0331h876 036Ch791 0317h794 031Ah
783 030Fh803 0323h786 0312h882 0372h789 0315h818 0332h877 036Dh792 0318h795 031Bh

1: 32-bit is really (8:8:8:8), but the final 8-bit number is an "empty" alpha channel. It is otherwise equal to 24-bit colour. Many GPUs use 32-bit colour mode instead of 24-bit mode merely for faster video memory access through 32-bit memory alignment.

VGA= also appears to select ×800 (8-bit) for various laptops' displays.

VGA= is ×

Modes available in Parallels

The VESA BIOS emulation in the Parallels virtual machine has a different set of non-standard VESA modes. As of build 3214, LRMI vbetest reveals these modes:

640×400640×480720×480800×500800×600896×672×640×768×720×1,024×900×1,200256 color palette15-bit (5:5:5)16-bit (5:6:5)24-bit (8:8:8)
256 (0100h)257 (0101h)367 (016Fh)364 (016Ch)259 (0103h)297 (0129h)358 (0166h)261 (0105h)355 (0163h)263 (0107h)352 (0160h)284 (011Ch)
272 (0110h)275 (0113h)278 (0116h)281 (0119h)285 (011Dh)
289 (0121h)273 (0111h)368 (0170h)365 (016Dh)276 (0114h)298 (012Ah)359 (0167h)279 (0117h)356 (0164h)282 (011Ah)353 (0161h)286 (011Eh)
290 (0122h)274 (0112h)369 (0171h)366 (016Eh)277 (0115h)299 (012Bh)360 (0168h)280 (0118h)357 (0165h)283 (011Bh)354 (0162h)287 (011Fh)

Modes available in VirtualBox

The VESA BIOS emulation in the VirtualBox virtual machine has a different set of non-standard VESA modes. As of 6.1.38_Ubuntu build r153438, the VESA BIOS function AX=0x4F01 reveals these modes (See also VBETables-gen.c):

320x200640×400640×480800×600×768×864×1024×12004-bit palette256 color palette15-bit (5:5:5)16-bit (5:6:5)24-bit (8:8:8)32-bit (x:8:8:8)
260262
326256257259261328263
269272275278329281
270273276279330282
271274277280331283
320321322323324332325327

References

References

  1. "What is efifb? — The Linux Kernel documentation".
  2. "What is vesafb? — The Linux Kernel documentation".
  3. Kliewer, Bradley Dyck. (December 1990). "VGA to the max".
  4. (2013-12-11). "SUPER VGA BIOS EXTENSION Standard # VS891001 › Gemixtes".
  5. (October 22, 1991). "VBE Version 1.2".
  6. (2008-12-11). "VBE/Core 2.0 Standard".
  7. Modes available via the traditional 10h BIOS call
  8. {{color. red. 352 (0160h) also appears to select {{val. 1280×800 (8-bit) for various laptops' displays
  9. [[32-bit]] is really (8:8:8:8), but the final 8-bit number is an "empty" alpha channel. It is otherwise equal to 24-bit color. Many GPUs use 32-bit color mode instead of 24-bit mode merely for faster video memory access through 32-bit [[memory alignment]].
  10. {{color. red. 322 (0142h) is 1,400×1,050
  11. [https://github.com/openSUSE/hwinfo hwinfo source code on GitHub]
  12. "mdt".
  13. See the kernel documentation in [https://www.kernel.org/doc/Documentation/svga.txt Documentation/svga.txt] and [https://www.kernel.org/doc/Documentation/fb/vesafb.txt Documentation/fb/vesafb.txt].
Wikipedia Source

This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.

Want to explore this topic further?

Ask Mako anything about VESA BIOS Extensions — get instant answers, deeper analysis, and related topics.

Research with Mako

Free with your Surf account

Content sourced from Wikipedia, available under CC BY-SA 4.0.

This content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.

Report