Framebuffer
A framebuffer (frame buffer, or sometimes framestore) is a portion of
In
The information in the buffer typically consists of color values for every pixel to be shown on the display. Color values are commonly stored in 1-bit binary (monochrome), 4-bit palettized, 8-bit palettized, 16-bit high color and 24-bit true color formats. An additional alpha channel is sometimes used to retain information about pixel transparency. The total amount of memory required for the framebuffer depends on the resolution of the output signal, and on the color depth or palette size.
History
Computer researchers[who?] had long discussed the theoretical advantages of a framebuffer, but were unable to produce a machine with sufficient memory at an economically practicable cost.[citation needed][5] In 1947, the Manchester Baby computer used a Williams tube, later the Williams-Kilburn tube, to store 1024 bits on a cathode-ray tube (CRT) memory and displayed on a second CRT.[6][7] Other research labs were exploring these techniques with MIT Lincoln Laboratory achieving a 4096 display in 1950.[5]
A color scanned display was implemented in the late 1960s, called the Brookhaven RAster Display (BRAD), which used a drum memory and a television monitor.[8] In 1969, A. Michael Noll of Bell Labs implemented a scanned display with a frame buffer, using magnetic-core memory.[9] Later on, the Bell Labs system was expanded to display an image with a color depth of three bits on a standard color TV monitor.
In the early 1970s, the development of
In 1974, Evans & Sutherland released the first commercial framebuffer, the Picture System,[12] costing about $15,000. It was capable of producing resolutions of up to 512 by 512 pixels in 8-bit grayscale, and became a boon for graphics researchers who did not have the resources to build their own framebuffer. The New York Institute of Technology would later create the first 24-bit color system using three of the Evans & Sutherland framebuffers.[13] Each framebuffer was connected to an RGB color output (one for red, one for green and one for blue), with a Digital Equipment Corporation PDP 11/04 minicomputer controlling the three devices as one.
In 1975, the UK company Quantel produced the first commercial full-color broadcast framebuffer, the Quantel DFS 3000. It was first used in TV coverage of the 1976 Montreal Olympics to generate a picture-in-picture inset of the Olympic flaming torch while the rest of the picture featured the runner entering the stadium.
The rapid improvement of integrated-circuit technology made it possible for many of the home computers of the late 1970s to contain low-color-depth framebuffers. Today, nearly all computers with graphical capabilities utilize a framebuffer for generating the video signal. Amiga computers, created in the 1980s, featured special design attention to graphics performance and included a unique Hold-And-Modify framebuffer capable of displaying 4096 colors.
Framebuffers also became popular in high-end workstations and
Display modes
Framebuffers used in personal and home computing often had sets of defined modes under which the framebuffer can operate. These modes reconfigure the hardware to output different resolutions, color depths, memory layouts and refresh rate timings.
In the world of Unix machines and operating systems, such conveniences were usually eschewed in favor of directly manipulating the hardware settings. This manipulation was far more flexible in that any resolution, color depth and refresh rate was attainable – limited only by the memory available to the framebuffer.
An unfortunate side-effect of this method was that the display device could be driven beyond its capabilities. In some cases, this resulted in hardware damage to the display.[14] More commonly, it simply produced garbled and unusable output. Modern CRT monitors fix this problem through the introduction of protection circuitry. When the display mode is changed, the monitor attempts to obtain a signal lock on the new refresh frequency. If the monitor is unable to obtain a signal lock, or if the signal is outside the range of its design limitations, the monitor will ignore the framebuffer signal and possibly present the user with an error message.
LCD monitors tend to contain similar protection circuitry, but for different reasons. Since the LCD must digitally sample the display signal (thereby emulating an electron beam), any signal that is out of range cannot be physically displayed on the monitor.
Color palette
Framebuffers have traditionally supported a wide variety of color modes. Due to the expense of memory, most early framebuffers used 1-bit (2 colors per pixel), 2-bit (4 colors), 4-bit (16 colors) or 8-bit (256 colors) color depths. The problem with such small color depths is that a full range of colors cannot be produced. The solution to this problem was indexed color which adds a lookup table to the framebuffer. Each color stored in framebuffer memory acts as a color index. The lookup table serves as a palette with a limited number of different colors meanwhile the rest is used as an index table.
Here is a typical indexed 256-color image and its own palette (shown as a rectangle of swatches):
In some designs it was also possible to write data to the lookup table (or switch between existing palettes) on the run, allowing dividing the picture into horizontal bars with their own palette and thus render an image that had a far wider palette. For example, viewing an outdoor shot photograph, the picture could be divided into four bars, the top one with emphasis on sky tones, the next with foliage tones, the next with skin and clothing tones, and the bottom one with ground colors. This required each palette to have overlapping colors, but carefully done, allowed great flexibility.
Memory access
While framebuffers are commonly accessed via a
- Mapping the entire framebuffer to a given memory range.
- Port commands to set each pixel, range of pixels or palette entry.
- Mapping a memory range smaller than the framebuffer memory, then bank switching as necessary.
The framebuffer organization may be
RAM on the video card
Video cards always have a certain amount of RAM. A small portion of this RAM is where the bitmap of image data is "buffered" for display. The term frame buffer is thus often used interchangeably when referring to this RAM.
The CPU sends image updates to the video card. The video processor on the card forms a picture of the screen image and stores it in the frame buffer as a large bitmap in RAM. The bitmap in RAM is used by the card to continually refresh the screen image.[15]
Virtual framebuffers
Many systems attempt to emulate the function of a framebuffer device, often for reasons of compatibility. The two most common virtual framebuffers are the Linux framebuffer device (fbdev) and the X Virtual Framebuffer (Xvfb). Xvfb was added to the X Window System distribution to provide a method for running X without a graphical framebuffer. The Linux framebuffer device was developed to abstract the physical method for accessing the underlying framebuffer into a guaranteed memory map that is easy for programs to access. This increases portability, as programs are not required to deal with systems that have disjointed memory maps or require bank switching.
Page flipping
A frame buffer may be designed with enough memory to store two frames worth of video data. In a technique known generally as
Page flipping has become a standard technique used by PC
Graphics accelerators
As the demand for better graphics increased, hardware manufacturers created a way to decrease the amount of
Early accelerators focused on improving the performance of 2D
At one time there were many manufacturers of graphics accelerators, including:
Comparisons
With a framebuffer, the electron beam (if the display technology uses one) is commanded to perform a raster scan, the way a television renders a broadcast signal. The color information for each point thus displayed on the screen is pulled directly from the framebuffer during the scan, creating a set of discrete picture elements, i.e. pixels.
Framebuffers differ significantly from the
Likewise, framebuffers differ from the technology used in early text mode displays, where a buffer holds codes for characters, not individual pixels. The video display device performs the same raster scan as with a framebuffer, but generates the pixels of each character in the buffer as it directs the beam.
See also
- Bit plane
- Scanline rendering
- Swap chain
- Tile-based video game
- Tiled rendering
- Tektronix 4050 used a storage tube to eliminate the need for framebuffer memory
References
- ^ "What is frame buffer? A Webopedia Definition". webopedia.com. June 1998.
- ^ "Frame Buffer FAQ". Retrieved 14 May 2014.
- ISBN 9780782141344. Retrieved 2015-04-21.
- ^ "Smart Computing Dictionary Entry - video buffer". Archived from the original on 2012-03-24. Retrieved 2015-04-21.
- ^ S2CID 57565564.
- .
- ^ "Kilburn 1947 Report Cover Notes (Digital 60)". curation.cs.manchester.ac.uk. Retrieved 2019-04-26.
- S2CID 11160780
- S2CID 2210619.
- ^ a b Richard Shoup (2001). "SuperPaint: An Early Frame Buffer Graphics System" (PDF). Annals of the History of Computing. IEEE. Archived from the original (PDF) on 2004-06-12.
- ISBN 9783642821509.
- ^ Picture System (PDF), Evans & Sutherland, retrieved 2017-12-31
- ^ "History of the New York Institute of Technology Graphics Lab". Retrieved 2007-08-31.
- ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html XFree86 Video Timings HOWTO: Overdriving Your Monitor
- ^ "An illustrated Guide to the Video Cards". karbosguide.com.
- Alvy Ray Smith (May 30, 1997). "Digital Paint Systems: Historical Overview" (PDF). Microsoft Tech Memo 14. Archived from the original (PDF) on February 7, 2012.
- Wayne Carlson (2003). "Hardware advancements". A Critical History of Computer Graphics and Animation. The Ohio State University. Archived from the original on 2012-03-14.
- Alvy Ray Smith (2001). "Digital Paint Systems: An Anecdotal and Historical Overview" (PDF). IEEE Annals of the History of Computing. Archived from the original (PDF) on 2012-02-05.