stringtranslate.com

búfer de cuadros

Buffer de fotogramas Sun TGX

Un framebuffer ( frame buffer o, a veces, framestore ) es una parte de la memoria de acceso aleatorio (RAM) [1] que contiene un mapa de bits que controla una visualización de vídeo. Es un búfer de memoria que contiene datos que representan todos los píxeles de un cuadro de vídeo completo . [2] Las tarjetas de video modernas contienen circuitos framebuffer en sus núcleos. Este circuito convierte 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 de la computadora utilizada por una aplicación informática para la representación del contenido que se mostrará en la pantalla de la computadora . [3] El búfer de pantalla también puede denominarse búfer de vídeo , búfer de regeneración o búfer de regeneración para abreviar. [4] Los buffers de pantalla deben distinguirse de la memoria de video . Para ello también se utiliza el término búfer fuera de pantalla .

La información del búfer normalmente consta de 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), paletizado de 4 bits , paletizado de 8 bits, color de alto nivel de 16 bits y color verdadero de 24 bits . A veces se utiliza un canal alfa adicional para retener información sobre la transparencia de los píxeles. La cantidad total de memoria requerida para el framebuffer depende de la resolución de la señal de salida y de la profundidad del color o el tamaño de la paleta.

Historia

Patrón de memoria en el CRT de tubo SWAC Williams en 1951

Investigadores informáticos [ ¿quién? ] 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. [ cita necesaria ] [5] En 1947, la computadora Manchester Baby usó 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 4096 en 1950. [5]

A finales de la década de 1960 se implementó una pantalla escaneada en 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 Labs implementó una pantalla escaneada con un búfer de cuadros, utilizando memoria de núcleo magnético . [9] Más tarde, 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 en color estándar.

A principios de la década de 1970, el desarrollo de chips de circuitos integrados de memoria MOS ( memoria semiconductora de óxido metálico ) , en particular chips DRAM ( memoria dinámica de acceso aleatorio ) de alta densidad con al menos 1 kb de memoria, hizo que fuera práctico crear, por ejemplo, por primera vez, un sistema de memoria digital con framebuffers capaces de contener una imagen de vídeo estándar. [10] [11] Esto llevó al desarrollo del sistema SuperPaint por Richard Shoup en Xerox PARC en 1972. [10] Shoup pudo utilizar el framebuffer SuperPaint para crear uno de los primeros sistemas de captura de vídeo digital. Al sincronizar la señal de salida con la señal de entrada, Shoup pudo sobrescribir cada píxel de datos a medida que avanzaba. Shoup también experimentó modificando la señal de salida usando tablas de colores. Estas tablas de colores permitieron al sistema SuperPaint producir una amplia variedad de colores fuera del rango de datos limitados de 8 bits que contenía. Este esquema luego se convertiría en algo común en los framebuffers de computadora.  

En 1974, Evans & Sutherland lanzaron el primer framebuffer comercial, el Picture System, [12] que costó alrededor de 15.000 dólares. 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 ayuda para los investigadores 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, otra para verde y otra 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 framebuffer de transmisión comercial a todo color, el Quantel DFS 3000. Se utilizó por primera vez en la cobertura televisiva de los Juegos Olímpicos de Montreal de 1976 para generar un recuadro de imagen en imagen de la antorcha olímpica mientras el El resto de la imagen mostraba al corredor entrando al estadio.

La rápida mejora de la tecnología de circuitos integrados hizo posible que muchas de las computadoras domésticas de finales de la década de 1970 contuvieran framebuffers de baja profundidad de color. Hoy en día, casi todas las computadoras con capacidades gráficas utilizan un framebuffer para generar la señal de video. Las computadoras Amiga , creadas en la década de 1980, presentaban especial atención en el diseño al rendimiento de los gráficos e incluían un framebuffer exclusivo de retención y modificación capaz de mostrar 4096 colores.

