Sabes cómo renderiza tu GPU pero, ¿cómo envía la imagen al monitor?

Está claro que la GPU es la pieza del hardware de nuestro PC que a partir de una lista de instrucciones que le manda la CPU genera las imágenes que vemos en nuestro monitor. Proceso que ya hemos explicado anteriormente, pero no hemos explicado cuál es el proceso por el cual se envían las imágenes a la pantalla, lo cual os vamos a comentar en este artículo, ¿qué es el controlador de pantalla?.

Antes de empezar hemos de tener en cuenta que una cosa es la salida de vídeo, la cual es la interfaz de comunicación externa que comunica el PC o cualquier sistema derivado, como una consola, y otra el controlador de pantalla o de vídeo. La cual es la pieza de hardware encargada de leer el búfer de imagen generado en la VRAM por la GPU. Aunque ambos conceptos están relacionados, creemos que es importante que sepáis la diferencia entre ambos conceptos. Ya que la confusión entre ambos suele traer problemas para entender el concepto. Para hacerlo más simple, primero la GPU crea el búfer de imagen, luego el controlador de pantalla lee el búfer de imagen, para posteriormente codificarlo para la interfaz de vídeo correspondiente.

Al principio solo existía el televisor

Terminal TV Typewriter

Las primeras terminales de texto para miniordenadores traían consigo una pantalla de televisión estándar, pero sin la capacidad de poder captar la señal televisiva. ¿El motivo? Se vendían sin el receptor de videofrecuencia. No obstante, se necesitaba hardware especializado para enviar la señal correcta. El motivo es que la señal de vídeo de los televisores CRT y demás sistemas derivados era una señal continua, por lo que era necesario utilizar hardware especializado que fuese capaz de contar el tiempo en el que se podía emitir la señal y cuando no para que la imagen apareciese de forma correcta en pantalla.

Los primeros diseños eran llamados TV Typewriters en honor a la invención de Don Lancaster, basada en un aparato que permitía escribir texto en pantalla. La invención no era un ordenador, pero su unión con las primeras CPU y RAMs domésticas dio a luz a la primera generación de ordenadores domésticos.  Dichos sistemas inicialmente utilizaban una gran cantidad de chips TTL, pero la revolución de los chips LSI pronto unifico esas circuiterías complejas en un solo chip.

Pero no solo se encargaban de contar los tiempos, sino que además lo que hacían era generar la imagen para enviarla a la pantalla. Fue en ese momento donde aparecieron una serie de interfaces de vídeo propietaria que ataban los monitores a marcas y arquitecturas concretas. El monitor por aquel entonces era visto como un accesorio desde el que capitalizar y cada plataforma tenía su propio estándar en cuanto a resolución por línea, número de líneas, tasa de refresco y sobre todo interfaz de vídeo.

A la velocidad del haz de electrones

Controlador Pantalla CRT

La memoria RAM era extremadamente cara para los primeros PCs, por lo que tener un búfer de imagen era algo prohibitivo. Para eso se utilizaban otros métodos de renderizado que se basaban especialmente en renderizar a la velocidad en la que el haz de electrones iba a atravesando la pantalla. Eso significaba que muchos sistemas no podían calcular nada con la CPU a tiempo de la pantalla activa durante años.

A medida que el precio por bit de la memoria se fue abaratando se hizo posible utilizar sistemas basados en el búfer de imagen. Estos se basan en almacenar una representación de la imagen que se va a reproducir en pantalla de manera temporal en la memoria que utiliza el sistema de vídeo. Pero dicho búfer de imagen solo se podía actualizar durante el periodo en que no se dibujaba nada en memoria. Dicho periodo era mucho más corto en número de líneas de escaneo y tenía que compartir tiempo con el tiempo de ejecución del programa, lo que afectaba al rendimiento del ordenador.

La solución llego con la aparición de la RAM de doble puerto, conocida como VRAM, la cual permitía acceder al búfer de imagen por dos fuentes distintas. Esto permitía la modificación al vuelo de los datos gráficos. Pero especialmente permite el uso de doble búfer de imagen, en el que mientras el chip gráfico se encarga de renderizar el siguiente fotograma el controlador de pantalla está leyendo el búfer actual de imagen.

Controlador de pantalla y paneles LCD

Paneles LCD

Las pantallas LCD tienen una particularidad, no funcionan utilizando un haz de electrones, pero los mecanismos de transmisión de imágenes que se utilizan para enviar imágenes no han cambiado, lo que ha cambiado es el medio en el que se envían. Por lo que las imágenes se envían en su sucesión de paquetes de datos que la señal de vídeo va descodificando para ir mostrando la imagen a la antigua usanza, es decir, por líneas de escaneo.

Lo que se traduce en que los mecanismos son exactamente los mismos que antaño y no han cambiado. La diferencia es que el término píxel no existía en las pantallas CRT y más bien eran líneas de escaneo que iban variando el color de salida a base de ir variando el voltaje de salida de la señal a base de un complejo mecanismo de resistencias. En los sistemas LCD se envían lo que se envían son los datos empaquetados de cada pixel, es decir, su información de color RGB. Siendo este el único cambio respecto a las pantallas CRT, pero que implica el no tener que utilizar ningún circuito analógico para generar la señal de vídeo, de ahí a que las salidas de vídeo para pantalla LCD como el DisplayPort y el HDMI se llamen salidas digitales.

¿Dónde se encuentra el controlador de pantalla?

GPU

Se encuentra dentro de la propia GPU acompañando al resto de aceleradores y coprocesadores de la misma como las unidades DMA, el códec de vídeo y muchos otros elementos importantes. Esto es debido a que accede a la misma memoria a la que accede la GPU, ya que necesita acceder al búfer de imagen para poder enviar la imagen a la interfaz de vídeo.

El controlador de pantalla a día de hoy ha evolucionado enormemente, permitiendo no solo varias resoluciones, sino interaccionar con diversos estándares de interfaz de vídeo y enviar señales de vídeo diferentes a distintas pantallas de manera sincronizada.