

Un framebuffer ( o a veces framestore ) es una porción de memoria de acceso aleatorio (RAM) [ 1 ] que contiene un mapa de bits que controla una pantalla de video. Es un búfer de memoria que contiene datos que representan todos los píxeles de un fotograma de video completo . [ 2 ] Las tarjetas de video modernas contienen circuitos de framebuffer en sus núcleos. Estos circuitos ayudan a convertir un mapa de bits en memoria en una señal de video que se puede mostrar en un monitor de computadora.
En informática , un búfer de pantalla es una parte de la memoria del ordenador que utiliza una aplicación para representar el contenido que se mostrará en la pantalla . [ 3 ] El búfer de pantalla también puede denominarse búfer de vídeo , búfer de regeneración o, simplemente , búfer de regeneración . [ 4 ] La expresión «búfer de pantalla» se refiere a una función lógica, mientras que la memoria de vídeo se refiere a una ubicación de almacenamiento de hardware. En concreto, el búfer de pantalla puede ubicarse en la RAM principal, la memoria de vídeo o en alguna otra ubicación de hardware.
Para reducir la latencia y evitar el desgarro de pantalla , se pueden almacenar en búfer varios fotogramas ; esta técnica se denomina almacenamiento en búfer múltiple . De esta forma, en cualquier momento, solo un fotograma será visible, mientras que los demás permanecerán ocultos. Los fotogramas actualmente invisibles se encuentran en el búfer fuera de pantalla .
La información en el búfer generalmente consiste en valores de color para cada píxel que se mostrará en la pantalla. Los valores de color se almacenan comúnmente en formatos binario de 1 bit (monocromo), paleta de 4 bits , paleta de 8 bits, color de alta resolución de 16 bits y color verdadero de 24 bits . En ocasiones, se utiliza un canal alfa adicional para conservar información sobre la transparencia de los píxeles. La cantidad total de memoria requerida para el búfer de fotogramas depende de la resolución de la señal de salida y de la profundidad de color o tamaño de la paleta.
Historia

