Xbox One e l’incremento prestazionale: gli SDK continuano a migliorare

Pare proprio che, sotto la guida del sempre sia lodato (e per il futuro c’è da augurarsi anche ibernato o clonato) Phil Spencer, i tecnici e gli ingegneri della divisione Xbox non riposino mai. Se, infatti, sono sotto gli occhi di tutti i continui e sostanziali miglioramenti di Xbox One sul fronte della dashboard e delle funzionalità offerte agli utenti (qui non erano ancora arrivati il dlna, il supporto ai .mkv, etc.), non sono certo da meno i progressi che continuano ad aver luogo dietro le quinte e che vedono come primi destinatari gli sviluppatori.

Che gli ultimi SDK della One (noti come XDK – Xbox Development Kit) abbiano veramente poco a che fare con la versione acerba che ha accompagnato le fasi precedenti e immediatamente successive al lancio della console dovrebbe essere chiaro a tutti. Sia per le performance dei giochi che via via sono andate migliorando, ad un ritmo non compatibile con il solo accumulo di esperienza da parte dei programmatori sia perchè, come è risaputo, il passaggio in secondo piano del Kinect si è portato dietro quell’ormai famosissimo sblocco del 10% delle risorse della GPU (impiegabile a discrezione degli sviluppatori rinunciando al rilevamento dei movimenti). Tale intervento, giunto con gli SDK rilasciati a giugno 2014, è stato però solo un primo passo; recenti fughe di notizie o meglio furti di materiale solitamente coperto da nda e dichiarazioni di sviluppatori terze parti hanno portato alla luce ulteriori miglioramenti apportati da Microsoft ai kit di sviluppo per XOne. Ecco di cosa si tratta nello specifico.

Nuovi driver grafici

Dal materiale leakato dal gruppo hacker H4LT apprendiamo che con l’XDK di ottobre 2014 sono stati rilasciati anche nuovi driver grafici. Se pensate che sia roba di poco conto vi sbagliate perchè si tratta di driver in grado di contrastare lo spreco di memoria durante la gestione degli shader (per i meno avvezzi uno shader è un insieme di istruzioni usato nella grafica 3d per determinare l’aspetto finale delle superfici degli oggetti). I test hanno dimostrato che i nuovi driver permettono di ridurre addirittura fino al 45% l’uso della memoria.

B6K2YNRCYAAjh4c.png:large

Supporto alle Descriptor Table

Cercando di semplificare il discorso, una tabella dei descrittori è una struttura dati che permette di definire le caratteristiche delle varie aree di memoria durante l’esecuzione di un programma. Grazie all’aggiornamento di ottobre, le API grafiche (DX11.x) ora supportano le Descriptor Table; gli shader possono accedere direttamente a queste tabelle riducedo di conseguenza il carico computazionale che grava sulla CPU. Come si legge anche nella documentazione allegata all’SDK, tutto questo serve anche ad aprire la strada alle DX12 che arriveranno nel 2015 pure su Xbox One.

Sblocco del settimo core del processore

Sempre a partire dal mese di ottobre, Microsoft ha dato ai programmatori la possibilità di accedere anche al settimo core della CPU. In precedenza potevano essere adoperati per i giochi solo 6 degli 8 core presenti (così come avviene anche su PS4); gli altri due erano sempre riservati alla dashboard, ai vari servizi attivi in background e ad alcune funzionalità connese al Kinect. Evidentemente un lavoro di ottimizzazione del codice dei tre sistemi operativi presenti su Xbox One ha permesso di allegerire il carico computazionale del sistema sul processore. Ora gli sviluppatori possono adoperare da un minimo del 50% fino ad un massimo dell’80% della potenza di calcolo del settimo core. Questo a patto di rinunciare ai comandi vocali interni al gioco (come ad esempio quelli legati ai dialoghi), mentre continuano a rimanere utilizzabili in qualsiasi momento i controlli vocali di sistema (“Xbox registra questo elemento”, “Xbox vai a Home”, Xbox affianca”, etc.).

Probabilmente proprio a questa ritrovata potenza sul fronte CPU, oltre che alla maggior frequenza di clock dei core (1,75GHz su XOne vs 1,6GHz su PS4) si devono alcune recenti performance che tanto hanno fatto storcere il naso a molti. Il riferimento va ovviamente ad AC Unity e GTA V che hanno mostrato una maggiore stabilità del frame rate sulla console di Microsoft.

