A display list (or ''display file'') is a series of graphics commands that define an output image. The image is created (
''rendered'') by executing the commands to combine various
primitives. This activity is most often performed by specialized display or processing hardware partly or completely independent of the system's CPU for the purpose of freeing the CPU from the overhead of maintaining the display, and may provide output features or speed beyond the CPU's capability.
For a display device without a
frame buffer
A framebuffer (frame buffer, or sometimes framestore) is a portion of random-access memory (RAM) containing a bitmap that drives a video display. It is a memory buffer containing data representing all the pixels in a complete video frame. Modern ...
, such as
vector graphics displays, the commands were executed every fraction of a second to maintain and animate the output. In modern systems, the commands need only be executed when they have changed or in order to refresh the output (e.g., when restoring a minimized window).
A display list can represent both two- and three-dimensional scenes. Systems that make use of a display list to store the scene are called
retained mode
Retained mode in computer graphics is a major pattern of API design in graphics libraries, in which
* the graphics library, instead of the client, retains the scene (complete object model of the rendering primitives) to be rendered and
* the ...
systems as opposed to immediate mode systems.
One of the earliest popular systems with true display list was the
Atari 8-bit family
The Atari 8-bit family is a series of 8-bit home computers introduced by Atari, Inc. in 1979 as the Atari 400 and Atari 800. The series was successively upgraded to Atari 1200XL , Atari 600XL, Atari 800XL, Atari 65XE, Atari 130XE, Atari 800XE, ...
. The display list (actually called so in Atari terminology) is a series of instructions for
ANTIC
Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977-1978 by ...
, the video co-processor used in these machines. This program, stored in the computer's memory and executed by ANTIC in real time, can specify blank lines, any of six text modes and eight graphics modes, which sections of the screen can be horizontally or vertically fine scrolled, and trigger Display List Interrupts (called
raster interrupt
A raster interrupt (also called a horizontal blank interrupt) is an interrupt signal in a legacy computer system which is used for display timing. It is usually, though not always, generated by a system's graphics chip as the scan lines of a fr ...
s or
HBI on other systems).
The
Amstrad PCW family contains a Display List function called the 'Roller RAM'. This is a 512-byte RAM area consisting of 256 16-bit vectors into RAM, one for each line of the 720 × 256 pixel display. Each vector identifies the location of 90 bytes of monochrome pixels that hold the line's 720 pixel states. The 90 bytes of 8 pixel states are actually spaced at 8-byte intervals, so there are 7 unused bytes between each byte of pixel data. This suits how the text-orientated PCW constructs a typical screen buffer in RAM, where the first character's 8 rows are stored in the first 8 bytes, the second character's rows in the next 8 bytes and so on. The Roller RAM was implemented to speed up display scrolling as it would have been unacceptably slow for its 3.4 MHz Z80 to move up the 23 KB display buffer 'by hand' i.e. in software. The Roller RAM starting entry used at the beginning of a screen refresh is controlled by a Z80-writable I/O register. Therefore, the screen can be scrolled simply by changing this I/O register.
Another system using a Display List-like feature in hardware is the
Amiga
Amiga is a family of personal computers introduced by Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and significantly improved graphi ...
, which, not coincidentally, was also designed by some of the same people who made the
Atari 8-bits custom hardware. The Amiga display hardware was extremely sophisticated for its time and, once directed to produce a display mode, it would continue to do so automatically for every following scan line. The computer also included a dedicated co-processor, called "
Copper
Copper is a chemical element with the symbol Cu (from la, cuprum) and atomic number 29. It is a soft, malleable, and ductile metal with very high thermal and electrical conductivity. A freshly exposed surface of pure copper has a pinkis ...
", which ran a simple program or 'Copper List' intended for modifying hardware registers in sync with the display. The Copper List instructions could direct the Copper to wait for the display to reach a specific position on the screen, and then change the contents of hardware registers. In effect, it was a processor dedicated to servicing
raster interrupt
A raster interrupt (also called a horizontal blank interrupt) is an interrupt signal in a legacy computer system which is used for display timing. It is usually, though not always, generated by a system's graphics chip as the scan lines of a fr ...
s. The Copper was used by Workbench to mix multiple display modes (multiple resolutions and color palettes on the monitor at the same time), and by numerous programs to create rainbow and gradient effects on the screen. The Amiga Copper was also capable of reconfiguring the sprite engine mid-frame, with only one scanline of delay. This allowed the Amiga to draw more than its 8 hardware sprites, so long as the additional sprites did not share scanlines (or the one scanline gap) with more than 7 other sprites. i.e., so long as at least one sprite had finished drawing, another sprite could be added below it on the screen. Additionally, the later 32-bit AGA chipset allowed drawing bigger sprites (more pixels per row) whilst retaining the same multiplexing. Note that the Amiga also had dedicated block-shifter ("blitter") hardware, which could draw larger objects into a framebuffer. This was often used in place of, or in addition to, sprites.
In more primitive systems, the results of a display list can be simulated, though at the cost of CPU-intensive writes to certain display-mode, color-control, or other visual effect registers in the video device, rather than a series of rendering commands executed by the device. Thus, one must create the displayed image using some other rendering process, either before or while the CPU-driven display generation executes. In many cases, the image is also modified or re-rendered between
frames. The image is then displayed in various ways, depending on the exact way in which the CPU-driven display code is implemented.
Examples of the results possible on these older machines requiring CPU-driven video include effects such as Commodore 64/128'
FLImode, or
Rainbow Processing
A rainbow is a meteorological phenomenon that is caused by reflection, refraction and dispersion of light in water droplets resulting in a spectrum of light appearing in the sky. It takes the form of a multicoloured circular arc. Rainbows c ...
on the ZX Spectrum.
Deprecation
Display lists have largely been deprecated in modern graphics architectures, as they represent a set of commands in the fixed function
graphics pipeline
In computer graphics, a computer graphics pipeline, rendering pipeline or simply graphics pipeline, is a conceptual model that describes what steps a graphics system needs to perform to Rendering (computer graphics), render a ...
. Modern architectures use shaders and
vertex buffer objects, to avoid tying graphics performance to the
CPU. However, low level graphics APIs such as
Vulkan
Vulkan is a low- overhead, cross-platform API, open standard for 3D graphics and computing. Vulkan targets high-performance real-time 3D graphics applications, such as video games and interactive media. Vulkan is intended to offer higher perfor ...
and
DirectX 12
Microsoft DirectX is a collection of application programming interfaces (APIs) for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with "Direct" ...
do expose display list like functionality in the form of command buffers and command lists.
References
{{reflist
See also
*
List of home computers by video hardware
This is a list of home computers, sorted alphanumerically, which lists all relevant details of their video hardware.
Home computers are the second generation of desktop computers, entering the market in 1977 and becoming common during the 1980s. ...
*
ANTIC
Alphanumeric Television Interface Controller (ANTIC) is an LSI ASIC dedicated to generating 2D computer graphics to be shown on a television screen or computer display. Under the direction of Jay Miner, the chip was designed in 1977-1978 by ...
*
Atari 8-bit family
The Atari 8-bit family is a series of 8-bit home computers introduced by Atari, Inc. in 1979 as the Atari 400 and Atari 800. The series was successively upgraded to Atari 1200XL , Atari 600XL, Atari 800XL, Atari 65XE, Atari 130XE, Atari 800XE, ...
*
OCS Copper
*
Amiga
Amiga is a family of personal computers introduced by Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and significantly improved graphi ...
*
MOS Technology VIC-II
The VIC-II (Video Interface Chip II), specifically known as the MOS Technology 6567/8562/8564 (NTSC versions), 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals (combined to composite video in the RF modulator) and D ...
*
Commodore 64
The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International (first shown at the Consumer Electronics Show, January 7–10, 1982, in Las Vegas). It has been listed in the Guinness ...
*
Sprite (computer graphics)
Sprite commonly refers to:
* Sprite (drink), a lemon-lime beverage produced by the Coca-Cola Company
* Sprite (computer graphics), a smaller bitmap composited onto another by hardware or software
* Sprite (folklore), a type of legendary creature i ...
*
Scanline rendering
Scanline rendering (also scan line rendering and scan-line rendering) is an algorithm for visible surface determination, in 3D computer graphics, that works on a row-by-row basis rather than a polygon-by-polygon or pixel-by-pixel basis. All of t ...
Computer graphics