Skin ADV

amd mantle iconDan Baker (Oxide Games) e Josh Barczak (Firaxis Games) hanno pubblicato due interessanti "articoli" sulle API grafiche low-level e sulla direzione che sta prendendo la programmazioni dei giochi futuri. Dopo gli annunci in pompa magna fatti dal reparto marketing di AMD (per quanto riguarda Mantle) e Microsoft (per quanto riguarda le DirectX 12) la parola passa finalmente ai game developer, cioè a coloro che con questi strumenti ci lavorano veramente.

I due programmatori non fanno un confronto diretto tra Mantle e D3D12 - sostanzialmente per due motivi: 1) le due API condividono gli stessi principi di basso livello ma sono fondamentalmente diverse, 2) Mantle è una realtà già disponibile, mentre le DX12 non sono ancora uscite - ma offrono degli interessanti spunti per quanto riguarda le caratteristiche dei due modelli e parlano della necessità che ha portato sia AMD (insieme ad un gruppo selezionato di esperti developer) che Microsoft a sviluppare una nuova tipologia di API grafiche differente da quella precedente.

Dalle loro considerazioni emerge che siamo in una fase di grandi cambiamenti per il settore della grafica 3D in tempo reale e che dopo un lungo periodo di "sottimissione" alle DirectX di Microsoft gli sviluppatori hanno trovato la forza per convincere l'industria del gaming su PC (IHV e ISV) a rivedere alcuni concetti. Nel mondo ideale i game developer vorrebbero un modello di programmazione per le GPU simile a quello delle CPU x86 (cioè completamente privo di API e di livelli di astrazione), ma senza rinunciare alla compatibilità ben definita che solo le DirectX e le OpenGL riescono a garantire. Chiaramente questo non è possibile: per via della natura diversa dei chip grafici, un'interfaccia di programmazione deve essere comunque presente, ma Mantle (e D3D12 ) si avvicina molto a a tale aspirazione grazie al suo approccio low-level.

Cominciamo col capire cosa sono le API low-level per uno sviluppatore:

In my mind, here is what it takes for an API to be considered “low level”:

  1. Must offer control over memory placement, with minimal restrictions. Applications must be able to define coarse-grained memory spaces and manually position resources in them, subject to reasonble constraints.
  2. Must present an asynchronous command buffer model for state changes and draw submission
  3. Must allow fully parallel command buffer construction
  4. Must place synchronization and hazard tracking under application control
  5. Must do only as much work as is necessary to abstract the device.

Mantle is the only shipping graphics API which meets all of these criteria. D3D12 should come very close. OpenGL is way behind.

Quali sono i vantaggi delle API low-level:

The good news is that low level APIs are going to empower game developers. We know things that the driver doesn’t. We know how often each resource is used. We know which resources are used together. We know exactly when our rendering passes will start and when they will end. We know when we need to synchronize and when we don’t. We have a much more complete picture than the driver does, and by handing the reigns to us, the driver’s job is going to become a lot easier. This simplicity will result in significantly faster drivers. It will also result in far fewer driver bugs.

...e gli svantaggi:

The bad news is that low level APIs are going to make graphics programming harder. Things that used to be driver bugs will become application bugs. Graphics engines will be even trickier to wrap one’s head around. If you think that OpenGL and D3D are too complicated as they are, then you will have a very difficult time keeping up. It will be considerably more difficult to write a quick, simple application with a low level API than with a high level one. It will be easier than ever to bring down the GPU.

Ecco il perchè dell'idea di Mantle:

Many of the most experienced developers, Oxide included, had for years advocated a lighter, simpler API that did the absolute minimum that it could get away with. We believed we needed a teardown of the entire API rather than some modifications of current APIs. Admittedly, this was after advocating no API at all caused the hardware architects’ faces to pale a bit too much. But if we were to build something evil, at least we could make it the least evil possible.
It was this group of advocates who, with AMD, pioneered the development of Mantle. Mantle was not an API birthed by a hardware vendor, but rather a child born of developers and AMD to create a completely different class of API. AMD selected a small but expert group of developers to help advance it. The intention was not to develop the end-all solution for every developer, but rather to build something that didn’t block our studios from maximizing the very capable GPUs that AMD was building.
This group spent quite a bit of time with AMD going over and helping shape the API. Many of the features and structure of Mantle came from developers, not from AMD itself. For example, we could show that nearly every batch required at least some small data payload, so we built in a specialized fast path just for it.

Più volte nelle nostre news abbiamo ribadito il concetto che Mantle non aspira a conquistare tutti i game developers ma solo quelli che sviluppano direttamente i motori grafici o che li distribuiscono a sviluppatori di terze parti per la creazione di videogiochi.