Los investigadores informáticos habían discutido durante mucho tiempo las ventajas teóricas de un framebuffer, pero no pudieron producir una máquina con suficiente memoria a un costo económicamente viable. [ 5 ] En 1947, la computadora Manchester Baby utilizó un tubo Williams , más tarde el tubo Williams-Kilburn, para almacenar 1024 bits en una memoria de tubo de rayos catódicos (CRT) y mostrarlos en un segundo CRT. [ 6 ] [ 7 ] Otros laboratorios de investigación estaban explorando estas técnicas, y el Laboratorio Lincoln del MIT logró una pantalla de 4096 en 1950. [ 5 ]
A finales de la década de 1960 se implementó una pantalla de escaneo de color, llamada Brookhaven RAster Display (BRAD), que utilizaba una memoria de tambor y un monitor de televisión. [ 8 ] En 1969, A. Michael Noll de Bell Telephone Laboratories, Inc. implementó una pantalla de escaneo con un búfer de trama, utilizando memoria de núcleo magnético . [ 9 ] Aproximadamente un año después, el sistema de Bell Labs se amplió para mostrar una imagen con una profundidad de color de tres bits en un monitor de televisión a color estándar. Los gráficos vectoriales utilizados en la computadora tuvieron que convertirse para los gráficos escaneados de una pantalla de televisión.
A principios de la década de 1970, el desarrollo de los chips de circuitos integrados de memoria MOS ( memoria de óxido metálico-semiconductor ), en particular los chips DRAM ( memoria de acceso aleatorio dinámico) de alta densidad con al menos 1 kb de memoria, hizo posible crear, por primera vez, un sistema de memoria digital con búferes de fotogramas capaces de almacenar una imagen de vídeo estándar. [ 10 ] [ 11 ] Esto condujo al desarrollo del sistema SuperPaint por Richard Shoup en Xerox PARC en 1972. [ 10 ] Shoup pudo utilizar el búfer de fotogramas SuperPaint para crear un sistema de captura de vídeo digital primitivo. Al sincronizar la señal de salida con la señal de entrada, Shoup pudo sobrescribir cada píxel de datos a medida que se desplazaba hacia dentro. Shoup también experimentó con la modificación de la señal de salida utilizando tablas de color. Estas tablas de color permitieron al sistema SuperPaint producir una amplia variedad de colores fuera del rango de los datos limitados de 8 bits que contenía. Este esquema se convertiría más tarde en algo común en los búferes de fotogramas de las computadoras.
En 1974, Evans & Sutherland lanzó el primer framebuffer comercial, el Picture System, [ 12 ] con un costo aproximado de $15,000. Era capaz de producir resoluciones de hasta 512 por 512 píxeles en escala de grises de 8 bits , y se convirtió en una gran ventaja para los investigadores de gráficos que no tenían los recursos para construir su propio framebuffer. El Instituto de Tecnología de Nueva York crearía más tarde el primer sistema de color de 24 bits utilizando tres de los framebuffers de Evans & Sutherland. [ 13 ] Cada framebuffer estaba conectado a una salida de color RGB (una para rojo, una para verde y una para azul), con una minicomputadora PDP 11/04 de Digital Equipment Corporation controlando los tres dispositivos como uno solo.
En 1975, la empresa británica Quantel produjo el primer búfer de imagen comercial a todo color para transmisiones, el Quantel DFS 3000. Se utilizó por primera vez en la cobertura televisiva de los Juegos Olímpicos de Montreal de 1976 para generar una imagen dentro de otra imagen de la antorcha olímpica encendida, mientras que el resto de la imagen mostraba al corredor entrando al estadio.
La rápida mejora de la tecnología de circuitos integrados permitió que muchos ordenadores domésticos de finales de la década de 1970 incorporaran búferes de imagen con baja profundidad de color. Hoy en día, casi todos los ordenadores con capacidad gráfica utilizan un búfer de imagen para generar la señal de vídeo. Los ordenadores Amiga , creados en la década de 1980, destacaban por su especial atención al rendimiento gráfico e incluían un exclusivo búfer de imagen Hold-And-Modify capaz de mostrar 4096 colores.
Los framebuffers también se popularizaron en estaciones de trabajo de gama alta y placas base de sistemas arcade durante la década de 1980. SGI , Sun Microsystems , HP , DEC e IBM lanzaron framebuffers para sus estaciones de trabajo en este periodo. Estos framebuffers solían ser de mucha mayor calidad que los que se encontraban en la mayoría de los ordenadores domésticos y se utilizaban habitualmente en televisión, impresión, modelado por ordenador y gráficos 3D. Sega también utilizó framebuffers para sus placas base arcade de gama alta , que también eran de mayor calidad que las de los ordenadores domésticos.
Modos de visualización

