Achtergrond

Hoe gaat het met DirectX 12?

Twee jaar na de lancering van DirectX 12 kan je moeilijk spreken van een revolutie in de gamingwereld. Hoe staat DX 12 er intussen voor vergeleken met zijn voorganger, DX 11?

De introductie van DirectX 12 bracht geen onmiddellijke verbeteringen met zich mee. Vlak na de lancering werd duidelijk dat DX 12 geen magisch stuk software die dat alles en iedereen voorziet van tien procent extra framerate. Hoewel sommige AMD-gpu’s DX 12 leken te omarmen, presteerde Nvidia-grafische kaarten soms zelfs beter op het oudere DX 11. De eerste vergelijkingen waren gebaseerd op nieuwe spellen en gpu’s die rond de lancering van DX 12 in de rekken lagen. Vandaag is DirectX 12 ongeveer twee jaar oud. We onderzoeken of de situatie intussen verbeterd is.

De DirectX API

DirectX is een Application Programming Interface (API) die voornamelijk dient om computerspellen te ondersteunen. DirectX is gegroeid uit een verzameling API’s die betrekking hadden op grafische sturing en multimedia. Microsoft zit zelf achter DirectX, en gebruikt de API ook voor zijn eigen console. Vandaar: Xbox.
Het doel van DirectX is om Windows-compatibele programma’s een efficiënte programmeerlaag te geven die vlak bij de hardware zit, waardoor software die hardware efficiënt kan aanspreken. Nieuwe versies van DirectX vereisen soms nieuwe hardware, maar huidige DX 11-gpu’s zijn in de regel allemaal compatibel met DX 12. Het grootste verschil tussen twee versies van DirectX zit bij de ontwikkelaars. Zij moeten de nieuwe API omarmen en de nieuwe mogelijkheden efficiënt benutten. Dat zorgt in theorie voor mooiere en efficiënter draaiende spellen op jouw pc.

HardOCP heeft het op zich genomen om tal van grafische kaarten nog eens aan de tand te voelen. De testers gebruiken een opstelling met Intel Core i7-6700K, geklokt op 4,7 GHz. Die chip garandeert dat de cpu geen flessenhals is. Een GTX 1080 Ti, GTX 1080 en RX 480 passeerden de revue, niet voor een onderlinge vergelijking maar voor een vergelijking tegen zichzelf: de kaarten werden zowel met DX 11 als met DX 12 getest aan de hand van Ashes of the Singularity, Battlefield 1, Deus Ex: Mankind Divided, Hitman, Rise of the Tomb Raider, Sniper Elite 4 en Tom Clancy’s The Division.

Afwisselend resultaat

Opnieuw blijft een éénduidig antwoord uit. Soms zorgt DX 12 voor betere resultaten, soms DX 11. Opnieuw lijkt de meerwaarde van DirectX 12 in direct verband te staan met de fabrikant van de gpu. AMD haalt nog steeds meer voordeel uit DX 12 dan Nvidia. Al bij al valt het verschil best mee, terwijl DX 12 in sommige gevallen voor zichtbaar betere prestaties zorgt.

AMD’s Radeon RX 480 haalt een zichtbaar voordeel uit de DX 12-API, maar bij Nvidia blijft DirectX 11 over het algemeen voor betere resultaten zorgen.

Uit de resultaten blijkt ontegensprekelijk dat de impact van DX 12 op gamingprestaties voorlopig niet significant is. Dat is frappant. DX 12 heeft als speerpunt de lage overhead: de API is veel minder belastend voor de cpu dan zijn voorganger, waardoor die meer ‘draw calls’ kan verwerken. Dat moet in theorie de framerate een boost geven. AMD introduceerde met Mantle een eigen API met dezelfde visie. De verwachtingen van zo’n efficiënte API waren hoog en zijn op zijn zachtst gezegd niet ingelost.

Flessenhals

Het probleem zit niet noodzakelijk bij DX 12, wel bij de componenten. De API doet wat hij moet, maar de impact op gamingprestaties van een uit de kluiten gewassen systeem zijn flink overschat. Met een beest als een overklokte Core i7-6700K ter beschikking is de cpu vrijwel nooit de limiterende factor. Wie van gaming houdt en het geld heeft op te investeren in een krachtige grafische kaart, kiest doorgaans een gespierde cpu om het geheel in balans te houden.

Het verschil in framerate tussen DX 11 en DX 12 wordt groter naarmate de last van draw calls op de cpu procentueel stijgt, en een zuinige API een grotere impact heeft.

