Lista de despliegue
# Lista de despliegue

En informática, una lista de despliegue (en inglés display list) es un programa o rutina constituido por una serie de instrucciones que deben ser ejecutadas por un microprocesador dedicado a gráficos, las cuales definen una imagen de salida. La imagen es interpretada (o renderizada) mediante la ejecución de las instrucciones de esta "lista de despliegue".

La lista de despliegue especifica tres cosas:

* Dónde se pueden encontrar los datos de pantalla.
* Qué modo de despliegue se usará para interpretar los datos de pantalla,
* Qué opciones de despliegue deben aplicarse (si las hay).

## Líneas de modo

Para entender el concepto de lista de despliegue, es importante despojarse de la idea de una pantalla representada como una imagen uniformemente constituida por un solo "modo de pantalla". Es decir, que todas las áreas de la superficie de la pantalla presentaran la imagen de la misma manera. En cambio, es mejor imaginarla como una pila de "líneas de modo". A su vez una "línea de modo" está constituida por una pila de líneas de barrido horizontal {en inglés:horizontal scan lines} y se extiende horizontalmente por toda la pantalla.

Por ejemplo, en un Atari de 8 bits, cada línea de "modo gráfico 2" se forma con 16 líneas de barrido horizontal de pantalla. En cambio una línea de "modo gráfico 0" tiene altura de sólo 8 líneas de barrido.

Al ampliar la imagen de ejemplo de la derecha queda clara esta explicación, pues se han exagerado las líneas de barrido de pantalla.

## Sistemas de modo retenido y de modo inmediato

Una lista de despliegue puede representar escenas bi o tridimensionales. Los sistemas que usan una lista de despliegue para almacenar la escena como el QuickDraw GX, se llaman sistemas de modo retenido {en inglés: retained mode systems} en contraposición a los sistemas de modo inmediato {en inglés: immediate mode systems} como el OpenGL.

En algunos sistemas de computación antiguos como el Atari 800 (o el Commodore 64), una lista de despliegue puede consistir en una serie de procesos de escritura, controlados por una CPU, sobre un determinado modo de despliegue, control de color, u otros registros para efectos visuales en la pantalla de vídeo, en vez de una serie de instrucciones de representación. Por lo tanto, la imagen a desplegar se debe crear mediante algún otro proceso de interpretación, ya sea antes o durante la ejecución de la lista de despliegue. En muchos casos, la imagen también es modificada o re-interpretada entre cuadro y cuadro. En este contexto, un cuadro {en inglés: frame} corresponde al barrido completo del área activa de una pantalla. Luego, la imagen se despliega de varias formas dependiendo de la manera exacta en que se haya implementado la lista de despliegue.

## Memoria de cuadro

En un dispositivo visualizador {en inglés: display device} que no tiene una memoria de cuadro {en inglés: frame buffer}, como eran los antiguos dispositivos de gráficos vectoriales, las órdenes eran ejecutadas cada fracción de segundo para mantener y animar la pantalla. En los sistemas modernos, las órdenes sólo necesitan ser ejecutadas cuando se han modificado o con el fin de refrescar la pantalla. Por ejemplo, al restaurar una ventana minimizada.

## Ejemplos de listas de despliegue

Como ejemplos de listas de despliegue de esas antiguas máquinas se pueden mencionar los modos HAM de Amiga, el modo FLI del Commodore 64/128, el Procesamiento Arcoíris {Rainbow Processing} del ZX Spectrum. En el tiempo que los primeros sistemas usaban un circuito de vídeo más bien simple, Atari diseñó un microprocesador dedicado (ANTIC) sólo para manejar las complejidades del despliegue de televisión.

## Otros usos de las listas de despliegue

Muchos dispositivos de impresión también hacen uso de listas de despliegue para evitar la necesidad de una memoria de cuadro {en inglés: frame buffer}. Por ejemplo, una impresora PostScript de alta resolución que imprime páginas en formato A4 a 600 ppp o {en inglés: dpi} podría requerir mucho más de un gigabyte de RAM para almacenar el mapa de bits {en inglés: framebuffer}. Mediante la conversión de la entrada en lenguaje PostScript u otro lenguaje de descripción de página, en una serie de órdenes para gráficos, generalmente se puede representar el contenido de la página en una cantidad de memoria más modesta. Luego las órdenes pueden ser convertidas en mapas de bits {scan converted o rasterized} y enviadas hacia a la impresora, de a pocas líneas de barrido cada vez.

