This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
VESA BIOS Extensions (VBE) is aVESA 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 10hBIOS calls, which are limited to resolutions of 640×480pixels with 16 colour (4-bit) depth or less. VBE is made available through thevideo card's BIOS, which installs someinterrupt vectors thatpoint to itself duringboot up.
Most newer cards implement the more capable VBE 3.0 standard. Older versions of VBE provide only areal mode interface, which cannot be used without a significant performance penalty from withinprotected 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 aproprietary protocol for communicating with its own video card. Despite this, it is common that a driverthunk out to the real mode interrupt in order to initialize screen modes and gain direct access to a card'slinear frame buffer, because these tasks would otherwise require handling many hundreds of proprietary variations that exist from card to card.
InEFI 1.x systems, the INT 10H and the VESA BIOS Extensions (VBE) are replaced by the EFI UGA protocol. In widely usedUEFI 2.x systems, the INT 10H and the VBE are replaced by theUEFI GOP.[1][2]
Initially, the need for standardization came from problems with accessing higher than standardVGA resolutions and color-depth modes onSuper VGA graphic cards. Using those modes with cards produced by different manufacturers requireddrivers, which were available only for a few programs (mainlyAutoCAD andWindows), while majority of the software was still made forDOS. The VBE allowed developers of DOS real-mode applications to use the new graphic modes in a common, standardized way.[3]
VBE 1.0 (VS891001) was defined in 1989.[4] VBE 1.1 (VS900602) was defined in 1990. VBE 1.2 (VS911022) was defined in 1991.[5] These versions of VBE require real mode to work.
VBE defines several new functions called throughINT 10H. The function numbering start with AX=4F00, or (AH=4F, AL=00), forFunction 00h. 00h to 05h were defined in VBE 1.0, 06h and 07h in 1.1, and 08h in 1.2.
This standard provides the primary functionality of the VESA BIOS Extensions. It allows applications to determine the capabilities of thegraphics 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 linearframebuffer access andprotected mode banking. Some of the VBE Core 2.0[6] features include:
A superset of the VBE 2.0 standard. This standard addsrefresh rate control, facilities forstereo glasses, improved multi-buffering and other functions to the VBE 2.0 standard.
A new "Protected Mode Entry Point" was added as an alternative toFunction 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 oldFunction 0Ah.
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 screensprites, 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. TheFreeBE/AF project implementsfree third-party VBE/AF drivers for certain graphics cards.
Supplemental specifications provides device independent interface between application software and Super VGA hardware. Function numbers are assigned by VESA Software Standards Committee (SSC).
DPMS is a hardware standard that allows graphics cards to communicate with DPMS-compliantmonitors 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.
Allows access to special features in flat panel controllers.
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:
Provides standard entry to vendor-specific extensions.
TheDisplay Data Channel orDDC is a digital connection between acomputer display and agraphics adapter that allows the display to communicate its specifications to the adapter. The standard was created byVESA.
Provides hardware independent means for operating system and application to read and write data overI²C serial control interface.
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:
| Bit | Meaning |
|---|---|
| 0–8 | Mode numbers. If bit 8 is 1, it is a VESA defined VBE mode. |
| 9-10 | Reserved for expansion. Must be set to 0. |
| 11 | Refresh rate control Select. If set to 1, use user specified CRTC values for refresh rate, otherwise use BIOS default refresh rate. |
| 12–13 | Reserved for VBE/AF. Must be set to 0. |
| 14 | Linear/Flat Frame Buffer Select. If set to 1, use linear frame buffer, otherwise use banked frame buffer. |
| 15 | Preserve 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, useFunction01h - 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.
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 forbackward 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.[citation needed]
| Graphics modes | 320×200 | 640×400 | 640×480 | 800×600 | 1024×768 | 1280×1024 |
|---|---|---|---|---|---|---|
| 16-color palette | 258 (0102h), 106 (6Ah) | 260 (0104h) | 262 (0106h) | |||
| 256-color palette | 256 (0100h) | 257 (0101h) | 259 (0103h) | 261 (0105h) | 263 (0107h) | |
| 15-bit (5:5:5) | 269 (010Dh) | 272 (0110h) | 275 (0113h) | 278 (0116h) | 281 (0119h) | |
| 16-bit (5:6:5) | 270 (010Eh) | 273 (0111h) | 276 (0114h) | 279 (0117h) | 282 (011Ah) | |
| 24-bit (8:8:8) | 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 modes | Columns | |
|---|---|---|
| Rows | 80 | 132 |
| 25 | 265 (0109h) | |
| 43 | 266 (010Ah) | |
| 50 | 267 (010Bh) | |
| 60 | 264 (0108h) | 268 (010Ch) |
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 (denoted in red).
| Graphics modes | 320×200 | 640×400 | 640×480 | 800×500 | 800×600 | 896×672 | 1024×640 | 1024×768 | 1152×720 | 1280×1024 | 1360×768 | 1440×900 | 1600×1200 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16-color palette | [7] | [7] | 258 (0102h), 106 (6Ah) | 260 (0104h) | 262 (0106h) | ||||||||
| 256-color palette | [7] | 256 (0100h) | 257 (0101h) | 367 (016Fh) | 259 (0103h) | 303 (012Fh) | 362 (016Ah) | 261 (0105h) | 357 (0165h) | 263 (0107h) | 352 (0160h)[8] | 284 (011Ch) | |
| 15-bit (5:5:5) | 269 (010Dh) | 289 (0121h) | 272 (0110h) | 368 (0170h) | 275 (0113h) | 304 (0130h) | 363 (016Bh) | 278 (0116h) | 358 (0166h) | 281 (0119h) | 353 (0161h) | 285 (011Dh) | |
| 16-bit (5:6:5) | 270 (010Eh) | 290 (0122h) | 273 (0111h) | 369 (0171h) | 276 (0114h) | 305 (0131h) | 364 (016Ch) | 279 (0117h) | 359 (0167h) | 282 (011Ah) | 978 (03d2h) | 354 (0162h) | 286 (011Eh) |
| 24-bit (8:8:8) | 271 (010Fh) | 291 (0123h) | 274 (0112h) | 370 (0172h) | 277 (0115h) | 306 (0132h) | 365 (016Dh) | 280 (0118h) | 360 (0168h) | 283 (011Bh) | 355 (0163h) | 287 (011Fh) | |
| 32-bit (8:8:8)[9] | 292 (0124h) | 297 (0129h) | 371 (0173h) | 302 (012Eh) | 307 (0133h) | 366 (016Eh) | 312 (0138h) | 361 (0169h) | 317 (013Dh) | 980 (03d4h) | 356 (0164h) | 322 (0142h)[10] |
A few tools have been written to detect VBE modes available on a system. They generally work by invokingFunction 01h, which is more reliable than assuming a table of extended modes as it's part of the device's self-documentation.
hwinfo --framebuffer reports graphics information, including VESA modes on a "Mode" line.vbetest program that prints out VESA info.vbetest for DOS that dates back to 1994.vbeinfo command for printing out available video modes andvbetest for trying a specific mode. They use a built-in table instead ofFunction 01h. For other platforms, including x86 EFI, they are replaced by the more genericvideoinfo andvideotest.TheLinux 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 itsconfiguration 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).[13]
As indicated earlier, the VESA standard defines a limited set of modes; in particular, none above1280×1024 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 modesdenoted in red (and expressed in decimal form)may not apply to every graphics adapter!
| 320×200 | 640×400 | 640×480 | 800×500 | 800×600 | 896×672 | 1024×640 | 1024×768 | 1152×720 | 1280×1,024 | 1400×1,050 | 1440×900 | 1600×1,200 | 1920×1080 | 1920×1200 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 colors | 770 0302h | 772 0304h | 774 0306h | ||||||||||||
| 256 colors | 768 0300h | 769 0301h | 879 036Fh | 771 0303h | 815 032Fh | 874 036Ah | 773 0305h | 869 | 775 0307h | 835 | 864 | 796 | 893 | ||
| 15-bit (5:5:5) | 781 030Dh | 801 0321h | 784 0310h | 880 0370h | 787 0313h | 816 0330h | 875 036Bh | 790 0316h | 870 | 793 0319h | 865 | 797 | |||
| 16-bit (5:6:5) | 782 030Eh | 802 0322h | 785 0311h | 881 0371h | 788 0314h | 817 0331h | 876 036Ch | 791 0317h | 871 | 794 031Ah | 837 | 866 | 798 | ||
| 24-bit (8:8:8) | 783 030Fh | 803 0323h | 786 0312h | 882 0372h | 789 0315h | 818 0332h | 877 036Dh | 792 0318h | 872 | 795 031Bh | 838 | 867 | 799 | ||
| 32-bit (8:8:8)1 | 804 | 809 | 883 | 814 | 819 | 878 | 824 | 873 | 829 | 868 | 834 | 980 03D4h |
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=864 [ 352 (0160h)] also appears to select1280×800 (8-bit) for various laptops' displays.
VGA=834 [ 322 (0142h)] is1400×1050
The VESA BIOS emulation in theParallels virtual machine has a different set of non-standard VESA modes. As of build 3214, LRMI vbetest reveals these modes:
| 640×400 | 640×480 | 720×480 | 800×500 | 800×600 | 896×672 | 1024×640 | 1024×768 | 1152×720 | 1280×1,024 | 1440×900 | 1600×1,200 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 256 color palette | 256 (0100h) | 257 (0101h) | 367 (016Fh) | 364 (016Ch) | 259 (0103h) | 297 (0129h) | 358 (0166h) | 261 (0105h) | 355 (0163h) | 263 (0107h) | 352 (0160h) | 284 (011Ch) |
| 15-bit (5:5:5) | 272 (0110h) | 275 (0113h) | 278 (0116h) | 281 (0119h) | 285 (011Dh) | |||||||
| 16-bit (5:6:5) | 289 (0121h) | 273 (0111h) | 368 (0170h) | 365 (016Dh) | 276 (0114h) | 298 (012Ah) | 359 (0167h) | 279 (0117h) | 356 (0164h) | 282 (011Ah) | 353 (0161h) | 286 (011Eh) |
| 24-bit (8:8:8) | 290 (0122h) | 274 (0112h) | 369 (0171h) | 366 (016Eh) | 277 (0115h) | 299 (012Bh) | 360 (0168h) | 280 (0118h) | 357 (0165h) | 283 (011Bh) | 354 (0162h) | 287 (011Fh) |
The VESA BIOS emulation in theVirtualBox virtual machine has a different set of non-standard VESA modes. As of 6.1.38_Ubuntu build r153438, the VESA BIOS functionAX=0x4F01 reveals these modes (See alsoVBETables-gen.c):
| 320x200 | 640×400 | 640×480 | 800×600 | 1024×768 | 1152×864 | 1280×1024 | 1600×1200 | |
|---|---|---|---|---|---|---|---|---|
| 4-bit palette | 260 (0104h) | 262 (0106h) | ||||||
| 256 color palette | 326 (0146h) | 256 (0100h) | 257 (0101h) | 259 (0103h) | 261 (0105h) | 328 (0148h) | 263 (0107h) | |
| 15-bit (5:5:5) | 269 (010dh) | 272 (0110h) | 275 (0113h) | 278 (0116h) | 329 (0149h) | 281 (0119h) | ||
| 16-bit (5:6:5) | 270 (010eh) | 273 (0111h) | 276 (0114h) | 279 (0117h) | 330 (014ah) | 282 (011Ah) | ||
| 24-bit (8:8:8) | 271 (010fh) | 274 (0112h) | 277 (0115h) | 280 (0118h) | 331 (014bh) | 283 (011Bh) | ||
| 32-bit (x:8:8:8) | 320 (0140h) | 321 (0141h) | 322 (0142h) | 323 (0143h) | 324 (0144h) | 332 (014ch) | 325 (0145h) | 327 (0147h) |