Le novità fra TXAA, GPU Boost e NVENC
L'arrivo di una nuova architettura è sempre accompagnato da nuove feature software e hardware tanto per AMD come per NVIDIA. Questa volta l'elenco comprende:
- GPU Boost: feature hardware, disponibile solo con le nuove VGA GeForce GTX 680
- Adaptive VSync: feature software, disponibile con tutte le VGA GeForce utilizzando i nuovi drivers GeForce 3xx
- FXAA e TXAA: feature software, disponibile con tutte le VGA GeForce utilizzando i nuovi drivers GeForce 3xx
- Bindless Textures: feature hardware, disponibile con le nuove VGA GeForce GTX 680 e con appliativi OpenGL
- NVENC: feature hardware, disponibile solo con le nuove VGA GeForce GTX 680
GPU Boost
Al pari delle moderne CPU Intel ed AMD, NVIDIA ha deciso di regalare alle sue nuove GPU un sistema di boost prestazionale automatico che incrementa la frequenza di funzionamento del chip, quando esiste la possibilità di farlo. L'idea è sempre la stessa: fissato un limite massimo per la potenza assorbita, quando il caso reale fa si che non lo si raggiunga, la GPU ha uno "spazio" a disposizione per incrementare le sue prestazioni.
In parole povere, NVIDIA ha fissato un limite massimo per la potenza assorbita da questa scheda impostando un determinato TDP (thermal design power) e su questo ha stabilito un valore di frequenza nominale, pari a 1006MHz, per la GTX 680. Questi dati implicano che, a quella frequenza e con una determinata tensione di funzionamento, la massima dissipazione del chip grafico deve essere quella indicata dal TDP.
Se però ci mettiamo in un caso pratico di un gioco che sta girando, non sempre tutte le unità del chip grafico sono coinvolte e, anche se la frequenza è quella massima possibile di 1006MHz, la tensione è quella prevista, non è detto che i consumi del chip siano quelli massimi imposti dal TDP. In tali casi è dunque possibile incrementare la frequenza di funzionamento e se necessario anche la tensione per ottenere maggiori prestazioni.
Il funzionamento deve essere ovviamente dinamico (se fosse stata impostata una frequenza di funzionamento superiore fissa sarebbe stato necessario innalzare il limite di TDP) e controllato in real time. Questo è proprio quanto fa NVIDIA con Kepler nel quale è stata integrata una circuiteria hardware che continuamente controlla i consumi della GPU, evitando perciò di dover ricorrere a specifici (e statici) profili per ogni applicazione.
Dal clock di base in modalità 3D di 1006MHz, le schede GeForce GTX 680 possono così raggiungere un “Boost Clock” di almeno 1058MHz (nel momento in cui i consumi dell'applicazione che sta girando lo permettono). Il massimo clock raggiunto potrebbe essere però superiore a questo se la GPU ha ancora spazio a disposizione per salire. Il produttore afferma di aver osservato incrementi anche fino ad 1,1GHz.
GPU Boost, infine, è pienamente compatibile con le pratiche di overclock. Per aumentare la frequenza di base della GPU, sia nel caso in cui venga effettuato dai partners AIB sia quando venga effettuato dall'utente finale utilizzando uno dei tanti tool software a disposizione, è necessario prima modificare il target di potenza della GPU che, a quel punto, risucirà a raggiungere anche più elevati valori di Boost Clock. Il funzionamento è molto simile a quello che incontriamo con le schede grafiche della rivale AMD.
Adaptive VSync
Per risolvere i problemi di qualità delle immagini dovuti al sincronismo fra il framerate ed il refresh dei display, NVIDIA ha ideato una tecnologia indicata come Adaptive VSync, la quale risulta disponibile per tutte le schede grafiche GeForce grazie ai nuovi drivers della serie 300. Il problema dello stuttering, dovuto al VSync, si presenta con determinati videogame ed in determinate situazioni: purtroppo non è risolvibile in maniera definitiva attivando o disattivando il VSync dai drivers della scheda grafica come si fa ormai da sempre.
La disattivazione del VSync apporta i maggiori benefici solo quando il framerate è inferiore a 60 frame al secondo: così facendo si evita che la sincronizzazione salti di colpo da 60Hz a 30Hz o a valori inferiori (multipli di 60). Quando però il framerate è superiore a 60, mantenere il VSync disattivato crea fastidiose linee orizzontali che risultano maggiormente visible all'aumentare degli fps. In questo caso sarebbe perciò meglio avere il VSync attivato.
NVIDIA ha dunque pensato di rendere dinamica l'attivazione e la disattivazione del VSync attraverso la tecnologia Adaptive VSync. Quando il framerate scende sotto i 60 frame al secondo il VSync viene disattivato mentre viene attivato quando sale sopra i 60 fps. Nel pannello di controllo dei drivers NVIDIA esistono due modalità per Adaptive VSync (Adaptive e Adaptive (half refresh rate)) che hanno come limite 60Hz e 30Hz.
Due nuove tecniche di AA: FXAA e TXAA
Quello delle tecniche di AntiAliasing è un terreno di discussione ancora molto fertile nonostante se ne parli e lo si affronti ormai da anni. La tecnica indicata come FXAA è già disponibile all'interno di alcuni giochi e, vista la sua indubbia efficienza, NVIDIA ha pensato di supportarla al meglio implementandola all'interno dei drivers (questo permette di applicarla a qualunque gioco).
La tecnica di FXAA è basata su un filtro di pixel shading applicato alla fine del processo di creazione delle scene assieme ad altri filtri di post processing come quelli di motion blur o bloom. I vantaggi sono relativi sia alle prestazioni che all'uso della memoria rispetto alle tecniche di multi-sample anti-aliasing (MSAA) e, come se non bastasse, il filtro permette di agire sia sull'edge aliasing che sull'aliasing per single-pixel e sub-pixel con una riduzione importante dello shader aliasing. Possiamo affermare che la qualità del filtro FXAA è simile a quella della tecnica MSAA 4x al costo di un MSAA 2x.
Nei drivers della serie 300 è supportata la modalità FXAA che rispecchia un mix delle tecniche FXAA 1 (disponibile ad esempio in Age of Conan, F.E.A.R.3 e Duke Nukem Forever) e FXAA 3 (Battlefield 3) che fornisce una migliore combinazione fra performance e qualità delle immagini e funziona con applicazioni DirectX 9, DirectX 10, DirectX 11 e OpenGL. Il mix proposto da NVIDIA migliora la risposta sul testo rispetto all'FXAA 1 e la qualità delle immagini rispetto all'FXAA 3 che però risulta a sua volta superiore su HUD e testo.
La tecnica di TXAA è invece del tutto nuova ed è stata progettata per avvantaggiarsi in pieno delle performance delle GeForce GTX 680 con high FP16 texture. TXAA è un insieme di filtri di anti-aliasing hardware, stadi custom di CG AA resolve "film style" e un componente temporale (applicato solo nel caso di TXAA 2x). In sostanza il TXAA è un resolve filter di elevata qualità progettato per funzionare correttamente con la pipeline di post processing HDR.
TXAA è dipsonibile in due modalità, TXAA 1 e TXAA 2. Il primo offre una qualità visiva simile a quella di una tecnica di MSAA 8x con un pegno prestazionale vicino a quello di un MSAA 2x; il TXAA 2 costa quanto un MSAA 4x ma la qualità è superiore a quella di un MSAA 8x.
I primi giochi ad utilizzare le tecniche di TXAA saranno disponibili entro l'anno ed includeranno: MechWarrior Online, Secret World, Eve Online, Borderlands 2, Unreal 4 Engine, BitSquid, Slant Six Games e Crytek.
Bindless Texture
Finora la gestione delle texture è stata legata ad una tabella di riferimenti che, con le DirectX 11, permette di utilizzare 128 slot e dunque altrettante texture simultaneamente. Questo numero è esattamete lo stesso che troviamo nelle architetture Fermi mentre con Kepler e le bindless texture, è possibile utilizzare contemporaneamente quante texture si desidera (il limite è spostato ad oltre un milione) perché lo shader può referenziare le texture direttamente in memoria.
Le bindless texture sono per ora utilizzabili solo con applicazioni OpenGL ma si prevede che essere saranno disponibili anche con le DirectX in maniera nativa o attraverso una API NVIDIA (NVAPI).
NVENC
All'interno di Kepler NVIDIA ha integrato un apposito modulo per la gestione in hardware della codifica dei video H.264. NVENC, che ricorda da vicino la tecnologia Intel Quick Sync Video, permette di effettuare queste operazioni con consumi decisamente ridotti e con velocità fino a 8x rispetto al video in real time: ciò significa che, se dovete codificare un video di 32 minuti vi saranno necessari appena 4 minuti.
In precedenza, con architettura CUDA based, la stessa operazione poteva essere effettuata da un programma software capace di sfruttare i CUDA Core che, nonostante l'eccezionale incremento prestazionale rispetto ad una CPU tradizionale, non risulta efficiente quanto il nuovo modulo di Kepler. Questo offre prestaizoni 4 volte superiori con consumi inferiori. In aggiunta NVENC può lavorare in parallelo con un encoder CUDA senza avere rispercussioni sulle prestazioni (tranne nel caso i cui qualche algoritmo di pre-processing richiede CUDA per il suo funzionamento).
NVENC supporta i profili H.264 Base, Main ed High Profile Level 4.1 (come nello standard Blu-ray), supporta la codifica MVC (Multiview Video Coding) per i video stereoscopici usati nei Blu-ray 3D e permette di codificare video fino alla risoluzione di 4096x4096 pixel. I possibili utilizzi di NVENC riguardano la realizzazione di videoconferenze HD su notebook mainstream, l'invio di contenuti in alta definizione da un PC desktop verso schermi TV attraverso una rete wireless o il semplice authoring di dischi Blu-ray.