Hopp til navigasjon Hopp til innhold
AMD, Nvidia, Intel og Qualcomm samarbeider alle med Microsoft for å gjøre spillene kjappere i Windows 10 takket være DirectX 12 som kommer for fullt neste år. Bildet er fra Square Enix sin imponerende DIrectX 12-demo fra tidligere i år. (Ill.: Square Enix)

Dypdykk: DirectX 12 – derfor blir spill-maskinen din mye fetere i år

Spill: Dette må du vite om den nye grafikk-plattformen.

DirectX 12 lover dramatiske forbedringer for dagens grafikkort, og er første gangen på lenge at man ikke trenger å kjøpe nytt for å være med på den nyeste grafikkmoroa.

Men hva er egentlig DirectX 12, og hvordan klarer den å løfte AMD-kort til å levere 70-100 prosent bedre ytelse?

Les også: Her er den utrolige DirectX 12-demoen.

Er det i år det skjer?
DirectX 12 lover å være sann «game changer» for hele grafikkmarkedet ved å gjøre dagens GPU-er betraktelig kjappere – for mange vil det føles som å få et helt nytt grafikkort.

Ifølge en test gjort at Ars Technica yter et to år gammelt AMD-kort omtrent like bra som Nvidias siste flaggskip under det første spillet som er laget med DirectX 12.

Hvordan kan dette ha seg? Hva er teknologien bak DirectX 12 som gjør gamle kort som nye? La oss ta en nærmere titt.

Microsoft har portet 3DMark til DirectX 12 og fått dobbelt så rask render-tid.
Microsoft har portet 3DMark til DirectX 12 og fått dobbelt så rask render-tid. Bilde: DX 11.
Microsoft har portet 3DMark til DirectX 12 og fått dobbelt så rask render-tid.
Microsoft har portet 3DMark til DirectX 12 og fått dobbelt så rask render-tid. Bilde: DX 12.

«Low level programming»
DirectX er et programmeringslag som ligger mellom spillet og resten av PCen. Dette fungerer godt fordi det finnes millioner av forskjellige konfigurasjoner av CPU/GPU-er på milliarder av PCer.

Da er det mye greiere å kommunisere med DirectX enn å programmere for prosessorer/grafikkort direkte, dessuten er jo CPU-er og GPU-er bygget for DirectX, noe som gir enda høyere ytelse. Dette er imidlertid i ferd med å endre seg på flere viktige punkter.

For første er dette den første utgivelsen av en DirectX-generasjon som ikke krever ny maskinvare, og i stedet gjør eldre maskinvare bedre. For det andre er et av poenget med DirectX 12 nettopp at det skal bli mulig med såkalt «low level programming», slik det gjøres på spillkonsoller.

Spillkonsoller nyter store fordeler av at maskinvaren er den samme, slik at ressursene kan programmeres direkte – med DirectX 12 kommer dette også til Windows. Det ventes at bare de aller mest ambisiøse spillprogrammererne vil prøve seg på dette på PC-en, men det skal være mulig å ta direkte kontroll over enkelt systemressurs, noe som gir langt bedre ytelse.

DirectX11 lot én kjerne gjøre mesteparten av arbeidet. Bilde: AMD
DirectX11 lot én kjerne gjøre mesteparten av arbeidet.

Bedre multitasking
Når du starter opp et spill blir CPU-en nesten umiddelbart overlastet med tegningsinstrukser («draw calls») fra DirectX – som sendes videre til grafikkortet for prosessering der.

Det er måten disse tegningsinstruksene håndteres på av både prosessor og grafikkort som er hovednyheten i DirectX 12, sammen med en hel rekke andre forbedringer.

Dette er hvordan lasten blir distribuert i DirectX 12.
Dette er hvordan lasten blir distribuert i DirectX 12.

