AMD Mantle: test prestazioni e analisi della nuova API grafica

AMD Mantle è disponibile per determinati utenti con schede video Radeon e ci sono alcuni titoli che supportano questa nuova API grafica. Abbiamo preso alcune CPU e schede video, analizzandone le prestazioni con Battlefield 4 e Thief.

Avatar di Don Woligroski

a cura di Don Woligroski

Introduzione

L'API Mantle di AMD è un argomento polarizzante nel mondo del gioco su PC. Ci sono molte opinioni, molte informazioni, tante speculazioni e una manciata di fatti noti da passare al setaccio. Vogliamo proporvi una visione d'insieme e farlo nel modo giusto, andando oltre il nostro primo approccio con Mantle (AMD Mantle vs. DirectX, prestazioni con Thief a confronto). Sfortunatamente è quasi impossibile poter discutere di questo tema senza ricorrere al gergo del settore, quindi cominciamo subito a parlare di alcune tematiche, vedere dove eravamo e perché siamo arrivati sino a Mantle.

Che cos'è una API?

L'acronimo di API sta per "application programming interface". La parola chiave in questo insieme di termini è "interface", interfaccia. Una API è progettata per permettere alle applicazioni d'interfacciarsi o comunicare l'una con l'altra.

Un grande esempio in tal senso è la famosa funzione "copia e incolla" di Windows. Quando copiate un paragrafo di testo dal vostro browser negli appunti e poi incollare quel testo in un "word processor" (Word, Libreoffice, OpenOffice), avete applicato - inconsapevolmente - il potere di una API.

Gli sviluppatori del vostro browser hanno incluso il supporto per una richiesta - o chiamata - dell'API del comando "copia", mentre i programmatori del word processor hanno incluso il supporto per la chiamata dell'API del comando "incolla". Questi due programmi comunicano l'un l'altro attraverso una API.

Sapphire Dual-X R9 280 3GB GDDR5 Overclock Sapphire Dual-X R9 280 3GB GDDR5 Overclock
Gigabyte GA-970A-UD3P Scheda Madre SoAM3+, 970, ATX Gigabyte GA-970A-UD3P Scheda Madre SoAM3+, 970, ATX

Il vantaggio di una API è che gli sviluppatori di software non devono scrivere codice specifico per supportare ogni applicazione sulla faccia della Terra. Se non era per le API, tutti i software di modifica dei documenti al mondo avrebbero dovuto contenere un codice particolare per interfacciare qualcosa come la funzione copia e incolla a ogni altro software di editing al mondo. Un modello impossibile da mantenere.

C'è però un lato negativo. Quale? Una API non è così efficiente come il codice scritto specificatamente per la comunicazione diretta tra software. Il prezzo della convenienza è un uso maggiore di risorse hardware e di calcolo.

OK, ma cos'è una API grafica?

Dato che una API esiste per fornire un'interfaccia di comunicazione tra applicazioni, una API grafica comunica tra un'applicazione e il driver grafico di una scheda video.

Al centro di tutto, in questo caso, c'è la compatibilità. Anziché scrivere un motore di gioco per supportare più path per interfacciarsi con driver specifici delle schede video, gli sviluppatori possono concentrarsi invece sulla comunicazione con l'API. L'API poi "chiama" il driver grafico, che implementa le proprie istruzioni per la scheda video. In questo modo, le API grafiche possono essere considerate uno dei layer di astrazione (abstraction layer) tra sistema operativo e hardware.

Se lo scopo di una API grafica è garantire semplicità e convenienza, perché esiste più di una API?

OpenGL affonda le proprie radici nelle Iris GL, librerie proprietarie di SGI, distribuite nei primi anni '80. In una mossa sorprendente, l'azienda le rese uno standard aperto chiamato OpenGL – API Open Graphics Library. Gli avversari di SGI ottennero l'accesso in cambio della condivisione dell'onere – e secondo noi anche l'onore – di mantenere e aggiornare il codice di questa API.

Microsoft ha persino seduto nell'Architecture Review Board delle OpenGL, l'organo deputato a quel compito, fino al 2003, quando l'azienda ha tolto il supporto in favore delle proprie API DirectX, che ora sono le più diffuse. Attualmente le DirectX sono usate su dispositivi Windows e Xbox, quindi è facile giustificare la scelta dell'API Microsoft dal punto di vista di uno sviluppatore che vuole ottenere il massimo dalle risorse disponibili.

Detto questo, John Carmack è famoso per aver dimostrato che le OpenGL possono ancora essere usate per realizzare giochi di fascia alta per PC – come Rage. Inoltre, le OpenGL sono importanti perché possono essere usate su più piattaforme: Windows, Mac e Linux. Android, Windows Phone e iPhone usano OpenGL ES (Open GL for Embedded Systems). L'avanzata dei videogiochi mobile è di grande aiuto per le OpenGL.

