Quel post sul blog che John menziona è un buon inizio (se lo dico io stesso!), Ma ci sono un po 'di dettagli in più che potrebbero essere utili.
Per l'architettura PowerVR, la struttura dei dati intermedi - variamente chiamata elenco primitivo o buffer dei parametri (PB) - che memorizza i dati per riquadro, dopo che tutte le ombre dei vertici e il processo di piastrellatura sono completi, è in realtà principalmente generata e gestita da l'hardware, piuttosto che il driver.
Le strutture in memoria del PB sono fisicamente divise in due. Innanzitutto, blocchi di dati di vertici trasformati, inclusi gli attributi di vertici. I blocchi sono compressi e, come puoi immaginare, sono solo dati compressi e compressi in virgola mobile per la maggior parte. La seconda struttura in memoria sono i dati di piastrellatura, che è effettivamente un elenco di elenchi.
L'elenco di livello superiore in quella struttura di dati è chiamato area e può codificare un insieme di riquadri anziché un singolo riquadro alla volta, per un determinato blocco di base. Una regione è quindi un insieme di posizioni di riquadri dello schermo, stati di riquadri e quindi un elenco dei blocchi compressi che contengono la geometria in quella regione. Le regioni sono ciò su cui funziona il rasterizzatore e puoi immaginare che i riquadri vuoti vengano saltati automaticamente, anche se in alcuni casi c'è una buona ragione per cui il rasterizzatore visita le regioni vuote.
La memoria utilizzata dalla GPU per il PB è allocata in modo dinamico in tutte le moderne implementazioni di PowerVR. Il driver fornisce un puntatore a tale memoria e il driver, con l'aiuto della GPU, lo ridimensionerà come richiesto. Tale meccanismo costituisce un compromesso tra la necessità di riallocare frequentemente e la riduzione al minimo della quantità di spazio PB allocato.
Le GPU moderne si sforzano davvero di ridurre al minimo l'indirizzamento della memoria, ma camminare sul PB per alimentare la fase di rasterizzazione è uno di quei casi in cui è davvero difficile e non c'è altra scelta. Per fortuna il puntatore che segue avvolge blocchi di grandi dimensioni che memorizzano bene nella cache e vengono trasmessi nel core.
Altre architetture non funzionano esattamente allo stesso modo di PowerVR, perché parte del motivo per cui il PB è il modo in cui è nella nostra architettura è quello di aiutare il concetto di ombreggiatura dei pixel completamente differito che implementiamo, ma il concetto generale si applica a tutti gli altri piastrellisti nel spazio mobile di cui sono a conoscenza.