Framebuffer: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
ZimbuBot (discussione | contributi)
m WPCleaner v1.43 - Disambigua corretti 2 collegamenti - Output, Risoluzione
Inseritore (discussione | contributi)
Aggiornamento della voce
Riga 1: Riga 1:
Il '''framebuffer''' è una memoria [[buffer]] della [[scheda video]] nella quale vengono memorizzate le informazioni destinate all'[[Input/output|output]] per la rappresentazione di un intero [[fotogramma]] (''frame'' in [[lingua inglese]], da cui il nome ''framebuffer'') sullo [[schermo]]<ref>{{cite web|url=http://www.webopedia.com/TERM/F/frame_buffer.html|title=What is frame buffer? A Webopedia Definition|work=webopedia.com}}</ref><ref>{{cite web|url=http://www.sunhelp.org/faq/FrameBuffer.html#00|title=Frame Buffer FAQ|access-date=14 May 2014}}</ref>.
{{S|periferiche}}

Il '''framebuffer''' è una memoria [[buffer]] della [[scheda video]] nella quale vengono memorizzate le informazioni destinate all'[[Input/output|output]] per la rappresentazione di un intero [[fotogramma]] (''frame'' in [[lingua inglese]], da cui il nome ''framebuffer'') sullo [[schermo]].
un '''buffer dello schermo''' ('''screen buffer)''' è una parte della memoria del computer utilizzata da un'applicazione per computer per la rappresentazione del contenuto da visualizzare sul display del computer. Il tampone schermo può anche essere chiamato '''buffer video''' , il '''tampone di rigenerazione''' , o '''buffer di rigenerazione''' ('''regeneration buffer o regen buffer)'''. I buffer dello schermo dovrebbero essere distinti dalla memoria video. A tal fine, viene utilizzato anche il termine '''buffer fuori schermo''' ('''off-screen buffer)'''.


Nel ''framebuffer'' sono contenute le informazioni sul colore di ciascun [[pixel]], ovvero di ciascun punto dello schermo, che possono essere a 1-bit (bianco e nero), 4-bit o 8-bit (modalità a [[tavolozza (informatica)|tavolozza]]), 16-bit ([[Highcolor]]) o 24-bit ([[Truecolor]]). È a volte presente un [[canale alfa (informatica)|canale alfa]] che contiene informazioni sulla trasparenza del pixel. Le dimensioni del ''framebuffer'' dipendono dalla [[risoluzione (grafica)|risoluzione]] dell'output video e dalla [[profondità di colore]].
Nel ''framebuffer'' sono contenute le informazioni sul colore di ciascun [[pixel]], ovvero di ciascun punto dello schermo, che possono essere a 1-bit (bianco e nero), 4-bit o 8-bit (modalità a [[tavolozza (informatica)|tavolozza]]), 16-bit ([[Highcolor]]) o 24-bit ([[Truecolor]]). È a volte presente un [[canale alfa (informatica)|canale alfa]] che contiene informazioni sulla trasparenza del pixel. Le dimensioni del ''framebuffer'' dipendono dalla [[risoluzione (grafica)|risoluzione]] dell'output video e dalla [[profondità di colore]].

== Storia ==
Nel 1947 il Manchester Baby computer usò un tubo Williams , più tardi il tubo Williams-Kilburn, per memorizzare 1024 bit su una memoria a tubo catodico (CRT) e visualizzati su un secondo CRT<ref>{{Cite journal|last1=Williams|first1=F. C.|last2=Kilburn|first2=T.|date=March 1949|title=A storage system for use with binary-digital computing machines|url=https://ieeexplore.ieee.org/document/5241129|journal=Proceedings of the IEE - Part III: Radio and Communication Engineering|volume=96|issue=40|pages=81–|doi=10.1049/pi-3.1949.0018}}</ref><ref>{{Cite web|url=http://curation.cs.manchester.ac.uk/digital60/www.digital60.org/birth/manchestercomputers/mark1/documents/report1947cover.html|title=Kilburn 1947 Report Cover Notes (Digital 60)|website=curation.cs.manchester.ac.uk|access-date=2019-04-26}}</ref>. Altri laboratori di ricerca stavano esplorando queste tecniche con il MIT Lincoln Laboratory ottenendo un display 4096 nel 1950<ref name="Gaboury">{{Cite journal|last=Gaboury|first=J.|date=2018-03-01|title=The random-access image: Memory and the history of the computer screen|journal=Grey Room|volume=70|url=https://escholarship.org/uc/item/0b3873pn|issue=70|pages=24–53|doi=10.1162/GREY_a_00233|s2cid=57565564|issn=1526-3819}}</ref>.

Alla fine degli anni '60 fu implementato un display a scansione a colori, chiamato Brookhaven RAster Display (BRAD), che utilizzava una memoria a tamburo e un monitor televisivo<ref>{{citation|author1=D. Ophir|author2=S. Rankowitz|author3=B. J. Shepherd|author4=R. J. Spinrad|title=BRAD: The Brookhave Raster Display|work=Communications of the ACM|volume=11|number=6|date=June 1968|pages=415–416|doi=10.1145/363347.363385|s2cid=11160780}}</ref>. Nel 1969 A. Michael Noll dei Bell Labs implementò un display scansionato con un frame buffer, utilizzando una memoria a nucleo magnetico<ref>{{cite journal|last=Noll|first=A. Michael|title=Scanned-Display Computer Graphics|journal=Communications of the ACM|volume=14|number=3|date=March 1971|pages=145–150|doi=10.1145/362566.362567|s2cid=2210619}}</ref>. Successivamente, il sistema Bell Labs è stato ampliato per visualizzare un'immagine con una profondità di colore di tre bit su un monitor TV a colori standard.

All'inizio degli anni '70, lo sviluppo di chip a circuito integrato di memoria MOS ( memoria a semiconduttore di ossido di metallo ) , in particolare chip DRAM ( memoria ad accesso casuale dinamico ) ad alta densità con almeno 1 kb di memoria, ha reso pratico creare, per la prima volta, un sistema di memoria digitale con framebuffer in grado di contenere un'immagine video standard<ref name="Shoup_SuperPaint">{{cite web|url=http://accad.osu.edu/~waynec/history/PDFs/Annals_final.pdf|archive-url=https://web.archive.org/web/20040612215245/http://accad.osu.edu/~waynec/history/PDFs/Annals_final.pdf|archive-date=2004-06-12|title=SuperPaint: An Early Frame Buffer Graphics System|author=Richard Shoup|publisher=IEEE|work=Annals of the History of Computing|year=2001|url-status=dead}}</ref><ref>{{cite conference|last1=Goldwasser|first1=S.M.|title=Computer Architecture For Interactive Display Of Segmented Imagery|conference=Computer Architectures for Spatially Distributed Data|date=June 1983|publisher=[[Springer Science & Business Media]]|isbn=9783642821509|pages=75-94 (81)|url=https://books.google.com/books?id=8MuoCAAAQBAJ&pg=PA81}}</ref>. Ciò portò allo sviluppo del sistema SuperPaint da parte di Richard Shoup alla Xerox PARC nel 1972.   Shoup è stato in grado di utilizzare il framebuffer SuperPaint per creare un primo sistema di acquisizione video digitale. Sincronizzando il segnale di uscita con il segnale di ingresso, Shoup è stato in grado di sovrascrivere ogni pixel di dati mentre si spostava. Shoup ha anche sperimentato la modifica del segnale di uscita utilizzando tabelle dei colori. Queste tabelle dei colori consentivano al sistema SuperPaint di produrre un'ampia varietà di colori al di fuori della gamma dei limitati dati a 8 bit che conteneva. Questo schema sarebbe poi diventato comune nei framebuffer dei computer.

Nel 1974, Evans & Sutherland pubblicò il primo framebuffer commerciale, il Picture System<ref>{{citation|title=Picture System|url=http://s3data.computerhistory.org/brochures/evanssutherland.3d.1974.102646288.pdf|publisher=Evans & Sutherland|access-date=2017-12-31}}</ref>, costava circa $ 15.000. Era in grado di produrre risoluzioni fino a 512 per 512 pixel in scala di grigi a 8 bit ed è diventato un vantaggio per i ricercatori grafici che non avevano le risorse per costruire il proprio framebuffer. Il New York Institute of Technology avrebbe successivamente creato il primo sistema di colori a 24 bit utilizzando tre dei framebuffer di Evans & Sutherland<ref name="NYIT-History">{{cite web|url=https://www.cs.cmu.edu/~ph/nyit/masson/nyit.html|title=History of the New York Institute of Technology Graphics Lab|access-date=2007-08-31}}</ref>. Ogni framebuffer era collegato a un'uscita colore RGB (una per il rosso, una per il verde e una per il blu), con un minicomputer PDP 11/04 della Digital Equipment Corporation che controllava i tre dispositivi come uno.

Nel 1975, la società britannica Quantel ha prodotto il primo framebuffer di trasmissione a colori commerciale, il Quantel DFS 3000. È stato utilizzato per la prima volta nella copertura televisiva delle Olimpiadi di Montreal del 1976 per generare un riquadro immagine nell'immagine della torcia fiammeggiante olimpica mentre il il resto della foto mostrava il corridore che entrava nello stadio.

Il rapido miglioramento della tecnologia dei circuiti integrati ha reso possibile per molti dei computer domestici della fine degli anni '70 di contenere framebuffer a bassa profondità di colore. Oggi, quasi tutti i computer con capacità grafiche utilizzano un framebuffer per generare il segnale video. I computer Amiga , creati negli anni '80, presentavano un'attenzione particolare al design per le prestazioni grafiche e includevano un framebuffer Hold-And-Modify unico in grado di visualizzare 4096 colori.

I Framebuffer sono diventati popolari anche nelle workstation di fascia alta e nelle schede di sistema arcade negli anni '80. SGI , Sun Microsystems , HP , DEC e IBM hanno tutti rilasciato framebuffer per i loro computer workstation in questo periodo. Questi framebuffer erano generalmente di qualità molto superiore a quella che si poteva trovare nella maggior parte dei computer domestici e venivano usati regolarmente in televisione, stampa, modellazione di computer e grafica 3D. I Framebuffer sono stati utilizzati anche da Sega per le sue schede arcade di fascia alta , che erano anche di qualità superiore rispetto ai computer di casa.

== Modalità di visualizzazione ==
I framebuffer usati nei computer personali e domestici spesso avevano serie di ''modalità'' definite in cui il framebuffer può operare. Queste modalità riconfigurano l'hardware per produrre diverse risoluzioni, profondità di colore, layout di memoria e tempi di aggiornamento .

Nel mondo di Unix macchine e sistemi operativi, tali convenienze erano solitamente evitato a favore di manipolare direttamente le impostazioni hardware. Questa manipolazione era molto più flessibile in quanto era possibile ottenere qualsiasi risoluzione, profondità di colore e frequenza di aggiornamento, limitata solo dalla memoria disponibile per il framebuffer.

Uno sfortunato effetto collaterale di questo metodo era che il dispositivo di visualizzazione poteva essere guidato oltre le sue capacità. In alcuni casi questo ha provocato danni hardware al display<ref>http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html XFree86 Video Timings HOWTO: Overdriving Your Monitor</ref>. Più comunemente, produceva semplicemente output incomprensibili e inutilizzabili. I moderni monitor CRT risolvono questo problema attraverso l'introduzione di circuiti di protezione. Quando la modalità di visualizzazione viene modificata, il monitor tenta di ottenere un blocco del segnale sulla nuova frequenza di aggiornamento. Se il monitor non è in grado di ottenere un blocco del segnale, o se il segnale è al di fuori della gamma dei limiti di progettazione, il monitor ignorerà il segnale del framebuffer ed eventualmente presenterà all'utente un messaggio di errore.

I monitor LCD tendono a contenere circuiti di protezione simili, ma per motivi diversi. Poiché il display LCD deve campionare digitalmente il segnale del display (emulando in tal modo un raggio di elettroni), qualsiasi segnale fuori portata non può essere visualizzato fisicamente sul monitor.

Tavolozza dei colori [ modifica ]

I Framebuffer supportano tradizionalmente un'ampia varietà di modalità colore. A causa della spesa in memoria, la maggior parte dei primi framebuffer utilizzava profondità di colore a 1 bit (2 colori), 2 bit (4 colori), 4 bit (16 colori) o 8 bit (256 colori). Il problema con profondità di colore così ridotte è che non è possibile produrre una gamma completa di colori. La soluzione a questo problema era il colore indicizzato che aggiunge una tabella di ricerca al framebuffer. Ogni colore memorizzato nella memoria del framebuffer funge da indice di colore. La tabella di ricerca funge da tavolozza con un numero limitato di colori diversi.

Ecco una tipica immagine indicizzata a 256 colori e la sua tavolozza (mostrata come un rettangolo di campioni):
{| class="wikitable"
|
|
|
|}
In alcuni progetti era anche possibile scrivere dati sulla LUT (o passare da una tavolozza all'altra) durante la corsa, consentendo di dividere l'immagine in barre orizzontali con la propria tavolozza e quindi rendere un'immagine che aveva una tavolozza molto più ampia. Ad esempio, visualizzando una fotografia scattata in esterni, l'immagine potrebbe essere divisa in quattro barre, quella superiore con enfasi sui toni del cielo, la successiva con i toni del fogliame, la successiva con i toni della pelle e dei vestiti e quella inferiore con i colori di fondo. Ciò richiedeva che ogni tavolozza avesse colori sovrapposti, ma fatto con cura, consentiva una grande flessibilità.

== Accesso alla memoria ==
Sebbene i framebuffer siano comunemente accessibili tramite una mappatura della memoria direttamente allo spazio di memoria della CPU, questo non è l'unico metodo con cui è possibile accedervi. I framebuffer hanno variato ampiamente nei metodi utilizzati per accedere alla memoria. Alcuni dei più comuni sono:

·       Mappatura dell'intero framebuffer a un dato intervallo di memoria.

·       Comandi della porta per impostare ogni pixel, intervallo di pixel o voce di tavolozza.

·       Mappatura di un intervallo di memoria inferiore alla memoria del framebuffer, quindi cambio di banco se necessario.

L'organizzazione del framebuffer può essere composta da pixel o planare . Il framebuffer può essere indirizzabile in tutti i punti o avere limitazioni su come può essere aggiornato.

== RAM sulla scheda video ==
Le schede video hanno sempre una certa quantità di RAM. Questa RAM è dove la bitmap dei dati dell'immagine viene "bufferizzata" per la visualizzazione. Il termine ''frame buffer'' è quindi spesso utilizzato in modo intercambiabile quando si fa riferimento a questa RAM.

La CPU invia gli aggiornamenti dell'immagine alla scheda video. Il processore video sulla scheda forma un'immagine dell'immagine sullo schermo e la memorizza nel frame buffer come una grande bitmap nella RAM. La bitmap nella RAM viene utilizzata dalla scheda per aggiornare continuamente l'immagine sullo schermo.

== Framebuffer virtuali ==
Molti sistemi tentano di emulare la funzione di un dispositivo framebuffer, spesso per ragioni di compatibilità. I due framebuffer virtuali più comuni sono il dispositivo framebuffer Linux (fbdev) e X Virtual Framebuffer ( Xvfb ). Xvfb è stato aggiunto alla distribuzione del sistema X Window per fornire un metodo per eseguire X senza un framebuffer grafico. Il dispositivo framebuffer di Linux è stato sviluppato per astrarre il metodo fisico per accedere al framebuffer sottostante in una mappa di memoria garantita a cui i programmi possono accedere facilmente. Ciò aumenta la portabilità, poiché i programmi non sono necessari per gestire i sistemi che hanno mappe di memoria disgiunte o richiedono il cambio di banco.

== Scorrimento delle pagine ==
Un frame buffer può essere progettato con memoria sufficiente per memorizzare due frame di dati video. In una tecnica nota generalmente come double buffering o più specificamente come page flipping , il framebuffer utilizza metà della sua memoria per visualizzare il frame corrente. Mentre quella memoria viene visualizzata, l'altra metà della memoria viene riempita con i dati per il fotogramma successivo. Una volta riempito il buffer secondario, al framebuffer viene chiesto di visualizzare invece il buffer secondario. Il buffer primario diventa il buffer secondario e il buffer secondario diventa il primario. Questo passaggio viene spesso eseguito dopo l' intervallo di cancellazione verticale per evitare lo strappo dello schermo quando metà del vecchio frame e metà del nuovo frame vengono mostrati insieme.

Il capovolgimento delle pagine è diventato una tecnica standard utilizzata dai programmatori di giochi per PC .

== Acceleratori grafici ==
Con l'aumento della richiesta di una grafica migliore, i produttori di hardware hanno creato un modo per ridurre la quantità di tempo della CPU necessaria per riempire il framebuffer. Questa è comunemente chiamata ''accelerazione grafica'' . Comandi di disegno grafico comuni (molti dei quali geometrici) vengono inviati all'acceleratore grafico nella loro forma grezza. L'acceleratore quindi ''rasterizza'' i risultati del comando nel framebuffer. Questo metodo libera la CPU per fare altro lavoro.

I primi acceleratori si concentravano sul miglioramento delle prestazioni dei sistemi GUI 2D . Pur mantenendo queste capacità 2D, la maggior parte degli acceleratori moderni si concentra sulla produzione di immagini 3D in tempo reale. Un progetto comune utilizza una libreria grafica come OpenGL o Direct3D che si interfaccia con il driver grafico per tradurre i comandi ricevuti in istruzioni per l' unità di elaborazione grafica (GPU) dell'acceleratore . La GPU utilizza queste istruzioni per calcolare i risultati rasterizzati ei risultati sono un po 'blittatial framebuffer. Il segnale del framebuffer viene quindi prodotto in combinazione con i dispositivi di sovrapposizione video incorporati (solitamente utilizzati per produrre il cursore del mouse senza modificare i dati del framebuffer) e tutti gli effetti speciali finali che vengono prodotti modificando il segnale di uscita. Un esempio di tali effetti speciali finali è stata la tecnica di anti-aliasing spaziale utilizzata dalle carte 3dfx Voodoo . Queste schede aggiungono una leggera sfocatura al segnale di uscita che rende l'aliasing della grafica rasterizzata molto meno evidente.

Un tempo c'erano molti produttori di acceleratori grafici, tra cui: 3dfx Interactive ; ATI ; Ercole ; Trident ; Nvidia ; Raggio ; Grafica S3 ; SiS e grafica in silicio . A partire dal 2015 il mercato degli acceleratori grafici per sistemi basati su x86 è dominato da Nvidia (acquisita 3dfx nel 2002), AMD (che ha acquisito ATI nel 2006) e Intel (che attualmente produce solo GPU integrate anziché schede video discrete).

== Confronti ==
Con un framebuffer, il fascio di elettroni (se la tecnologia di visualizzazione ne utilizza uno) viene comandato per eseguire una scansione raster , nel modo in cui un televisore riproduce un segnale di trasmissione. Le informazioni sul colore per ogni punto così visualizzato sullo schermo vengono estratte direttamente dal framebuffer durante la scansione, creando un insieme di elementi dell'immagine discreti, cioè i pixel.

I framebuffer differiscono in modo significativo dai display vettoriali che erano comuni prima dell'avvento della grafica raster (e, di conseguenza, al concetto di framebuffer). Con una visualizzazione vettoriale, vengono memorizzati solo i vertici delle primitive grafiche. Il fascio di elettroni del display di output viene quindi comandato di spostarsi da vertice a vertice, tracciando una linea attraverso l'area tra questi punti.

Allo stesso modo, i framebuffer differiscono dalla tecnologia usata nei primi display in modalità testo , dove un buffer contiene i codici per i caratteri, non i singoli pixel. Il dispositivo di visualizzazione video esegue la stessa scansione raster di un framebuffer, ma genera i pixel di ogni carattere nel buffer mentre dirige il raggio.


==Voci correlate==
==Voci correlate==

Versione delle 12:22, 6 feb 2021

Il framebuffer è una memoria buffer della scheda video nella quale vengono memorizzate le informazioni destinate all'output per la rappresentazione di un intero fotogramma (frame in lingua inglese, da cui il nome framebuffer) sullo schermo[1][2].

un buffer dello schermo (screen buffer) è una parte della memoria del computer utilizzata da un'applicazione per computer per la rappresentazione del contenuto da visualizzare sul display del computer. Il tampone schermo può anche essere chiamato buffer video , il tampone di rigenerazione , o buffer di rigenerazione (regeneration buffer o regen buffer). I buffer dello schermo dovrebbero essere distinti dalla memoria video. A tal fine, viene utilizzato anche il termine buffer fuori schermo (off-screen buffer).

Nel framebuffer sono contenute le informazioni sul colore di ciascun pixel, ovvero di ciascun punto dello schermo, che possono essere a 1-bit (bianco e nero), 4-bit o 8-bit (modalità a tavolozza), 16-bit (Highcolor) o 24-bit (Truecolor). È a volte presente un canale alfa che contiene informazioni sulla trasparenza del pixel. Le dimensioni del framebuffer dipendono dalla risoluzione dell'output video e dalla profondità di colore.

Storia

Nel 1947 il Manchester Baby computer usò un tubo Williams , più tardi il tubo Williams-Kilburn, per memorizzare 1024 bit su una memoria a tubo catodico (CRT) e visualizzati su un secondo CRT[3][4]. Altri laboratori di ricerca stavano esplorando queste tecniche con il MIT Lincoln Laboratory ottenendo un display 4096 nel 1950[5].

Alla fine degli anni '60 fu implementato un display a scansione a colori, chiamato Brookhaven RAster Display (BRAD), che utilizzava una memoria a tamburo e un monitor televisivo[6]. Nel 1969 A. Michael Noll dei Bell Labs implementò un display scansionato con un frame buffer, utilizzando una memoria a nucleo magnetico[7]. Successivamente, il sistema Bell Labs è stato ampliato per visualizzare un'immagine con una profondità di colore di tre bit su un monitor TV a colori standard.

All'inizio degli anni '70, lo sviluppo di chip a circuito integrato di memoria MOS ( memoria a semiconduttore di ossido di metallo ) , in particolare chip DRAM ( memoria ad accesso casuale dinamico ) ad alta densità con almeno 1 kb di memoria, ha reso pratico creare, per la prima volta, un sistema di memoria digitale con framebuffer in grado di contenere un'immagine video standard[8][9]. Ciò portò allo sviluppo del sistema SuperPaint da parte di Richard Shoup alla Xerox PARC nel 1972.   Shoup è stato in grado di utilizzare il framebuffer SuperPaint per creare un primo sistema di acquisizione video digitale. Sincronizzando il segnale di uscita con il segnale di ingresso, Shoup è stato in grado di sovrascrivere ogni pixel di dati mentre si spostava. Shoup ha anche sperimentato la modifica del segnale di uscita utilizzando tabelle dei colori. Queste tabelle dei colori consentivano al sistema SuperPaint di produrre un'ampia varietà di colori al di fuori della gamma dei limitati dati a 8 bit che conteneva. Questo schema sarebbe poi diventato comune nei framebuffer dei computer.

Nel 1974, Evans & Sutherland pubblicò il primo framebuffer commerciale, il Picture System[10], costava circa $ 15.000. Era in grado di produrre risoluzioni fino a 512 per 512 pixel in scala di grigi a 8 bit ed è diventato un vantaggio per i ricercatori grafici che non avevano le risorse per costruire il proprio framebuffer. Il New York Institute of Technology avrebbe successivamente creato il primo sistema di colori a 24 bit utilizzando tre dei framebuffer di Evans & Sutherland[11]. Ogni framebuffer era collegato a un'uscita colore RGB (una per il rosso, una per il verde e una per il blu), con un minicomputer PDP 11/04 della Digital Equipment Corporation che controllava i tre dispositivi come uno.

Nel 1975, la società britannica Quantel ha prodotto il primo framebuffer di trasmissione a colori commerciale, il Quantel DFS 3000. È stato utilizzato per la prima volta nella copertura televisiva delle Olimpiadi di Montreal del 1976 per generare un riquadro immagine nell'immagine della torcia fiammeggiante olimpica mentre il il resto della foto mostrava il corridore che entrava nello stadio.

Il rapido miglioramento della tecnologia dei circuiti integrati ha reso possibile per molti dei computer domestici della fine degli anni '70 di contenere framebuffer a bassa profondità di colore. Oggi, quasi tutti i computer con capacità grafiche utilizzano un framebuffer per generare il segnale video. I computer Amiga , creati negli anni '80, presentavano un'attenzione particolare al design per le prestazioni grafiche e includevano un framebuffer Hold-And-Modify unico in grado di visualizzare 4096 colori.

I Framebuffer sono diventati popolari anche nelle workstation di fascia alta e nelle schede di sistema arcade negli anni '80. SGI , Sun Microsystems , HP , DEC e IBM hanno tutti rilasciato framebuffer per i loro computer workstation in questo periodo. Questi framebuffer erano generalmente di qualità molto superiore a quella che si poteva trovare nella maggior parte dei computer domestici e venivano usati regolarmente in televisione, stampa, modellazione di computer e grafica 3D. I Framebuffer sono stati utilizzati anche da Sega per le sue schede arcade di fascia alta , che erano anche di qualità superiore rispetto ai computer di casa.

Modalità di visualizzazione

I framebuffer usati nei computer personali e domestici spesso avevano serie di modalità definite in cui il framebuffer può operare. Queste modalità riconfigurano l'hardware per produrre diverse risoluzioni, profondità di colore, layout di memoria e tempi di aggiornamento .

Nel mondo di Unix macchine e sistemi operativi, tali convenienze erano solitamente evitato a favore di manipolare direttamente le impostazioni hardware. Questa manipolazione era molto più flessibile in quanto era possibile ottenere qualsiasi risoluzione, profondità di colore e frequenza di aggiornamento, limitata solo dalla memoria disponibile per il framebuffer.

Uno sfortunato effetto collaterale di questo metodo era che il dispositivo di visualizzazione poteva essere guidato oltre le sue capacità. In alcuni casi questo ha provocato danni hardware al display[12]. Più comunemente, produceva semplicemente output incomprensibili e inutilizzabili. I moderni monitor CRT risolvono questo problema attraverso l'introduzione di circuiti di protezione. Quando la modalità di visualizzazione viene modificata, il monitor tenta di ottenere un blocco del segnale sulla nuova frequenza di aggiornamento. Se il monitor non è in grado di ottenere un blocco del segnale, o se il segnale è al di fuori della gamma dei limiti di progettazione, il monitor ignorerà il segnale del framebuffer ed eventualmente presenterà all'utente un messaggio di errore.

I monitor LCD tendono a contenere circuiti di protezione simili, ma per motivi diversi. Poiché il display LCD deve campionare digitalmente il segnale del display (emulando in tal modo un raggio di elettroni), qualsiasi segnale fuori portata non può essere visualizzato fisicamente sul monitor.

Tavolozza dei colori [ modifica ]

I Framebuffer supportano tradizionalmente un'ampia varietà di modalità colore. A causa della spesa in memoria, la maggior parte dei primi framebuffer utilizzava profondità di colore a 1 bit (2 colori), 2 bit (4 colori), 4 bit (16 colori) o 8 bit (256 colori). Il problema con profondità di colore così ridotte è che non è possibile produrre una gamma completa di colori. La soluzione a questo problema era il colore indicizzato che aggiunge una tabella di ricerca al framebuffer. Ogni colore memorizzato nella memoria del framebuffer funge da indice di colore. La tabella di ricerca funge da tavolozza con un numero limitato di colori diversi.

Ecco una tipica immagine indicizzata a 256 colori e la sua tavolozza (mostrata come un rettangolo di campioni):

In alcuni progetti era anche possibile scrivere dati sulla LUT (o passare da una tavolozza all'altra) durante la corsa, consentendo di dividere l'immagine in barre orizzontali con la propria tavolozza e quindi rendere un'immagine che aveva una tavolozza molto più ampia. Ad esempio, visualizzando una fotografia scattata in esterni, l'immagine potrebbe essere divisa in quattro barre, quella superiore con enfasi sui toni del cielo, la successiva con i toni del fogliame, la successiva con i toni della pelle e dei vestiti e quella inferiore con i colori di fondo. Ciò richiedeva che ogni tavolozza avesse colori sovrapposti, ma fatto con cura, consentiva una grande flessibilità.

Accesso alla memoria

Sebbene i framebuffer siano comunemente accessibili tramite una mappatura della memoria direttamente allo spazio di memoria della CPU, questo non è l'unico metodo con cui è possibile accedervi. I framebuffer hanno variato ampiamente nei metodi utilizzati per accedere alla memoria. Alcuni dei più comuni sono:

·       Mappatura dell'intero framebuffer a un dato intervallo di memoria.

·       Comandi della porta per impostare ogni pixel, intervallo di pixel o voce di tavolozza.

·       Mappatura di un intervallo di memoria inferiore alla memoria del framebuffer, quindi cambio di banco se necessario.

L'organizzazione del framebuffer può essere composta da pixel o planare . Il framebuffer può essere indirizzabile in tutti i punti o avere limitazioni su come può essere aggiornato.

RAM sulla scheda video

Le schede video hanno sempre una certa quantità di RAM. Questa RAM è dove la bitmap dei dati dell'immagine viene "bufferizzata" per la visualizzazione. Il termine frame buffer è quindi spesso utilizzato in modo intercambiabile quando si fa riferimento a questa RAM.

La CPU invia gli aggiornamenti dell'immagine alla scheda video. Il processore video sulla scheda forma un'immagine dell'immagine sullo schermo e la memorizza nel frame buffer come una grande bitmap nella RAM. La bitmap nella RAM viene utilizzata dalla scheda per aggiornare continuamente l'immagine sullo schermo.

Framebuffer virtuali

Molti sistemi tentano di emulare la funzione di un dispositivo framebuffer, spesso per ragioni di compatibilità. I due framebuffer virtuali più comuni sono il dispositivo framebuffer Linux (fbdev) e X Virtual Framebuffer ( Xvfb ). Xvfb è stato aggiunto alla distribuzione del sistema X Window per fornire un metodo per eseguire X senza un framebuffer grafico. Il dispositivo framebuffer di Linux è stato sviluppato per astrarre il metodo fisico per accedere al framebuffer sottostante in una mappa di memoria garantita a cui i programmi possono accedere facilmente. Ciò aumenta la portabilità, poiché i programmi non sono necessari per gestire i sistemi che hanno mappe di memoria disgiunte o richiedono il cambio di banco.

Scorrimento delle pagine

Un frame buffer può essere progettato con memoria sufficiente per memorizzare due frame di dati video. In una tecnica nota generalmente come double buffering o più specificamente come page flipping , il framebuffer utilizza metà della sua memoria per visualizzare il frame corrente. Mentre quella memoria viene visualizzata, l'altra metà della memoria viene riempita con i dati per il fotogramma successivo. Una volta riempito il buffer secondario, al framebuffer viene chiesto di visualizzare invece il buffer secondario. Il buffer primario diventa il buffer secondario e il buffer secondario diventa il primario. Questo passaggio viene spesso eseguito dopo l' intervallo di cancellazione verticale per evitare lo strappo dello schermo quando metà del vecchio frame e metà del nuovo frame vengono mostrati insieme.

Il capovolgimento delle pagine è diventato una tecnica standard utilizzata dai programmatori di giochi per PC .

Acceleratori grafici

Con l'aumento della richiesta di una grafica migliore, i produttori di hardware hanno creato un modo per ridurre la quantità di tempo della CPU necessaria per riempire il framebuffer. Questa è comunemente chiamata accelerazione grafica . Comandi di disegno grafico comuni (molti dei quali geometrici) vengono inviati all'acceleratore grafico nella loro forma grezza. L'acceleratore quindi rasterizza i risultati del comando nel framebuffer. Questo metodo libera la CPU per fare altro lavoro.

I primi acceleratori si concentravano sul miglioramento delle prestazioni dei sistemi GUI 2D . Pur mantenendo queste capacità 2D, la maggior parte degli acceleratori moderni si concentra sulla produzione di immagini 3D in tempo reale. Un progetto comune utilizza una libreria grafica come OpenGL o Direct3D che si interfaccia con il driver grafico per tradurre i comandi ricevuti in istruzioni per l' unità di elaborazione grafica (GPU) dell'acceleratore . La GPU utilizza queste istruzioni per calcolare i risultati rasterizzati ei risultati sono un po 'blittatial framebuffer. Il segnale del framebuffer viene quindi prodotto in combinazione con i dispositivi di sovrapposizione video incorporati (solitamente utilizzati per produrre il cursore del mouse senza modificare i dati del framebuffer) e tutti gli effetti speciali finali che vengono prodotti modificando il segnale di uscita. Un esempio di tali effetti speciali finali è stata la tecnica di anti-aliasing spaziale utilizzata dalle carte 3dfx Voodoo . Queste schede aggiungono una leggera sfocatura al segnale di uscita che rende l'aliasing della grafica rasterizzata molto meno evidente.

Un tempo c'erano molti produttori di acceleratori grafici, tra cui: 3dfx Interactive ; ATI ; Ercole ; Trident ; Nvidia ; Raggio ; Grafica S3 ; SiS e grafica in silicio . A partire dal 2015 il mercato degli acceleratori grafici per sistemi basati su x86 è dominato da Nvidia (acquisita 3dfx nel 2002), AMD (che ha acquisito ATI nel 2006) e Intel (che attualmente produce solo GPU integrate anziché schede video discrete).

Confronti

Con un framebuffer, il fascio di elettroni (se la tecnologia di visualizzazione ne utilizza uno) viene comandato per eseguire una scansione raster , nel modo in cui un televisore riproduce un segnale di trasmissione. Le informazioni sul colore per ogni punto così visualizzato sullo schermo vengono estratte direttamente dal framebuffer durante la scansione, creando un insieme di elementi dell'immagine discreti, cioè i pixel.

I framebuffer differiscono in modo significativo dai display vettoriali che erano comuni prima dell'avvento della grafica raster (e, di conseguenza, al concetto di framebuffer). Con una visualizzazione vettoriale, vengono memorizzati solo i vertici delle primitive grafiche. Il fascio di elettroni del display di output viene quindi comandato di spostarsi da vertice a vertice, tracciando una linea attraverso l'area tra questi punti.

Allo stesso modo, i framebuffer differiscono dalla tecnologia usata nei primi display in modalità testo , dove un buffer contiene i codici per i caratteri, non i singoli pixel. Il dispositivo di visualizzazione video esegue la stessa scansione raster di un framebuffer, ma genera i pixel di ogni carattere nel buffer mentre dirige il raggio.

Voci correlate

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
  1. ^ What is frame buffer? A Webopedia Definition, in webopedia.com.
  2. ^ Frame Buffer FAQ, su sunhelp.org.
  3. ^ A storage system for use with binary-digital computing machines, in Proceedings of the IEE - Part III: Radio and Communication Engineering, vol. 96, n. 40, March 1949, pp. 81–, DOI:10.1049/pi-3.1949.0018.
  4. ^ Kilburn 1947 Report Cover Notes (Digital 60), su curation.cs.manchester.ac.uk.
  5. ^ J. Gaboury, The random-access image: Memory and the history of the computer screen, in Grey Room, vol. 70, n. 70, 1º marzo 2018, pp. 24–53, DOI:10.1162/GREY_a_00233.
  6. ^ BRAD: The Brookhave Raster Display, vol. 11, June 1968, pp. 415–416, DOI:10.1145/363347.363385.
  7. ^ A. Michael Noll, Scanned-Display Computer Graphics, in Communications of the ACM, vol. 14, March 1971, pp. 145–150, DOI:10.1145/362566.362567.
  8. ^ Richard Shoup, SuperPaint: An Early Frame Buffer Graphics System (PDF), in Annals of the History of Computing, IEEE, 2001.
  9. ^ Computer Architecture For Interactive Display Of Segmented Imagery, Computer Architectures for Spatially Distributed Data, Springer Science & Business Media, June 1983, pp. 75-94 (81).
  10. ^ Picture System (PDF), Evans & Sutherland.
  11. ^ History of the New York Institute of Technology Graphics Lab, su cs.cmu.edu.
  12. ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html XFree86 Video Timings HOWTO: Overdriving Your Monitor