DX11 var mer serielt og lot én kjerne i prosessoren lede an og gjøre mesteparten av arbeidet. Dette passer fint med Intels TurboBoost-teknologi (som kjører én kjerne på høy hastighet ved last, som for eksempel ved spilling) blir tegningsinstruksene i DirectX 12 gjort av den første ledige tråden.

Dette medfører at arbeidslasten blir spredt på flere tråder, og dermed at flerkjerneprosessorer (som de fra AMD) blir bedre utnyttet.

Async Shaders – delte grafikkinstrukser
DirectX 11 var også seriell med å sende tegningsinstrukser til grafikkortet, og sendte en lang rekke instruksjoner med forskjellig innhold. Dette er endret i DirectX 12.

Tegningsinstruksene ble sendt til grafikkortet i en lang rekke i DX11.
Tegningsinstruksene ble sendt til grafikkortet i en lang rekke i DX11.
I DX12 blir tegningsinstruksene delt opp, som gir en mer effektiv kø til grafikkortet.
I DX12 blir tegningsinstruksene delt opp, som gir en mer effektiv kø til grafikkortet.

Tegningsinstruksene selv deles nemlig ned i flere tråder som sendes til grafikkprosessoren, ettersom det er forskjellige registre som brukes til å tegne en modell, beregne lyssetting og så videre – og ved å dele instruksene som skal til forskjellige deler av grafikkprosessoren inn i disse forskjellige komponentene, spares det også tid og verdifulle ressurser.

Kommandokøen må likevel gjennom en sentral prosessor i grafikkortet som fordeler oppgaver til resten av brikken, men dette gjør køen langt mer effektiv og fjerner forsinkelse, som igjen fører til raskere operasjoner.

Her er AMDs beskrivelse av hvordan Async shaders fungerer:

Hyperthreading for GPUen
– Dette er omtrent som å ha «hyperthreading» på GPUen, sier en utvikler i Oxide games, som lager «Ashes of the Singularity», og henviser til at grafikkprosessoren er veldig effektiv på å fordele oppgaver, som gjør nesten, men ikke helt, det samme som ren multitasking på grafikkort fra AMD – noe som forklarer fremgangen AMD har fått i tester.

AMD har lenge hatt «Asynchronous Compute Engines» (ACEer) på GPUene sine, som fordeler oppgaver videre fra grafikkprosessoren til shaderne på GPUene – men som ikke har hatt direkte grafikkoppgaver utover dette fordi de ikke ble brukt under DirectX 11.

R9 285 og 290/290X har åtte slike, som også forklarer testresultatene under.

Nye teknologier i DirectX 12

Explicit multiadaptor - gjør at DirectX 12 bruker IGPen på prosessoren til å hjelpe med å tegne en scene, i samarbeide med grafikkortet på PCen. Dette er nok til å øke FPSen i Unreal Engine 4-tester fra 35 til 39, ifølge tester fra Microsoft. En hyggelig liten boost.
Explicit multiadaptor – gjør at DirectX 12 bruker IGPen (integrert GPU-brikke) på prosessoren til å hjelpe med å tegne en scene i samarbeide med grafikkortet på PCen. Dette er nok til å øke FPSen i Unreal Engine 4-tester fra 35 til 39, ifølge Microsoft. En hyggelig liten forbedring.

«Split frame rendering vs. alternate frame rendering» gjør det mer effektivt for multi-GPUer (Crossfire og SLI) å tegne scener, ettersom hver scene nå kan deles på to GPUer i steden for at GPUene må ta annenhver ramme, som har ført til en del ujevn ytelse på slike oppsett i det siste.

To grafikkort kan bruke alt minnet: dermed får to kort med 2GB hver tilgang til alle de fire GB-ene.

Utviklerne bak Ashes of the Singularity har sluppet et testverktøy, men spillet er langt fra ferdig.
Utviklerne bak Ashes of the Singularity har sluppet et testverktøy, men spillet er langt fra ferdig.