Bij oudere en minder krachtige systemen komt de API meer tot zijn recht. TechSpot stopte een Fury X-gpu in een veelheid aan systemen, van de voorgenoemde Core i7-600K tot een oude AMD FX-4320. DirectX 12 zorgt voor een gevoelige verbetering in de gemiddelde framerate bij de slappere processors. Zo springt de gemiddelde FPS van Battlefield 1 gespeeld op een systeem met Intel Core i3-6100T van 86 naar 98. Verrassend genoeg heeft die schaling geen of soms zelfs een negatieve impact op de minimumframerate tijdens een test: dipjes op DX 12 hebben de neiging dieper te zijn. Iets gelijkaardigs zien we bij de AMD FX-6350. De gemiddelde framerate klimt van 76 fps naar 97 fps bij de switch van DX 11 naar DX 12, terwijl de minimumframerate van 70 fps naar amper 33 fps zakt.

De minimumframerate kent zelfs bij zwakkere cpu’s een flinke dip bij DX 12, vergeleken met DX 11.

Draw calls

De grafische kaart is de koning van het parallelle rekenwerk. Een gpu is helemaal geoptimaliseerd voor het renderen van 3D-beelden maar de aansturing gebeurt via de cpu. Die stuurt een ‘draw call’ naar de gpu voor ieder object dat op het scherm getekend moet worden. ‘Object’ kan je hier in de breedste betekenis van het woord zien: een cubus op een 3D-plein is meer dan één object. Per materiaal dat op de kubus van toepassing is, moet de cpu een draw call sturen. Denk bij materiaal aan licht, reflectie en schaduw. Wordt de cubus beïnvloed door meerdere lichtbronnen en zijn er schaduwen in het spel, dan staat dat ene object al snel in voor een handvol draw calls.
Bij iedere draw call zwoegt DirectX. DX 12 is geoptimaliseerd om dat intensieve rekenwerk te verlichten, zodat de last op de cpu naar omlaag gaat. Dat moet in theorie de prestaties tijdens het spelen van een spel verhogen. In de praktijk is een krachtige cpu zelfs bij het minder geoptimaliseerde DX 11 niet de flessenhals. Als de chip genoeg pk’s heeft om om te gaan met de physics en de draw calls, dan is het de gpu die de uiteindelijke framerate bepaalt.

Multithreading

De reden voor de beperkte prestatieboost is te vinden bij wat DX 12 precies doet. De lage overhead compenseert vooral voor slechte single threaded-prestaties. Dat verklaart meteen waarom AMD-gpu’s meer baat hebben bij DX 12 dan exemplaren van Nvidia. Nvidia’s hardware presteert traditioneel beter in tandem met iets minder zware cpu’s, met dank aan de drivers van team groen. Die zijn geoptimaliseerd voor multithreading, iets wat AMD zelf achterwege liet. Als DX 12 dan plots op de proppen komt met de betere ondersteuning voor hyperthreading, dan hoeft het niet te verwonderen dat de AMD-kaarten meer prestatiewinst boeken.

Beperkingen van de API

Of het nu dankzij DX 12 is, dan wel met DX 11 en de juiste drivers, op een bepaald moment is de cpu niet langer de flessenhals. Hoeveel draw calls de processor kan slikken, is niet meer van belang wanneer de grafische kaart gesatureerd is met rekenwerk.

Je kan je de vraag stellen of DX 12 dan wel een nuttige opvolger voor DX 11 is. Het antwoord is een volmondig ja. Hoewel enthousiastelingen en gamers er vaak niet voor terugschrikken om geld te investeren in krachtige cpu’s, zijn spellen de software bij uitstek die slecht geoptimaliseerd wordt voor meerdere rekenkernen en threads. Je vindt vandaag nauwelijks spellen geoptimaliseerd voor meer dan vier threads. De combinatie van DX 12 en de introductie van de betaalbare 6-core cpu (met dank aan AMD) kan daar verandering in brengen. Dat DirectX niet meteen na de lancering potten breekt, kan geen kwaad. De API moet nog jaren meegaan in is helemaal geschikt om de hardware van morgen optimaal te ondersteunen. De echte kracht van DirectX 12 zal pas aan het licht komen later in de levenscyclus van de API, wanneer ontwikkelaars de software omarmt hebben en de mogelijkheden door en door kennen. DirectX blijft immers in eerste instantie een ontwikkelaarstool die het schrijven van efficiëntere geoptimaliseerde code mogelijk maakt. Uiteindelijk zijn dat de kwaliteiten waarop we de API in de toekomst moeten beoordelen.

directx 12techzone

Gerelateerde artikelen

Volg ons

Gebruik je ecocheques bij Coolblue

Gebruik je ecocheques bij Coolblue

Producten bekijken