Los framebuffers también se hicieron populares en estaciones de trabajo de alta gama y placas de sistemas arcade a lo largo de la década de 1980. SGI , Sun Microsystems , HP , DEC e IBM lanzaron framebuffers para sus estaciones de trabajo en este período. Estos framebuffers solían ser de una calidad mucho mayor que la que se podía encontrar en la mayoría de las computadoras domésticas y se usaban regularmente en televisión, impresión, modelado por computadora y gráficos 3D. Sega también utilizó framebuffers para sus placas arcade de alta gama , que también eran de mayor calidad que las de las computadoras domésticas.

Modos de visualización

Un framebuffer Sun cgsix

Los framebuffers utilizados en la informática personal y doméstica a menudo tenían conjuntos de modos definidos bajo los cuales puede funcionar el framebuffer. Estos modos reconfiguran el hardware para generar diferentes resoluciones, profundidades de color, diseños de memoria y tiempos de frecuencia de actualización .

En el mundo de las máquinas y los sistemas operativos Unix , estas comodidades generalmente se evitaban en favor de la manipulación directa de la configuración del hardware. Esta manipulación fue mucho más flexible en el sentido de que se podía alcanzar cualquier resolución, profundidad de color y frecuencia de actualización, limitada únicamente por la memoria disponible para el framebuffer.

Un desafortunado efecto secundario de este método fue que el dispositivo de visualización podía ser llevado más allá de sus capacidades. En algunos casos, esto provocó daños en el hardware de la pantalla. [14] Más comúnmente, simplemente producía resultados confusos e inutilizables. 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 un bloqueo de señal en la nueva frecuencia de actualización. Si el monitor no puede obtener un bloqueo de señal, o si la señal está fuera del rango de sus limitaciones de diseño, el monitor ignorará la señal del framebuffer y posiblemente presentará al usuario un mensaje de error.

Los monitores LCD tienden a contener circuitos de protección similares, pero por diferentes razones. Dado que la pantalla LCD debe muestrear digitalmente la señal de visualización (emulando así un haz de electrones), cualquier señal que esté fuera de rango no se puede mostrar físicamente en el monitor.

Paleta de color

Los framebuffers tradicionalmente han admitido una amplia variedad de modos de color. Debido al gasto 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 producir una gama completa de colores. La solución a este problema fue el color indexado , que agrega una tabla de búsqueda al framebuffer. Cada color almacenado en la memoria framebuffer actúa como un índice de color. La tabla de búsqueda sirve como una paleta con un número limitado de colores diferentes, mientras que el resto se utiliza como tabla de índice.