But what about the beginner? Or the hobbyist? Or the indie? What about people who aren’t building full engines? The answer is that low level APIs simply do not work for this audience, nor should they. I expect we’ll see something like what Timothy Lottes calls for. We are going to see the graphics stack split into two levels. On one level, things will look like they always did, but on another level, there will be a race to the metal. The best performing paths are going to be low level. They will have to be, in order to compete with Mantle. Middleware, engines, OSes, and the open-source community will then come along and layer any number of slow, user-friendly abstractions on top of them. High level graphics will still exist, but maximum performance will only be possible at the low level. It is a very good time to be a professional engine builder.

La domanda che tutti si pongono è: "Chi è nato prima, Mantle o le DX12?". A nostro avviso Mantle ha sicuramente accelerato il processo di sviluppo da parte di Microsoft delle DX12, ma sappiamo che la casa di Redmond era al lavoro su una classe di API diversa dalla struttura precedente da diversi anni. Riteniamo che entrambi i modelli (Mantle e DX12) siano ispirati dalle API provenienti dal mondo console, anche se Dan è di diverso avviso:

We heard nothing of the development of a new version of D3D12 until sometime after the early tests of Mantle were indicating that this radically different API model could work, and work well – data which we shared with Microsoft. What prompted Microsoft to redesign DX is difficult to pin down, but we’d like to think that it would never have happened if Mantle hadn’t changed the game. We are delighted in DX12’s architectural similarities to Mantle, and see it is a validation of the pioneering work that Oxide was privileged to be part of.

Does D3D12 mitigate the need for Mantle? Not at all. Though it is difficult to determine without more complete information on D3D12, our expectation is that Mantle will have the edge of D3D12 in terms of CPU performance. This is because the GCN architecture by AMD is the most general of all the current GPUs, and therefore the driver needs to do a bit less.

FONTI:

Delicious
Submit to Digg
StumbleUpon
Michele Carasia
Autore: Michele Carasia
Esperto in:
Schede video, CPU, overclock, videogames
E' stato newser e reviewer per importanti portali italiani occupandosi in particolare di schede video e processori. Appassionato anche di overclock e videogames.
Notizie postate da Michele CarasiaArticoli postati da Michele Carasia
1955
news
68
articoli
    

Ultime dal forum



[Waiting for] AMD GPU Navi (329 messaggi)
Ultimo messaggio di: Hadar (20/05/2019 23:03)

Configurazione per uso casalingo soft (27 messaggi)
Ultimo messaggio di: Fottemberg (20/05/2019 16:44)

I nostri bolidi a 2 e 4 ruote (204 messaggi)
Ultimo messaggio di: Bivvoz (20/05/2019 12:46)

Android e smartphone non aggiornati (9 messaggi)
Ultimo messaggio di: Bivvoz (20/05/2019 06:37)

Thread delle Offerte Online (434 messaggi)
Ultimo messaggio di: Fottemberg (19/05/2019 11:46)

[Official Topic] AMD "Zen" (1921 messaggi)
Ultimo messaggio di: paolo.oliva2 (19/05/2019 08:20)

L'angolo delle offerte Retail e Digitali (1008 messaggi)
Ultimo messaggio di: Mitch (17/05/2019 10:48)

[Guida] Freesync e Freesync 2 HDR (58 messaggi)
Ultimo messaggio di: Bivvoz (11/05/2019 19:15)

Il meglio dal forum



[Guida] all'overclock di AMD Ryzen.
Il thread per spiegare ai novizi come overclockare le CPU Ryzen, per raccogliere pareri e per scambiarci suggerimenti.

[Official Topic] AMD APU Kabini, Temash, Kaveri e... Carrizo.
Discutiamo le ultime novità sulle APU AMD basate su microarchitettura Bulldozer e Jaguar.

[Waiting for] AMD GPU Polaris & Vega (ex-Arctic Islands).
Discutiamo le ultime novità sulle GPU Polaris di AMD, senza dimenticarci di Vega!

[Official Topic] Nvidia Pascal GPU.
Discutiamo le ultime novità sulle GPU Pascal di NVIDIA e su quanto ci aspetta in futuro!

[Official Topic] AMD "Zen".
Discutiamo le ultime novità sulla microarchitettura x86 Zen di AMD e le CPU/APU in arrivo.

Creative Sound Blaster e Windows 10/8.1/8/7/Vista.
Dedicato a tutti i possessori delle schede audio di Creative Labs!

B&C e la questone "degli articoli prezzolati".
Perché B&C è un portale diverso?