Cos'hanno di male le DirectX 11 e le OpenGL? Perché il mondo ha bisogno di un'altra API grafica?

Due standard in contrapposizione sono un male. Sembra un autogoal aggiungerne un altro. In che modo le API esistenti deludono le aspettative degli sviluppatori?

DirectX e OpenGL sono state create il secolo scorso. Prima delle CPU multi-core. Recentemente alcuni sviluppatori hanno espresso preoccupazioni sul fatto che si tratta di API inclini all'instabilità e che scalano poco (o per niente) su piattaforme con molti thread. Inoltre, nessuna delle API è perfetta. Avete mai dovuto aggiornare un driver grafico per far sì che un gioco funzionasse correttamente? Ogni volta che ciò accade, l'API grafica ha fallito nel suo ruolo di layer di astrazione.

Oltre a questo si rumoreggiava che Microsoft stesse considerando di bloccare lo sviluppo delle DirectX nel 2013. In un'intervista con i colleghi tedeschi di Heise.de, Roy Taylor di AMD, disse: "Le schede video hanno bisogno di più processori e RAM. Ma non c'è alcuna DirectX 12 in vista. Per quanto ne sappiamo sinora, non ci sono piani per le DirectX 12". Inoltre, un'email trapelata da Microsoft riportava che la piattaforma di sviluppo cross-platform XNA Game Studio non era più sviluppata, e che le DirectX non stavano evolvendo più come una tecnologia. Microsoft ha poi ritrattato queste affermazioni, parlando di comunicazione fallace, ma senza svelare piani per le DirectX 12, la comunità degli sviluppatori stava diventando ansiosa.

Così è arrivata AMD, che in qualche modo afferma di essere stata spinta alla creazione di una nuova API che affrontasse i problemi esistenti per conto degli sviluppatori. Inoltre, poiché le APU e le GPU di AMD erano a bordo di Xbox One, PS4 e molti PC, l'azienda si trovava in una posizione unica per offrire una API che, potenzialmente, potrebbe essere sfruttata su più piattaforme.

In che modo Mantle dovrebbe migliorare la situazione rispetto a OpenGL e DirectX?

Mantle è associata alla frase "low level" – basso livello – e più vicino al silicio. Che cosa significa? In termini semplici, la risposta è "minimalismo". È più piccola, semplice e di conseguenza più veloce rispetto alle DirectX 11 e alle OpenGL. La nuova API di AMD probabilmente fa un minor numero di ipotesi su come gli sviluppatori vogliono costruire una determinata scena. Questo dà maggiore controllo sulle risorse agli sviluppatori, piuttosto che all'API, consentendo una migliore ottimizzazione.

Mantle ha quindi il potenziale per essere più efficiente. Inoltre, Mantle è in grado di eseguire "draw submissions" completamente parallele in modo da suddividere il carico di lavoro tra le più unità di una CPU. Se l'API è in grado di usare efficacemente più risorse di calcolo, le CPU multi-core più lente potrebbero divenire un collo di bottiglia meno marcato. In parole povere, le prestazioni con quei processori dovrebbero aumentare. Laddove la CPU non rappresenta un collo di bottiglia, Mantle potrebbe ridurre i consumi sul fronte grafico.

AMD afferma di essere una grande supporter dell'open source. Mantle è un'API open source?

No, non lo è, né AMD afferma che lo sarà in futuro. L'azienda dice solo che renderà disponibile l'SDK di Mantle entro la fine del 2014 senza costi di licenza o restrizioni non appena la "beta chiusa" sarà terminata.

Per chiarire, offrire l'accesso all'SDK non è la stessa cosa di essere open source. Significa tuttavia che, in teoria, Nvidia e Intel potrebbero scrivere un driver compatibile con Mantle. Pensiamo che sia poco realistico, anche se le cronache narrano di un interesse di Intel, seppur di breve periodo. Lasciamo però l'analisi alle conclusioni. Il punto è che AMD vuole mantenere il controllo su Mantle per ottimizzarlo per l'architettura GCN (Graphics Core Next) e favorire una veloce diffusione tra gli sviluppatori di nuove funzioni hardware, che non è una cosa praticabile per API come DirectX e OpenGL.

Stabilite le basi fondamentali di Mantle e alcuni concetti che lo circondano, passiamo ai test. AMD afferma che un buon numero di sviluppatori sta lavorando al supporto Mantle per titoli futuri come Civilization: Beyond Earth, Star Citizen e Dragon Age: Inquisition. Nel momento in cui scriviamo ci sono solo tre giochi che supportano l'API di AMD sul mercato: Battlefield 4, Thief e Plants vs. Zombies: Garden Warfare. Dato che l'ultimo gioco non ha una modalità di benchmark di Mantle disponibile, e usa lo stesso motore Frostbite di Battlefield 4, ci concentreremo sui primi due giochi.