PixelSync e InstantAccess: estensioni DirectX per Haswell

Con PixelSync e InstantAccess, due estensioni delle API DirectX, Intel mira a migliorare la vita degli sviluppatori e far girare più rapidamente i giochi sulle GPU integrate nei microprocessori Haswell.

Avatar di Manolo De Agostini

a cura di Manolo De Agostini

Intel ha presentato due estensioni per le librerie DirectX, chiamate PixelSync e InstantAccess, che saranno supportate nelle GPU integrate dei microprocessori Haswell. PixelSync è una soluzione hardware e software che permette di abilitare nei videogiochi l'Order Independent Transparency (OIT). Si tratta di, secondo Wikipedia, di "qualsiasi tecnica che può renderizzare correttamente oggetti semi-trasparenti sovrapposti senza doverli ordinare prima di eseguire il rendering".

Come sottolineato dai colleghi di Anandtech, sebbene OIT sia associato alle DirectX 11, non è una caratteristica delle API Microsoft, ma qualcosa che si può implementare usando tali librerie. Secondo Intel l'attuale implementazione di OIT richiede quantità eccessive di memoria e bandwidth e poiché Haswell e altre GPU hanno a disposizione meno risorse, l'azienda ha lavorato per trovare un metodo più efficiente per implementare OIT.

La parte hardware di PixelSync è semplicemente ciò che consente alle operazioni programmabili di blending essere eseguire sulla GPU di un processore Haswell. Mentre sulle tradizionali GPU le operazioni di frame buffering passano da hardware a funzione fissa con "flessibilità limitata", l'implementazione di Haswell è diversa. Ci sono ROPs a funzione fissa, certo, ma la GPU integrata in Haswell è dotata anche di hardware che "blocca e forza la serializzazione degli accessi di memoria attivati dall'estensione PixelSync", scrive Anandtech. Quando però il rendering tridimensionali diventa un problema, avere più istruzioni shader al lavoro su aree di pixel sovrapposte può creare problemi al funzionamento di algoritmi come OIT.

Così interviene PixelSync, che consente al software di "parlare" all'hardware, così da dirgli che per un particolare segmento di codice ogni shader all'opera sullo stesso pixel deve essere serializzato anziché eseguito in parallelo. Tale serializzazione è limitata a pixel direttamente sovrapposti, quindi le prestazioni del resto del codice non dovrebbero subire rallentamenti. Questo cambiamento consente di abilitare tecniche OIT e creare operazioni di frame buffer. Il lato software di PixelSync è una versione evoluta dell'algoritmo OIT dell'azienda di Santa Clara: fa leva su un'alta qualità di compressione per ridurre l'impatto sulla memoria e offrire prestazioni determinabili. Intel afferma che Codemaster e Creative Assembly supporteranno PixelSync, la prima probabilmente su GRID 2 e la seconda in Total War: Rome II.

Per quanto riguarda InstantAccess, i colleghi di Anandtech la definiscono come l'implementazione in salsa Intel di "zero copy". AMD ha già qualcosa di simile dai tempi di Llano. Anche se CPU e GPU condividono la stessa memoria fisica, un'unità non ha accesso diretto allo spazio di memoria dell'altra. Perciò se la GPU vuole lavorare su qualcosa che la CPU ha in memoria, deve fare una propria copia.

Tale processo è ovviamente un passaggio che richiede tempo e perciò Intel, con InstantAccess, permette al driver grafico di "aprire una strada" verso una locazione nella memoria della GPU a cui la CPU può accedere direttamente. Il processore può lavorare così sui dati senza doverli copiare e restituire alla GPU. Un passaggio in meno che riduce quindi le latenze operative. Grasso che cola.