On Fri, Jan 24, 2003 at 01:14:53PM -0500, John van Vlaaderen wrote:
I am writing a glossary right now and I need to know the difference between:
vgabios, framebuffer and X
Wow, ok, not that this is the best place, but ok.
LinuxBIOS is currently mostly operational on what's commonly referred to as the PC platform. The last standardized graphics controller on this platform was the VGA. (Video Graphics Array) This VGA card had a BIOS that would initialize the card when the main system BIOS traversed all expansion cards looking for any BIOSes on them.
The VGA BIOS knows the details of how to program the graphics card. The VGA BIOS is closely tied to every single hardware. Different graphics chipset - different VGA BIOS. Graphics chipset makers are often reluctant to release detailed programming information for their chipsets, but a VGA BIOS is always included with the card. So if LinuxBIOS can make use of the VGA BIOS it is trivial to use the computer screen e.g. for startup debugging.
'framebuffer' has a couple of different meanings. One is the video memory on the graphics card. Another is the Linux drivers for accessing the said memory. Writing a Linux framebuffer driver requires the same detailed programming information as for a VGA BIOS. Framebuffer drivers aren't all that common, it has become sort of a niche, used frequently for Set-Top-Box and other embedded systems. (Reference: DirectFB.) Think of the framebuffer drivers as a VGA BIOS in Linux for Linux, it allows Linux to know all (or at least a lot) about the graphics controller in the system.
X is usually short for X-Windows which is the windowing system providing core GUI functionality in almost all available Unix systems. When open source people say X or X server they're often talking about XFree86, an open source X-Windows server. The X server also needs detailed knowledge about graphics chipsets, in order to provide and perform the desired functions in an efficient manner.
Short summary:
The VGA BIOS, a framebuffer driver and the X server all need detailed info on programming the graphics controller. They differ in whom they provide services for.
The VGA BIOS provides services mainly meant for MS-DOS and other "classical" textmode applications like LILO and Linux itself.
The framebuffer driver provides services mainly meant for Linux and is also a part of Linux.
The X server provides services to X clients and/or the window manager. All programs run in X are X clients.
Hope this clears it up.
//Peter