Quote:
Originariamente inviato da Malek86
(Messaggio 38725455)
Una domanda sull'AGP Aperture Size: come funziona esattamente, e quali sono i suoi limiti?
Con una G200 da 8MB, sono riuscito a fare partire Expendable a 1024x768x32 portando l'AAS a 32MB, mentre con 16 mi veniva un errore "out of video memory". Con una Riva TNT sempre da 8MB, invece, non ci sono riuscito, l'errore mi viene indipendentemente da come setto l'AAS.
Da cosa dipende allora? Deve essere supportato dalla scheda? Usando il Powerstrip, vedo che in alcune schede è presente solo la memoria video (ad esempio la Trio 3D ha solo 2.5MB e nient'altro), mentre in altre si vede la memoria video insieme alla memoria condivisa. Nella Riva TNT la memoria condivisa appare, quindi in teoria dovrebbe farcela? Perchè allora non funziona?
|
In parole molto semplici, l'AGP aperture size è la massima quantità di memoria che il chipset (northbridge) deve lasciar usare alla scheda video per lo stoccaggio delle texture. Questo non vuol dire che tale memoria sarà sempre riservata alla scheda video e indisponibile per il sistema; come dicevo, è un valore massimo, che può anche non essere usato per nulla (es: se la memoria onboard è sufficiente).
Scendendo un po' più nel dettaglio, il funzionamento è simile a una MMU. Per farti un esempio:
- il processore grafico mappa la memoria locale all'inizio (o alla fine) del suo spazio di indirizzamento. Questa memoria onboard, più veloce, sarà quella che ospiterà il framebuffer e le texture più usate;
- sempre il processore grafico, tramite il GART messo a disposizione dal chipset, mappa altra memoria (virtuale, potremmo dire, dato che non è on board) nel suo spazio di indirizzamento. In questa memoria vengono stoccate le texture che non trovano spazio nella memoria ob board;
- quanto il processore grafico si trova a dover renderizzare una texture che non ha in locale, gira l'indirizzo di memoria virtual al GART che, a sua volta, provvede a indirizzarlo verso il reale indirizzo fisico della RAM che ospita la texture.
Tale tecnica, detta DiME (Direct Memory Execution) deve essere supportata sia dal chipset (e a memoria mi pare che tutti quelli AGP compliant la supportino) sia dal chip grafico. Parlando di quest'ultimo, la situazione all'epoca era un po' ingarbugliata: i chip che erano ancora basati sul bus PCI e che erano stati portati su schede AGP (che può appunto funzionare in modalità compatibile PCI) non supportavano tale funzione, essendo in sostanza dei dispositivi PCI66. Al contrario, i chip di nuova generazione (3dfx Avenger / Voodoo3 escluso) la supportavano a livello hardware, ma non sempre la controparte software era all'altezza.
I chip grafici integrati (i810/815) potevano addirittura usare la memoria AGP come framebuffer, ma generalmente nelle schede dedicate questa configurazione è evitata perchè abbassa le prestazioni pure nel 2D e incide sempre anche sulla banda messa a disposizione alla CPU.
Matrox (e Intel) erano proprio le due case con migliore supporto AGP, quindi non mi sorprende vedere che tale funzione sembra andare meglio su G200. Il problema della TNT, però, potrebbe anche essere legata al framebuffer: non è che i driver stanno forzando il triple-buffering e quindi la scheda si trova a corto di memoria per il framebuffer? Perchè a 1024x768x32 hai un color buffer di circa 6 MB (2 buffer x 3 MB)+ 1.4 MB di Zbuffer a 16 bit, e quindi un altro color buffer (altri 3 MB) non entrerebbe più nella memoria locale...
Ciao. :)