«Ashes of the Singularity»
Spillet «Ashes of the Singularity» ble testet med grafikkortet GeForce 980 Ti fra Nvidia (september 2014), og AMDs to år gamle R 290X .

I testene gikk AMDs kort opp i ytelse med omtrent 70 prosent i enkelte tilfeller, og slo faktisk det nyere toppkortet fra Nvidia i enkelte tester. NVIDIAs kort gikk derimot noe ned i ytelse.

Testen til Ars Technica viser at et eldre, og «dårligere», AMD-kort nesten er på par med Nvidias toppkort, som skulle være gode nyheter for AMD – og for konkurransen i grafikkortmarkedet.

Dette ble senere bekreftet av WCCFTech som kjørte den samme testen på en hel rekke grafikkort fra AMD og Nvidia, og som fant fremganger på opptil hundre prosent for AMD-kort, mens Nvidia-kort stort sett så en liten nedgang i FPS mellom DirectX 11 og 12.

Fable of legends bruker Unreal Engine 4 - i likhet med svært mange kommende spill til DirectX 12.
Fable of legends bruker Unreal Engine 4 – i likhet med svært mange kommende spill til DirectX 12.

Fable of Legends
Unreal Engine 4-spillet Fable of legends forteller derimot en annen historie. I følge ytelsestester gjort av blant andre ExtremeTech, er AMDs Fury X (som endret design fra 290X) og Nvidias 980 Ti omtrent like raske, med Fury X et lite hestehode foran i enkelte tilfeller.

Samme tester gjort av Anandtech viser derimot det motsatte – at 980 Ti ligger foran med noen prosent, som er omtrent det samme nivået de lå på i tester med DirectX 11.

Konklusjon
AMD/Nvidia-kampen er med andre ord tilbake, selv om resultatene fra testene varierer om hvem som er best. Selv om AMD har gjort stor, endog dramatisk fremgang med DirectX 12 i enkelte tester med enkelte kort, er det fortsatt Nvidia som troner på toppen av grafikkortmarkedet, selv om de ikke kan vise til like stor fremgang som AMD har fått.

Mye kan skrives om den dramatiske fremgangen til AMD i «Ashes of the Singularity», men dette er tross alt bare ett spill av mange som kommer fremover, og i andre tester avsløres det at AMD i beste fall nå er på samme nivå som Nvidia.

AMDs CPU-er vil antakelig også dra fordel av tegnekommandoene som spres på flere prosessorkjerner i DX12, men det gjenstår å se om det er nok til å konkurrere med Intels raskere prosessorer.

Det tok fire måneder å porte Microsofts Forza Motorsport til DirectX 12, men det er tvilsomt om andre kommer til å gjøre det samme – og det kan opptil to år å lage et AAA-spill, så det er antakelig ikke før i 2016 og 2017 at vi vil se DirectX 12-spillene komme for fullt.

Innen DX12-spillene kommer på markedet i stor skala kan vi regne med en ny generasjon grafikkort fra både AMD og Nvidia – endelig på 14 nanometer, og mest sannsynlig designet med nettopp DirectX 12 som mål.

Disse kortene støtter DX12
AMD støtter DirectX 12 med kort fra HD 7000-serien og oppover, Nvidia støtter det med Maxwell (GeForce 700, 800 og 900-serien), Kepler (GeForce 600 og 700-serien ) og Fermi (GeForce 400 og 500-serien).

Merk at dette er en sannhet med modifikasjoner – ettersom hver serie har forskjellig grad av DirectX-støtte.

AMD er de eneste som støtter «Async shaders», mens Nvidia hevder å være det eneste selskapet som støtter full guffe på det visuelle med Maxwell, for eksempel – men de fleste kortene som er nevnt her har «god nok» støtte. Det er ikke før neste generasjon at vi kan vente oss kort som har komplett DirectX 12-støtte.

Stikkord: dypdykk, grafikk, Spill