Framebuffer: Difference between revisions

Content deleted Content added
m Color palette: copy edit
m tag engvar. grammar.
Line 1:
{{short description|Portion of random-access memory containing a bitmap that drives a video display}}
{{Use American English|date=November 2024}}
 
[[File:Sun sbus cgsix framebuffer.jpg|thumb|Sun TGX Framebuffer]]
 
Line 10 ⟶ 12:
== History ==
[[File:SWAC 003.jpg|thumb|Memory pattern on [[SWAC (computer)|SWAC]] Williams tube CRT in 1951]]
Computer researchers{{who|date=July 2017}} had long discussed the theoretical advantages of a framebuffer, but were unable to produce a machine with sufficient [[computer memory|memory]] at an economically practicable cost.{{citation needed|date=August 2017}}<ref name="Gaboury">{{Cite journal|last=Gaboury|first=J.|date=2018-03-01|title=The random-access image: Memory and the history of the computer screen|journal=Grey Room|volume=70|url=https://escholarship.org/uc/item/0b3873pn|issue=70|pages=24–53|doi=10.1162/GREY_a_00233|s2cid=57565564|issn=1526-3819|hdl=21.11116/0000-0001-FA73-4|hdl-access=free}}</ref> In 1947, the [[Manchester Baby]] computer used a [[Williams tube]], later the Williams-Kilburn tube, to store 1024 bits on a [[cathode-ray tube|cathode-ray tube (CRT)]] memory and displayed on a second CRT.<ref>{{Cite journal|last1=Williams|first1=F. C.|last2=Kilburn|first2=T.|date=March 1949|title=A storage system for use with binary-digital computing machines|url=https://ieeexplore.ieee.org/document/5241129|archive-url=https://web.archive.org/web/20190426011059/https://ieeexplore.ieee.org/document/5241129|url-status=dead|archive-date=April 26, 2019|journal=Proceedings of the IEE - Part III: Radio and Communication Engineering|volume=96|issue=40|pages=81–|doi=10.1049/pi-3.1949.0018}}</ref><ref>{{Cite web|url=http://curation.cs.manchester.ac.uk/digital60/www.digital60.org/birth/manchestercomputers/mark1/documents/report1947cover.html|title=Kilburn 1947 Report Cover Notes (Digital 60)|website=curation.cs.manchester.ac.uk|access-date=2019-04-26}}</ref> Other research labs were exploring these techniques with [[MIT Lincoln Laboratory]] achieving a 4096 display in 1950.<ref name="Gaboury" />
 
A color scanned display was implemented in the late 1960s, called the [[Brookhaven National Laboratory|Brookhaven]] RAster Display (BRAD), which used a [[drum memory]] and a television monitor.<ref>{{citation |author1=D. Ophir |author2=S. Rankowitz |author3=B. J. Shepherd |author4=R. J. Spinrad |title=BRAD: The Brookhave Raster Display |work=Communications of the ACM |volume=11 |number=6 |date=June 1968 |pages=415–416 |doi=10.1145/363347.363385|s2cid=11160780 |doi-access=free }}</ref> In 1969, A. Michael Noll of [[Bell Labs]] implemented a scanned display with a frame buffer, using [[magnetic-core memory]].<ref>{{cite journal |last=Noll |first=A. Michael |title=Scanned-Display Computer Graphics |journal=Communications of the ACM |volume=14 |number=3 |date=March 1971 |pages=145–150 |doi=10.1145/362566.362567|s2cid=2210619 |doi-access=free }}</ref> 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.
Line 35 ⟶ 37:
 
== 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, meanwhilewhile 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):
rectangle of swatches):
 
:{| style="border-style: none" border="0" cellpadding="0"
Line 76 ⟶ 77:
As the demand for better graphics increased, hardware manufacturers created a way to decrease the amount of [[CPU]] time required to fill the framebuffer. This is commonly called ''graphics acceleration''. Common graphics drawing commands (many of them geometric) are sent to the graphics accelerator in their raw form. The accelerator then [[Rasterisation|rasterizes]] the results of the command to the framebuffer. This method frees the CPU to do other work.
 
Early accelerators focused on improving the performance of 2D [[GUI]] systems. While retaining these 2D capabilities, most modern accelerators focus on producing 3D imagery in real time. A common design uses a [[graphics library]] such as [[OpenGL]] or [[Direct3D]] which interfaces with the graphics driver to translate received commands to instructions for the accelerator's [[graphics processing unit]] (GPU). The GPU uses those instructions to compute the rasterized results and the results are [[bit blit]]ted to the framebuffer. The framebuffer's signal is then produced in combination with built-in video overlay devices (usually used to produce the mouse cursor without modifying the framebuffer's data) and any final special effects that are produced by modifying the output signal. An example of such final special effects was the [[spatial anti-aliasing]] technique used by the [[3dfx Voodoo]] cards. These cards add a slight blur to the output signal that makes aliasing of the rasterized graphics much less obvious.
 
At one time there were many manufacturers of graphics accelerators, including: [[3dfx Interactive]]; [[ATI Technologies|ATI]]; [[Hercules Computer Technology|Hercules]]; [[Trident Microsystems|Trident]]; [[Nvidia]]; [[Radius (hardware company)|Radius]]; [[S3 Graphics]]; [[Silicon Integrated Systems|SiS]] and [[Silicon Graphics]]. {{as of|2015}} the market for graphics accelerators for x86-based systems is dominated by Nvidia (acquired 3dfx in 2002), [[AMD]] (who acquired ATI in 2006), and [[Intel]].
Line 85 ⟶ 86:
Framebuffers differ significantly from the [[vector display]]s that were common prior to the advent of raster graphics (and, consequently, to the concept of a framebuffer). With a vector display, only the [[vertex (geometry)|vertices]] of the graphics primitives are stored. The [[electron beam]] of the output display is then commanded to move from vertex to vertex, tracing a line across the area between these points.
 
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 ==