Los búferes de imagen utilizados en la informática personal y doméstica suelen tener conjuntos de modos definidos bajo los cuales pueden operar. Estos modos reconfiguran el hardware para generar diferentes resoluciones, profundidades de color, distribuciones de memoria y frecuencias de actualización .
En el mundo de las máquinas y sistemas operativos Unix , estas comodidades solían descartarse en favor de la manipulación directa de la configuración del hardware. Esta manipulación era mucho más flexible, ya que permitía obtener cualquier resolución, profundidad de color y frecuencia de actualización , limitadas únicamente por la memoria disponible para el búfer de fotogramas.
Un efecto secundario indeseado de este método era que el dispositivo de visualización podía ser forzado más allá de sus capacidades. En algunos casos, esto provocaba daños en el hardware de la pantalla. [ 14 ] Más comúnmente, simplemente producía una salida distorsionada e inutilizable. Los monitores CRT modernos solucionan este problema mediante la introducción de circuitos de protección. Cuando se cambia el modo de visualización, el monitor intenta obtener una señal sincronizada con la nueva frecuencia de actualización. Si el monitor no puede obtener una señal sincronizada o si la señal está fuera del rango de sus limitaciones de diseño, el monitor ignorará la señal del búfer de fotogramas y posiblemente mostrará al usuario un mensaje de error.
Los monitores LCD suelen contener circuitos de protección similares, pero por razones diferentes. Dado que la pantalla LCD debe muestrear digitalmente la señal (emulando así un haz de electrones), cualquier señal que esté fuera de rango no puede mostrarse físicamente en el monitor.
Paleta de colores
Tradicionalmente, los framebuffers han admitido una amplia variedad de modos de color. Debido al elevado consumo de memoria, la mayoría de los primeros framebuffers utilizaban profundidades de color de 1 bit (2 colores por píxel), 2 bits (4 colores), 4 bits (16 colores) u 8 bits (256 colores). El problema con profundidades de color tan pequeñas es que no se puede generar una gama completa de colores. La solución a este problema fue el color indexado , que añade una tabla de búsqueda al framebuffer. Cada color almacenado en la memoria del framebuffer actúa como un índice de color. La tabla de búsqueda funciona como una paleta con un número limitado de colores diferentes, mientras que el resto se utiliza como tabla de índices.
Aquí se muestra una imagen típica indexada de 256 colores y su propia paleta (representada como un rectángulo de muestras):
En algunos diseños, también era posible escribir datos en la tabla de búsqueda (o cambiar entre paletas existentes) sobre la marcha, lo que permitía dividir la imagen en barras horizontales con su propia paleta y, por lo tanto, generar una imagen con una paleta mucho más amplia. Por ejemplo, al ver una fotografía de exteriores, la imagen podía dividirse en cuatro barras: la superior con énfasis en los tonos del cielo, la siguiente con los tonos del follaje, la siguiente con los tonos de la piel y la ropa, y la inferior con los colores del suelo. Esto requería que cada paleta tuviera colores superpuestos, pero, si se hacía con cuidado, permitía una gran flexibilidad.
Acceso a la memoria
Si bien los búferes de fotogramas se suelen acceder mediante una asignación de memoria directa al espacio de memoria de la CPU, este no es el único método de acceso. Los búferes de fotogramas han variado considerablemente en los métodos utilizados para acceder a la memoria. Algunos de los más comunes son:
- Asignar todo el búfer de fotogramas a un rango de memoria determinado.
- Comandos de puerto para configurar cada píxel, rango de píxeles o entrada de paleta.
- Asignar un rango de memoria menor que la memoria del framebuffer y, a continuación, cambiar de banco según sea necesario.
La organización del búfer de fotogramas puede ser por píxeles empaquetados o planar . El búfer de fotogramas puede ser direccionable en todos sus puntos o tener restricciones sobre cómo se puede actualizar.
Memoria RAM en la tarjeta de video
Las tarjetas de video siempre tienen una cierta cantidad de RAM. Una pequeña parte de esta RAM se utiliza para almacenar en búfer el mapa de bits de los datos de imagen para su visualización. Por lo tanto, el término búfer de fotogramas se usa a menudo indistintamente para referirse a esta RAM.
La CPU envía actualizaciones de imagen a la tarjeta de video. El procesador de video de la tarjeta forma una imagen de la pantalla y la almacena en el búfer de fotogramas como un mapa de bits grande en la RAM. La tarjeta utiliza este mapa de bits en la RAM para actualizar continuamente la imagen de la pantalla. [ 15 ]
búferes de fotogramas virtuales
Muchos sistemas intentan emular la función de un dispositivo de búfer de fotogramas, a menudo por razones de compatibilidad. Los dos búferes de fotogramas virtuales más comunes son el dispositivo de búfer de fotogramas de Linux (fbdev) y el búfer de fotogramas virtual de X ( Xvfb ). Xvfb se añadió a la distribución del Sistema X Window para proporcionar un método para ejecutar X sin un búfer de fotogramas gráfico. El dispositivo de búfer de fotogramas de Linux se desarrolló para abstraer el método físico de acceso al búfer de fotogramas subyacente en un mapa de memoria garantizado que es fácil de acceder para los programas. Esto aumenta la portabilidad, ya que los programas no necesitan lidiar con sistemas que tienen mapas de memoria inconexos o que requieren cambio de bancos .
pasar de página
Un búfer de fotogramas puede diseñarse con suficiente memoria para almacenar datos de vídeo equivalentes a dos fotogramas. Mediante una técnica conocida como doble búfer o, más específicamente, como cambio de página , el búfer utiliza la mitad de su memoria para mostrar el fotograma actual. Mientras se muestra esa memoria, la otra mitad se llena con datos para el siguiente fotograma. Una vez que el búfer secundario está lleno, se le indica al búfer que muestre dicho búfer. El búfer principal se convierte en el secundario, y viceversa. Este cambio suele realizarse después del intervalo de borrado vertical para evitar el efecto de desgarro de pantalla , donde se muestran simultáneamente la mitad del fotograma antiguo y la mitad del nuevo.
El cambio de página se ha convertido en una técnica estándar utilizada por los programadores de videojuegos para PC .
aceleradores gráficos
A medida que aumentaba la demanda de mejores gráficos, los fabricantes de hardware crearon un método para reducir el tiempo de CPU necesario para llenar el búfer de fotogramas. Esto se conoce comúnmente como aceleración gráfica . Los comandos de dibujo gráfico habituales (muchos de ellos geométricos) se envían al acelerador gráfico en su formato original. El acelerador, a su vez, rasteriza los resultados del comando y los almacena en el búfer de fotogramas. Este método libera a la CPU para que realice otras tareas.
Los primeros aceleradores se centraron en mejorar el rendimiento de los sistemas de interfaz gráfica de usuario (GUI) 2D . Si bien conservan estas capacidades 2D, la mayoría de los aceleradores modernos se centran en producir imágenes 3D en tiempo real. Un diseño común utiliza una biblioteca gráfica como OpenGL o Direct3D , que interactúa con el controlador gráfico para traducir los comandos recibidos en instrucciones para la unidad de procesamiento gráfico (GPU) del acelerador. La GPU utiliza esas instrucciones para calcular los resultados rasterizados, que se envían al búfer de fotogramas. La señal del búfer de fotogramas se procesa mediante dispositivos de superposición de vídeo integrados (que suelen utilizarse para generar el cursor del ratón sin modificar los datos del búfer de fotogramas) y cualquier efecto especial final que se produzca modificando la señal de salida. Un ejemplo de estos efectos especiales finales era la técnica de suavizado espacial utilizada por las tarjetas 3dfx Voodoo . Estas tarjetas añaden un ligero desenfoque a la señal de salida, lo que hace que el aliasing de los gráficos rasterizados sea mucho menos evidente.
En un momento dado, hubo muchos fabricantes de aceleradores gráficos, entre ellos: 3dfx Interactive ; ATI ; Hercules ; Trident ; Nvidia ; Radius ; S3 Graphics ; SiS y Silicon Graphics . A partir de 2015El mercado de aceleradores gráficos para sistemas basados en x86 está dominado por Nvidia (que adquirió 3dfx en 2002), AMD (que adquirió ATI en 2006) e Intel .
Comparaciones
Con un búfer de fotogramas, se ordena al haz de electrones (si la tecnología de visualización lo utiliza) que realice un barrido raster , de forma similar a como un televisor procesa una señal de transmisión. La información de color de cada punto mostrado en la pantalla se extrae directamente del búfer de fotogramas durante el barrido, creando un conjunto de elementos de imagen discretos, es decir, píxeles.
Los búferes de fotogramas difieren significativamente de las pantallas vectoriales comunes antes de la llegada de los gráficos rasterizados (y, por consiguiente, del concepto de búfer de fotogramas). En una pantalla vectorial, solo se almacenan los vértices de las primitivas gráficas. El haz de electrones de la pantalla de salida se mueve de vértice a vértice, trazando una línea en el área comprendida entre estos puntos.
Asimismo, los búferes de fotogramas difieren de la tecnología utilizada en las primeras pantallas de texto , donde un búfer almacena códigos para caracteres, no píxeles individuales. El dispositivo de visualización de vídeo realiza el mismo barrido raster que con un búfer de fotogramas, pero genera los píxeles de cada carácter en el búfer a medida que dirige el haz.
Véase también
- Plano de bits
- Renderizado por líneas de exploración
- Cadena de intercambio
- Videojuego basado en fichas
- Revestimiento de azulejos
- El Tektronix 4050 utilizaba un tubo de almacenamiento para eliminar la necesidad de memoria de búfer de fotogramas.
Referencias
- ↑ "¿Qué es un búfer de fotogramas? Una definición de Webopedia" . webopedia.com . Junio de 1998.
- ↑ "Preguntas frecuentes sobre el búfer de fotogramas" . Consultado el 14 de mayo de 2014 .
- ↑ Mueller, J. (2002). Soluciones .NET Framework: En busca de la API Win32 perdida . Wiley. pág. 160. ISBN 9780782141344. Consultado el 21 de abril de 2015 .
- ↑ "Entrada del diccionario de computación inteligente: búfer de vídeo" . Archivado del original el 24 de marzo de 2012. Consultado el 21 de abril de 2015 .
- 1 2 Gaboury, J. (2018-03-01). "La imagen de acceso aleatorio: memoria e historia de la pantalla del ordenador" . Grey Room . 70 (70): 24– 53. doi : 10.1162/GREY_a_00233 . hdl : 21.11116/0000-0001-FA73-4 . ISSN 1526-3819 . S2CID 57565564 .
- ↑ Williams, FC; Kilburn, T. (marzo de 1949). «Un sistema de almacenamiento para su uso con máquinas de computación binarias digitales» . Actas del IEE - Parte III: Ingeniería de radio y comunicaciones . 96 (40): 81–. doi : 10.1049/pi-3.1949.0018 . Archivado del original el 26 de abril de 2019.
- ↑ "Notas de portada del informe de Kilburn de 1947 (Digital 60)" . curation.cs.manchester.ac.uk . Consultado el 26 de abril de 2019 .
- ↑ D. Ophir; S. Rankowitz; BJ Shepherd; RJ Spinrad (junio de 1968), "BRAD: The Brookhave Raster Display", Communications of the ACM , vol. 11, n.º 6, págs. 415–416 , doi : 10.1145/363347.363385 , S2CID 11160780
- ↑ Noll, A. Michael (marzo de 1971). "Gráficos por computadora con pantalla escaneada" . Communications of the ACM . 14 (3): 145– 150. doi : 10.1145/362566.362567 . S2CID 2210619 .
- 1 2 Richard Shoup (2001). "SuperPaint: Un sistema gráfico de búfer de fotogramas primitivo" (PDF) . Anales de la historia de la computación . IEEE. Archivado del original (PDF) el 12 de junio de 2004.
- ↑ Goldwasser, SM (junio de 1983). Arquitectura informática para la visualización interactiva de imágenes segmentadas . Arquitecturas informáticas para datos distribuidos espacialmente. Springer Science & Business Media . págs. 75–94 (81). ISBN 9783642821509.
- ↑ Sistema de imágenes (PDF) , Evans y Sutherland , consultado el 31 de diciembre de 2017
- ↑ "Historia del Laboratorio de Gráficos del Instituto Tecnológico de Nueva York" . Consultado el 31 de agosto de 2007 .
- ↑ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html Cómo configurar los tiempos de vídeo de XFree86: Cómo sobrecargar el monitor
- ↑ "Guía ilustrada de tarjetas de video" . karbosguide.com . Archivado del original el 5 de junio de 2013. Consultado el 28 de junio de 2013 .
- Alvy Ray Smith (30 de mayo de 1997). "Sistemas de pintura digital: descripción histórica" (PDF) . Microsoft Tech Memo 14. Archivado del original (PDF) el 7 de febrero de 2012.
- Wayne Carlson (2003). "Avances de hardware" . Historia crítica de los gráficos y la animación por computadora . Universidad Estatal de Ohio. Archivado del original el 14 de marzo de 2012.
- Alvy Ray Smith (2001). "Sistemas de pintura digital: una visión general histórica y anecdótica" (PDF) . IEEE Annals of the History of Computing. Archivado del original (PDF) el 5 de febrero de 2012.
Enlaces externos
- Entrevista con un investigador del NYIT que habla sobre el sistema de 24 bits.
- Historia de los framebuffers de Sun Microsystems
- Gráficos por computadora
- Memoria de computadora
- Procesamiento de imágenes