Az AMD egy új technológiát mutatott be, ami ezúttal nem a CPU limitet, hanem a GPU limitet veszi célba – ugyanis a grafikus processzorok szoftveres kihasználtsága is jelentősen javítható, legalábbis a DirectX 11 szintjéhez képest.
Az Aszinkron Shader névre keresztelt szolgáltatás a következő generációs API-k részét képezi, így mind a DirectX 12, mind a Mantle API, mind pedig a Khronos Group Vulkan API-ja támogatja. Az újítás gyakorlatilag a hatékony feladat-párhuzamosítás előnyeiből profitál, azaz segít, hogy a hardverben rejlő potenciált még jobban kihasználhassa a szoftver.
Az Aszinkron Shader funkció a GPU azon képességére támaszkodik, amelynek köszönhetően a shader műveleteket egymástól függetlenül, "szinkronon kívül" is futtathatjuk. A technológia gyakorlatilag három munkafolyam-várólistára támaszkodik, amelyekkel hatékonyan kezelhető több munkafolyam, így a GPU erőforrásai eredményesebben kiaknázhatóak.
Napjainkban ugyan több grafikai feladat is hatékonyan párhuzamosítható, ezeket mégis egyetlen várólista alapján, folyamatosan hajtja végre a rendszer, ami nem tesz jót a hatásfoknak. Az Aszinkron Shader eljárás bevezetésével egy helyett rögtön háromféle várólista lép életbe – Grafikai, Számítási és Másolási –, az ezekből érkező feladatok időzítése pedig egymástól függetlenül történhet. A grafikai várólista elsődlegesen a rendereléssel kapcsolatos feladatokat tartalmazza, míg a számítási listán a fizikával, a megvilágítással és az utóeffektekkel kapcsolatos feladatok sorakoznak. A másolási várólistán főként adatmozgatással kapcsolatos feladatokat találunk.
A fenti dián látható példán tetten érhető a DirectX 11 sajátos működése: egyetlen várólistán foglalnak helyet a különböző feladatok, amelyeket szinkronban hajt végre a rendszer, egy-egy ilyen munkafolyam elvégzéséhez pedig x időre van szükség. Ezek a feladatok különböző GPU erőforrásokra támaszkodnak, egy-egy parancs végrehajtásához pedig rendszerint nincs szükség arra, hogy az előző parancs lefusson, mivel annak eredményei nem feltétlenül befolyásolják a következő parancs futását. Vagyis nincs semmi olyan technikai indok – az API limitációin kívül – ami miatt nem lehet ezeket a feladatokat egyszerre, egymással párhuzamosan futtatni.
Az Aszinkron Shader eljárással a feladatokat a három említett várólista segítségével szétbonthatja a rendszer, majd egymással párhuzamosan futtathatja őket. Emiatt ugyanazt a feladatmennyiséget a korábbinál gyorsabban lehet elvégezni, így csökkenhet a késleltetés, nőhet a teljesítmény – ideális esetben mindkettőre van lehetőség. A GPU erőforrásainak még hatékonyabb kihasználásával rengeteg előnyhöz juthat a rendszer.
A fenti példán az látszik, hogyan kellene használnia egy modern játékmotornak az említett három várólistát a még hatékonyabb erőforrás-kihasználás és a még jobb teljesítmény érdekében. Olyan játékok már most is vannak, amelyek képesek profitálni az újításból, igaz, sajnos nem sok, ahogy az a lenti dián is látszik.
AMD fronton az Aszinkron Shader eljárásban rejlő lehetőségek egy meglévő rendszerkomponens, az ACE (Asynchronous Compute Engine) segítségével aknázhatóak ki. Ilyen ACE motorból a jelenlegi Hawaii alapú R9 290X videokártyákon nyolc darab foglal helyet, egy-egy ACE motor pedig 8 sor kezelésére képes – ezek természetesen a parancsfeldolgozóval párhuzamosan működnek.
Az ACE motorok hozzáférnek a GPU másodszintű gyorsítótárához,illetve a globálisan megosztott adat gyorsítótárhoz is, plusz gyors kontextus-váltásra is képesek.
Az AMD a LiquidVR SDK segítségével be is mutatta, milyen előnyökre lehet számítani az Aszinkron Shader technológia kapcsán. A szintetikus demó – ami rendszerint előnyösebb képet fest a ténylegesnél – alapjáraton 245 FPS-es sebességgel futott, ám az utófeldolgozás keretén belül alkalmazott effektek bekapcsolásával 158 FPS-re csökkent a sebesség. Az Aszinkron Shader eljárás bevetésével, az effektek bekapcsolva hagyásával 230 FPS-re javult a teljesítmény, azaz 46%-os javulás következett be, ami igen jól hangzik.
Az Aszinkron Shader funkció jóvoltából jelentősen csökkenthető a szoftveres GPU limit, ugyanis a sorosan futó munkafolyamatok többsége részfeladatokra bontható, így remekül párhuzamosíthatóak. Emiatt a GPU hatékonyabban kihasználható, ugyanis azok a részegységek, amelyek sokat ketyegnek üresjáratban, az Aszinkron Shader szolgáltatással sűrűbben munkára foghatóak, ami a teljesítményre is pozitív hatást gyakorol.