Display list

In OpenGL, display lists are useful to redraw the same geometry or apply a set of state changes multiple times.

The vector monitors or calligraphic displays of the 1960s and 1970s used electron beam deflection to draw line segments, points, and sometimes curves directly on a CRT screen.

Advanced Display Processors also supported control flow instructions, which were useful for drawing repetitive graphics such as text, and some could perform coordinate transformations such as 3D projection.

The display list (actually called so in Atari terminology) is a series of instructions for ANTIC, 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 interrupts or HBI on other systems).

The computer also included a dedicated co-processor, called "Copper", which ran a simple program or 'Copper List' intended for modifying hardware registers in sync with the display.

Additionally, the later 32-bit AGA chipset allowed the drawing of bigger sprites (more pixels per row) while retaining the same multiplexing.

[citation needed] In more primitive systems, the results of a display list can be simulated, though at the cost of CPU-intensive writes to certain display modes, color control, or other visual effect registers in the video device, rather than a series of rendering commands executed by the device.

[citation needed] Examples of the results possible on these older machines requiring CPU-driven video include effects such as Commodore 64/128's FLI mode, or Rainbow Processing on the ZX Spectrum.

[8] The glNewList function expects two arguments: an integer representing the name of the list, and an enumeration for the compilation mode.

Modern architectures use shaders and vertex buffer objects, to avoid tying graphics performance to the CPU.

Due to the nature of the display list, it must copy every command and its data, which may be a problem for certain environments where memory is scarce, and can be overall inefficient.