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 1.1, waar blijven de games?

In maart dit jaar heeft Vulkan zijn eerste grote update naar versie 1.1 gehad. Met de update zijn enkele extensies opgenomen als integraal onderdeel, is er ondersteuning om beschermde content te verwerken en kunnen met subgroup operations compute units op een gpu efficiënt met elkaar communiceren zonder de noodzaak dit via off-chip geheugen te laten lopen. Dit laatste is vooral voor compute en deep learning relevant, maar kan in potentie ook voor grafische taken nuttig zijn. Naast ondersteuning voor GLSL is nu ook support voor HLSL ingebouwd. Dit moet het porten van DX-games naar Vulkan makkelijker maken omdat shaders niet meer compleet hoeven te worden herschreven bij de overstap van api.

Ondersteunde engines, maar games?

Inmiddels is er vanuit de grotere game-engines ondersteuning ingebouwd voor Vulkan. Het betreft een hele lijst: Source 2, Unreal Engine 4, Quake Engine, id Tech versie 3 tot en met 6, Unity, CryEngine en Unigine, naast nog veel andere kleine engines. Grote games met ondersteuning voor Vulkan zijn tot nu toe enkel Doom (2016) en Wolfenstein 2: The New Colossus. Beide games draaien op dezelfde engine, id Tech 6. De prestaties in verhouding tot de grafische kwaliteit zijn in deze games uitstekend te noemen, maar omdat we hier naar een enkele engine kijken, is er binnen de Vulkan-api niet echt goed vergelijkingsmateriaal beschikbaar. Afgezien van de ondersteuning als extraatje in Dota 2, The Talos Principle en emulators zoals Dolphin en PPSSPP, komen we de veelbelovende api van de Khronos Group nog maar bij weinig spellen tegen. Waarom zien we niet meer games gebruik maken van de Vulkan-api?


Ontwikkelaars van de grotere emulators voegden al snel ondersteuning voor Vulkan toe.

Hoewel veel engines inmiddels wel ondersteuning bieden voor Vulkan, zijn veel ontwikkelaars waarschijnlijk nog niet goed thuis in het reilen en zeilen van de api. DirectX is lange tijd de enige interessante api geweest voor gameontwikkelaars en vandaag de dag is deze nog steeds dominant. Vermoedelijk hebben de meeste ontwikkelaars weldegelijk interesse in Vulkan, maar beschikken ze nog niet over de juiste hoeveelheid ervaring in het programmeren voor deze api om geheel over te stappen.

Volgens veel developers moet er in zowel Vulkan als DX12 veel meer code worden geschreven om op gang te komen dan bij de oudere api's het geval is. Het aantal assisterende tools voor Vulkan groeit, maar een moderne (pc-)game is ook met behulp daarvan niet in een paar maanden gemaakt. Als we Vulkan vergelijken met DX12 zien we ook op laatstgenoemde api niet een overvloed aan games uitkomen. Dat sluit aan bij het algehele beeld dat veel ontwikkelaars met de low-level api's nog niet de sprong in het diepe durven te wagen.

V-EZ

Een poging om de complexere werkwijze van Vulkan makkelijker te maken, is V-EZ (Vulkan Easy). Deze middleware-laag is ontwikkeld door AMD en maakt het voor ontwikkelaars makkelijker en toegankelijker om met Vulkan aan de slag te gaan. Het geheugenbeheer, een struikelblok voor veel ontwikkelaars in de low-level api's, is met V-EZ bovendien sterk versimpeld. Daarbij kan er wel gebruik gemaakt worden van de geavanceerde features van Vulkan, wanneer nodig. AMD zelf stelt dat V-EZ als transitielaag gebruikt kan worden om ervaring op te doen met Vulkan zonder een nieuwe api of framework te moeten leren. Zo wordt de low-level api weliswaar iets abstracter, maar kan dit naar wens worden aangepast.

Net als veel andere softwareprojecten is V-EZ gratis beschikbaar gemaakt op GPUOpen en GitHub.


Een schematisch overzicht van V-EZ ten opzichte van Vulkan.

0