Asynchronous Compute är bara en av flera delar av spelutveckling där plattformarna spelkonsoler och PC har börjat smälta samman de senaste åren. Den senaste generationen med Playstation 4 och Xbox One representerar den första tidpunkten då spelkonsoler och PC-plattformen är utrustade med samma kapacitet, med avseende på både x86-processorer och funktioner som Asynchronous Compute.
En faktor som tidigare har skilt konsol- och PC-utveckling åt är att utveckling på konsolerna alltid har skett via hårdvarunära utvecklargränssnitt. Detta har skiljt sig åt från PC-plattformen, där DirectX- och OpenGL-gränssnitten representerat ett abstraktionslager mellan utvecklaren och hårdvaran, ett lager som förenklat utvecklingen men också minskat möjligheterna till den hårdvarunära optimering som varit möjlig på konsolerna.
Med DirectX 12 och Vulkan börjar denna optimering bli möjlig även på PC-sidan. Enligt Rok Erjavec representerar dessa gränssnitt en försmak av vad som fortfarande ligger något i framtiden.
DirectX 12 och Vulkan liknar lågnivåramverken på konsolerna på så sätt att de flyttar ansvaret från drivrutinerna till utvecklaren. De ligger inte på samma mognadsnivå, särskilt inte när det gäller drivrutinerna, och det återstår fortfarande en del mognad innan de når prestanda- och funktionsparitet med de äldre gränssnitten. Vi utvecklare måste överse hela utvecklingsprocessen i takt med att dessa gränssnitt mognar.
Att AMD-hårdvara sitter i både spelkonsoler och PC-system har inte bara inneburit att lågnivåprogrammering och Asynchronous Compute har börjat leta sig över till PC-sidan. En annan företeelse som typiskt används på konsolsidan är kodoptimering på den absolut lägsta nivån, ren maskinkod. På konsolsidan har detta använts till att pressa hårdvarans kapacitet till fullo.
Konsolliknande lågnivåkod
Detta har gjort det möjligt för den visuella kvaliteten hos konsolspel att utvecklas så mycket under konsolens livslängd, men på grund av den spretiga floran av konfigurationer på PC-sidan har detta inte varit aktuellt. Med en gemensam hårdvaruplattform i båda läger kan utvecklare lära sig att utnyttja AMD-hårdvara in i minsta detalj. Detta har AMD insett och introducerade därför funktionen Shader Intrinsic Functions, ett tillägg till DirectX 11/12 och Vulkan som låter utvecklare kapsla in maskinkod i vanliga shader-jobb.
Utvecklare som väljer att utnyttja Shader Intrinsic Functions kan få direkt åtkomst till instruktioner på GCN-baserade grafikkretsar utan att behöva gå via ett utvecklargränssnitt eller kompilerare. Enligt Robert Hallock är detta ett steg mot att göra kunskap, erfarenhet och verktyg applicerbara för både spelkonsol och PC.
Utvecklare har förmedlat önskemål om att ha tillgång till konsolsidans bättre verktyg och funktioner, därför har vi medvetet under flera år introducerat funktioner som tillför PC-sidan mycket av det som konsolutvecklare länge haft. Saker som asynchronous compute och shader intrinsic functions är några exempel på detta, men vårt jobb med Mantle och LiquidVR var också medvetna steg för att få in den här typen av funktionalitet i nästa generations utvecklargränssnitt. Utvecklare ska kunna återanvända kod och kunskap oavsett om de ska utveckla för konsol eller PC.
En utvecklare som dragit nytta av kombinationen Asynchronous Compute och Shader Intrinsic Functions är Id Software med senaste Doom. Tiago Sousa, chefsrenderare hos Id Software, har i flera inlägg på Twitter lyft fram de prestandavinster som företaget har uppnått med både Asynchronous Compute och Shader Intrinsic Functions. Bland annat nämner han att de vunnit 3-5 millisekunder i renderingen med Asynchronous Compute, något som vid en uppdateringstakt på 60 Hz innebär en enorm vinst i minskad latens, särskilt på konsolsidan.