A continuación se muestra una imagen típica indexada de 256 colores y su propia paleta (que se muestra 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 así renderizar una imagen que tenía una paleta mucho más amplia. Por ejemplo, al ver una fotografía tomada al aire libre, la imagen podrí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 piel y ropa, y la inferior con los colores del fondo. 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 se accede comúnmente a los framebuffers mediante una asignación de memoria directamente al espacio de memoria de la CPU, este no es el único método mediante el cual se puede acceder a ellos. Los framebuffers han variado ampliamente en los métodos utilizados para acceder a la memoria. Algunos de los más comunes son:

La organización del framebuffer puede estar empaquetada en píxeles o plana . El framebuffer puede tener todos los puntos direccionables o tener restricciones sobre cómo se puede actualizar.

RAM en la tarjeta de video

Las tarjetas de video siempre tienen una cierta cantidad de RAM. Una pequeña porción de esta RAM es donde el mapa de bits de los datos de la imagen se "almacena en el búfer" para su visualización. Por lo tanto, el término frame buffer se utiliza a menudo indistintamente cuando se hace referencia a esta RAM.

La CPU envía actualizaciones de imágenes a la tarjeta de video. El procesador de vídeo de la tarjeta forma una imagen de la pantalla y la almacena en el frame buffer como un gran mapa de bits en la RAM. La tarjeta utiliza el mapa de bits de la RAM para actualizar continuamente la imagen de la pantalla. [15]

Búfers de fotogramas virtuales

Muchos sistemas intentan emular la función de un dispositivo framebuffer, a menudo por razones de compatibilidad. Los dos framebuffers virtuales más comunes son el dispositivo framebuffer de Linux (fbdev) y el X Virtual Framebuffer ( Xvfb ). Xvfb se agregó a la distribución de X Window System para proporcionar un método para ejecutar X sin un framebuffer gráfico. El dispositivo framebuffer de Linux fue desarrollado para abstraer el método físico para acceder al framebuffer subyacente en un mapa de memoria garantizado al que los programas puedan acceder fácilmente. Esto aumenta la portabilidad, ya que no es necesario que los programas trabajen con sistemas que tienen mapas de memoria inconexos o requieren cambio de banco .

Pasar página

Se puede diseñar un búfer de fotogramas con suficiente memoria para almacenar dos fotogramas de datos de vídeo. En una técnica conocida generalmente como doble almacenamiento en búfer o, más específicamente, como cambio de página , el framebuffer utiliza la mitad de su memoria para mostrar el fotograma actual. Mientras se muestra esa memoria, la otra mitad de la memoria se llena con datos para el siguiente cuadro. Una vez que se llena el búfer secundario, se le indica al framebuffer que muestre el búfer secundario. El búfer principal se convierte en el búfer secundario y el búfer secundario se convierte en el principal. Este cambio a menudo se realiza después del intervalo de borrado vertical para evitar que la pantalla se rompa cuando la mitad del marco antiguo y la mitad del marco nuevo se muestran juntas.

El cambio de página se ha convertido en una técnica estándar utilizada por los programadores de juegos de PC .

Aceleradores de gráficos

A medida que aumentaba la demanda de mejores gráficos, los fabricantes de hardware crearon una forma de disminuir la cantidad de tiempo de CPU necesario para llenar el framebuffer. Esto comúnmente se llama aceleración de gráficos . Los comandos de dibujo de gráficos comunes (muchos de ellos geométricos) se envían al acelerador de gráficos en su forma original. Luego, el acelerador rasteriza los resultados del comando en el framebuffer. Este método libera la CPU para realizar otros trabajos.

Los primeros aceleradores se centraron en mejorar el rendimiento de los sistemas 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 de gráficos como OpenGL o Direct3D que interactúa con el controlador de gráficos para traducir los comandos recibidos en instrucciones para la unidad de procesamiento de gráficos (GPU) del acelerador. La GPU utiliza esas instrucciones para calcular los resultados rasterizados y los resultados se envían al framebuffer. Luego, la señal del framebuffer se produce en combinación con dispositivos de superposición de video integrados (generalmente utilizados para producir el cursor del mouse sin modificar los datos del framebuffer) y cualquier efecto especial final que se produzca al modificar la señal de salida. Un ejemplo de estos efectos especiales finales fue 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 que hace que el alias de los gráficos rasterizados sea mucho menos obvio.

Hubo un tiempo en que hubo muchos fabricantes de aceleradores de gráficos, entre ellos: 3dfx Interactive ; ATI ; Hércules ; Tridente ; NVIDIA ; Radio ; Gráficos S3 ; Gráficos de SiS y Silicon . A partir de 2015, el mercado de aceleradores de gráficos para sistemas basados ​​en x86 está dominado por Nvidia (adquirió 3dfx en 2002), AMD (que adquirió ATI en 2006) e Intel .

Comparaciones

Con un framebuffer, se ordena al haz de electrones (si la tecnología de visualización lo utiliza) que realice un escaneo rasterizado , de la misma manera que un televisor presenta una señal de transmisión. La información de color para cada punto mostrado así en la pantalla se extrae directamente del framebuffer durante el escaneo, creando un conjunto de elementos de imagen discretos, es decir, píxeles.

Los framebuffers difieren significativamente de las visualizaciones vectoriales que eran comunes antes de la llegada de los gráficos rasterizados (y, en consecuencia, del concepto de framebuffer). Con una visualización vectorial, sólo se almacenan los vértices de las primitivas gráficas. Luego se ordena al haz de electrones de la pantalla de salida que se mueva de un vértice a otro, trazando una línea a través del área entre estos puntos.

Del mismo modo, los framebuffers difieren de la tecnología utilizada en las primeras pantallas en modo texto , donde un buffer contiene códigos para caracteres, no píxeles individuales. El dispositivo de visualización de vídeo realiza el mismo escaneo de trama que con un framebuffer, pero genera los píxeles de cada carácter en el buffer a medida que dirige el haz.

Ver también

Referencias

  1. ^ "¿Qué es el frame buffer? Una definición de Webopedia". webopedia.com . Junio ​​de 1998.
  2. ^ "Preguntas frecuentes sobre el búfer de cuadros" . Consultado el 14 de mayo de 2014 .
  3. ^ Mueller, J. (2002). Soluciones .NET Framework: en busca de la API Win32 perdida. Wiley. pag. 160.ISBN _ 9780782141344. Consultado el 21 de abril de 2015 .
  4. ^ "Entrada del diccionario de computación inteligente: búfer de vídeo". Archivado desde el original el 24 de marzo de 2012 . Consultado el 21 de abril de 2015 .
  5. ^ ab Gaboury, J. (1 de marzo de 2018). "La imagen de acceso aleatorio: la memoria y la historia de la pantalla del ordenador". Habitación Gris . 70 (70): 24–53. doi :10.1162/GREY_a_00233. hdl : 21.11116/0000-0001-FA73-4 . ISSN  1526-3819. S2CID  57565564.
  6. ^ Williams, FC; Kilburn, T. (marzo de 1949). "Un sistema de almacenamiento para uso con máquinas informáticas binario-digitales". Actas de la IEE - Parte III: Ingeniería de radio y comunicaciones . 96 (40): 81–. doi :10.1049/pi-3.1949.0018.
  7. ^ "Notas de portada del informe de Kilburn 1947 (Digital 60)". curaduría.cs.manchester.ac.uk . Consultado el 26 de abril de 2019 .
  8. ^ D. Ofir; S. Rankowitz; Pastor BJ; RJ Spinrad (junio de 1968), "BRAD: The Brookhave Raster Display", Comunicaciones de la ACM , vol. 11, núm. 6, págs. 415–416, doi : 10.1145/363347.363385 , S2CID  11160780
  9. ^ Noll, A. Michael (marzo de 1971). "Gráficos de computadora con pantalla escaneada". Comunicaciones de la ACM . 14 (3): 145-150. doi : 10.1145/362566.362567 . S2CID  2210619.
  10. ^ ab Richard Shoup (2001). "SuperPaint: un sistema de gráficos de búfer de cuadros temprano" (PDF) . Anales de la Historia de la Computación . IEEE. Archivado desde el original (PDF) el 12 de junio de 2004.
  11. ^ Goldwasser, SM (junio de 1983). Arquitectura informática para visualización interactiva de imágenes segmentadas. Arquitecturas informáticas para datos distribuidos espacialmente. Medios de ciencia y negocios de Springer . págs. 75 a 94 (81). ISBN 9783642821509.
  12. ^ Sistema de imágenes (PDF) , Evans & Sutherland , consultado el 31 de diciembre de 2017
  13. ^ "Historia del Laboratorio de Gráficos del Instituto de Tecnología de Nueva York" . Consultado el 31 de agosto de 2007 .
  14. ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html CÓMO de tiempos de video XFree86: sobrecargar su monitor
  15. ^ "Una guía ilustrada de las tarjetas de vídeo". karbosguide.com .

enlaces externos