Miglior controllo dell’eSRAM e nuovi strumenti per l’ottimizzazione del codice

Tutto si è fermato ad ottobre dunque? A quanto pare proprio per niente. Queste sono le parole rilasciate di recente da Maciej Binkowski, lead designer di Techland impegnato su Dying Light, a GamingBolt parlando dell’ultimo XDK (disponibile dal 12 dicembre 2014):

In termini di vantaggi, la cosa principale riguarda soprattutto i miglioramenti sul controllo dell’eSRAM. La nuova API consente di fare molte più cose con l’eSRAM, cose che gli sviluppatori avrebbero sempre voluto fare ma che non erano facilmente accessibili. Questo, insieme a strumenti migliori (come PIX) ci ha consentito di migliorare le performance e applicare in maniera migliore l’utilizzo dell’eSRAM.

Tra tutti i miglioramenti qui citati, questo intervento per potenziare il controllo dell’eSRAM è probabilmente il più rilevante. A detta di diversi sviluppatori, il principale ostacolo riscontrato nello sviluppare su XOne risiedeva proprio nella gestione della embedded memory. Alcuni hanno anche dichiarato di essere stati costretti ad usare approcci caserecci basati su fogli excel per provare a capire quali asset grafici gestire tramite la eSRAM e quali attraverso la ram DDR3, con l’arduo obiettivo di massimizzare l’utilizzo di questi 32MB di memoria dall’elevata banda passante. Obiettivo adesso semplificato anche dalla disponibilità di strumenti come il PIX (Performance Investigator for Xbox), un software attraverso il quale analizzare e debuggare il codice dei giochi in sviluppo per migliorarne le performance.

Alla luce di tutto ciò non possiamo che convenire che la divisione Xbox si stia muovendo egregiamente per migliorare sia il lavoro degli sviluppatori sia le performance dei giochi. Inoltre qualcosa che va sotto il nome di DirectX12 ci suggerisce che possiamo aspettarci ancora altri miglioramenti. Come sappiamo queste non porteranno miracoli su XOne perchè, in quanto sistema chiuso, dispone già di API (una versione custom delle DX11.x) molto “vicine al ferro” ma non dimentichiamoci che la grande innovazione delle nuove librerie grafiche sta in una più bilanciata ripartizione del carico di lavoro sui vari core, a tutto vantaggio dei tempi di elaborazione dei processi grafici (che risultano sensibilmente ridotti). Aspetto questo su cui al momento XOne, a causa proprio dei limiti delle attuali API, è particolarmente deficitaria. Grazie a Wardell, amministratore delegato di Stardock, sappiamo infatti che per ora su Xbox One viene troppo spesso adoperato un solo core per elaborare la maggior parte dei processi. Alcuni margini per ulteriori miglioramenti prestazionali (ripeto a scanso di equivoci: non si parla di miracoli!) dunque ci sono.

2B6K3f59CcAAfDVV.png:large

Senza tralasciare inoltre che l’architettura di XOne è già predisposta per il rendering simultaneo di più contesti grafici a diversa priorità, funzione che stando alla documentazione allegata agli sdk verrà completamente sbloccata con i prossimi XDK, diciamo pure con le DX12 visto che proprio la parallelizzazione delle elaborazioni è uno dei punti di forza di queste librerie che si preannunciano già rivoluzionarie.

  • Bell’articolo. I margini di miglioramento di One saranno sicuramente maggiori di quelli di PS4. Ci aspetta un 2015 con tante sorprese e un 2016 esplosivo.

    • GamingAddiction_slp

      Grazie!
      Il lavoro di ottimizzazione e di miglioramento degli sdk che MS sta facendo è ottimo e fa ben sperare. Inoltre la conferma del rendering simultaneo di più contesti grafici è un’ottima notizia e conferma quanto io ed altri andiamo dicendo da mesi! 😉

    • kinodead

      è tutto da vedere ancora, ricordati che sony non stara a sbavarsi addosso.

      • Questo è ovvio ma se One ha un’architettura che gli permette di spingere di più sull’ottimizzazione c’è poco da fare, Sony può sbattersi quanto vuole ma One avrà margini di miglioramento maggiori. Una cosa sicura è che le due console non sono identiche.