VESA BIOS Extensions
From Wikipedia, the free encyclopedia
VESA BIOS Extensions (VBE) comprise 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 max out at the resolution of 640×480 pixels with 16 color (4-bit) depth.
VBE is made available through the video adapter's BIOS, which installs interrupt vectors pointing at itself during system startup. Unfortunately, the older versions of VBE (those bundled with the vast majority of existing video boards) supported only a real mode interface, which couldn't be used without a significant performance penalty from within protected mode operating systems, such as Windows 95 or Linux. This meant that the VBE standard was almost never used for writing video-drivers, and each video board vendor had to invent a proprietary protocol for communicating with their own board(s). Despite this, many existing drivers still thunk out to the real mode interrupt to initialize screen modes and gain direct access to a card's linear frame buffer, tasks which would otherwise involve many hundred port writes that change from card to card.
Contents |
[edit] Standards
[edit] VESA BIOS Extensions (VBE Core) 2.0 [Nov. 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.
- 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 and 256 color graphics modes for resolutions from 320x200 right up to 1600x1200.
[edit] VESA BIOS Extensions (VBE Core) 3.0 [Sep. 1998]
A superset of the VBE 2.0 standard. This standard adds refresh rate control, support for stereo glasses, improved multi-buffering support 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 hardware, software needs to page flip twice as much 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.
[edit] VBE/Accelerator Functions (VBE/AF) [Aug. 1996]
VBR/AF provides a low-level, standard interface to common acceleration functions available on most hardware. Some of the functions supported in the standard are access to hardware cursors, Bit Block Transfers (Bit Blt) , off screen sprites, hardware panning, drawing and other functions.
[edit] VESA Display Power Management Signaling (DPMS) 1.0
DPMS is a hardware standard that allows graphics cards to communicate with DPMS-compliant monitors via a special signaling system that can be used with existing graphics controllers and monitor cables. This signaling 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.
[edit] VESA video mode numbers
640x400 | 640x480 | 800x500 | 800x600 | 896x672 | 1024x640 | 1024x768 | 1152x720 | 1280x1024 | 1440x900 | 1600x1200 | |
---|---|---|---|---|---|---|---|---|---|---|---|
256 color palette | 256 | 257 | 367 | 259 | 303 | 362 | 261 | 357 | 263 | 352 | 284 |
16-bit (5:5:5) | 289 | 272 | 368 | 275 | 304 | 363 | 278 | 358 | 281 | 353 | 285 |
16-bit (5:6:5) | 290 | 273 | 369 | 276 | 305 | 364 | 279 | 359 | 282 | 354 | 286 |
24-bit (8:8:8) | 291 | 274 | 370 | 277 | 306 | 365 | 280 | 360 | 283 | 355 | 287 |
32-bit (8:8:8) | 292 | 297 | 371 | 302 | 307 | 366 | 312 | 361 | 317 | 356 | 322 |
[edit] Linux video mode numbers
The Linux kernel allows user configuration of VESA modes at boot time using the 'vga' kernel parameter. This parameter does not directly accept VESA video mode numbers; instead, a Linux video mode number must be calculated using the VESA number.
To calculate the Linux video mode number, convert the decimal VESA mode number from the above table to hexadecimal, add 0x200, and convert the result back to decimal. The resulting decimal value can be passed to the kernel in the form 'vga=XXX', where XXX is the value.
Linux_kernel_mode_number = VESA_mode_number + 0x200
[edit] External links
- Dr. Dobb's Examining the VESA VBE 2.0 Specification
- Scitech Software Creators of the useful UniVBE and Scitech Display Doctor VESA VBE enhancement software. Made freely available in recent years.
- SuperVGA/VESA programmer's notes
- VBE 3 standard (PDF format)
Categories: BIOS | VESA