Vulkan: een moderne api voor moderne hardware (interview met AMD)

41 reacties
Inhoudsopgave
  1. 1. De Vulkan-api
  2. 2. Vulkan: de ontwikkeling van een efficiëntere api
  3. 3. Vulkan 1.1, waar blijven de games?
  4. 4. Interview met AMD
  5. 5. Conclusie
  6. 41 reacties

Vulkan: de ontwikkeling van een efficiëntere api

AMD begon in 2013 met het ontwikkelen van een nieuwe api genaamd Mantle. De api werd opgebouwd om efficiënter gebruik te maken van moderne hardware, en daarbij zoveel mogelijk bottlenecks in de software weg te nemen. Dat kon omdat Mantle als low-level api werd opgezet, wat betekent dat de hardware directer aanspreekbaar is door ontwikkelaars. In ruil daarvoor moet er wel nauwkeuriger en uitgebreider worden geprogrammeerd dan in DirectX, waar juist veel zaken door de api zelf werden beheerd en afgehandeld. De ontwikkeling van Mantle heeft AMD samen gedaan met DICE (bekend van de Battlefield-games), maar de api werd alleen beschikbaar gemaakt voor de gcn-architectuur van AMD. Daarnaast werkte Mantle, net als DirectX, alleen op Windows.

Enkele games hebben ondersteuning gekregen voor Mantle, waaronder Battlefield 4, Civilization: Beyond Earth, Dragon Age: Inquisition, Mirror's Edge Catalyst, Sniper Elite III en Thief. Per game verschilde de prestatiewinst ten opzichte van DirectX behoorlijk, wat uiteraard ook weer verschilde per hardwareconfiguratie. Al met al kunnen we stellen dat Mantle vooral een geslaagd proof of concept van een low-level api was en een succesvol signaal naar game-ontwikkelaars.

Het DNA van Mantle

AMD's Mantle heeft niet genoeg grip op de markt gekregen om als zelfstandige api te kunnen voortbestaan, maar er lagen andere mogelijkheden in het verschiet. De Khronos Group, beheerder van api's zoals OpenGL, WebGL, OpenCL en gITF, was destijds bezig met het oriënteren op een opvolger van OpenGL, ook wel glNext genoemd. In dit ontwikkeltraject heeft AMD zijn Mantle-api beschikbaar gesteld als bouwstenen voor de opvolger van OpenGL, wat door de Khronos Group werd opgenomen en vanaf toen de naam Vulkan meekreeg. Vrijwel gelijktijdig werd door AMD aangekondigd dat het de publieke ontwikkeling van Mantle staakte.

Net als bij Mantle heeft Vulkan als low-level grafische api een hele rits aan voordelen ten opzichte van OpenGL en de oudere DirectX-versies. Zo is er aan de kant van de cpu onder meer een lagere overhead bij het valideren en verwerken van api-instructies, kan er een veelvoud van het aantal draw calls gegenereerd worden en heeft de ondersteuning voor multi-core processors een centrale rol gekregen. Aan de kant van de videokaart zijn er onder andere minder command buffers nodig om tot hetzelfde resultaat te komen en kan er middels asynchronous compute gelijktijdig gewerkt worden aan zowel compute als grafische taken. Bovendien is er native ondersteuning voor multi-gpu, waardoor specifieke drivers voor SLI of CrossFire niet meer nodig zijn.

De keerzijde van Vulkan ten opzichte van OpenGL en DX is het complexere programmeerwerk dat bij de ontwikkelaar komt te liggen. Er is meer vrijheid om nauwkeurig te optimaliseren, maar de veiligheid van de abstractielaag die Open GL, DirectX 11 en lager vormden, is grotendeels verdwenen. Dat betekent dat een ontwikkelaar meer kennis moet hebben van de hardware waarvoor hij of zij programmeert. Juist bij dit aspect loopt in de wereld van pc's met talloze hardwareconfiguraties sterk uiteen.

De ontwikkeling van Vulkan is met de adoptie van Mantle als basis begonnen, maar het is niet enkel AMD dat hier vervolgens aan heeft gewerkt. Onder het consortium Khronos Group vallen onder andere Arm, Intel, Nvidia, Google, Qualcomm, Nintendo, Imagination en Sony, die ook allemaal hun steentje bijdragen aan de ontwikkeling van Vulkan. Door de deelname van al deze organisaties staat een 'vendorneutrale' industriestandaard veel meer garant dan bij één of twee bedrijven het geval is. De gehele deelnemerlijst is op z'n minst indrukwekkend te noemen, met allerlei partijen uit de techsector en hardware-industrie.

Hardwareondersteuning

Ondersteuning voor Vulkan er is aan Nvidia's kant vanaf de GTX 600-serie, op AMD betreft het de gcn-architectuur (meeste kaarten uit de HD7000-serie en alle nieuwere) en bij Intel kun je met een igpu van Skylake of nieuwer aan de slag. De hardwaremogelijkheden van de betreffende gpu worden middels de Vulkan-driver doorgegeven aan de applicatie. Waar DirectX al een hele tijd met feature levels werkt, waarin een lijst met minimale vereiste mogelijkheden is opgenomen, gaat het bij Vulkan alleen om losse features met bijbehorende limieten. Geen rangorde zoals feature level 11_0 of 12_1 dus, maar een grote hoeveelheid losse specificaties. Wie hier diep in wil duiken, doet er goed aan eens te kijken op deze onofficiële Vulkan hardware database.

0