Vulkan 1.0 je hotov a připraven k akci. AMD a Nvidia již vydaly ovladače

0

V roce 2014 vyšlo jako první moderní nízkoúrovňové API Mantle od AMD a loni ho následovalo DirectX 12 ve Windows 10. Na podobnou technologii nyní přechází i multiplatformní grafické API OpenGL se svou novou a od základu přepracovanou nízkoúrovňovou verzí Vulkan. Konsorcium Khronos, které je autorem, včera oficiálně vydalo verzi 1.0. Vyšla nejen vlastní specifikace, ale také reálné implementace v ovladačích obou hlavních dodavatelů desktopových GPU.

Výhody nízkoúrovňových API asi není třeba příliš opakovat – dávají vývojáři přímější přístup a kontrolu nad hardwarem, což na něj klade vyšší nároky, ale zároveň otevírá cestu k vyššímu výkonu. Tím, že se omezuje tradičně velká role ovladačů, je zredukováno množství cyklů CPU, potřebných při hraní a je také možné zlepšit latenci vykreslování. Na nízkoúrovňových API je možné grafice zadávat mnohem větší množství úloh, aniž by kód zahltil ovladač.

Vulkan 1.0 je hotov
Vulkan 1.0 je hotov

Navíc díky tomu, že se opouští kompatibilita s předchozími API, je možné odstranit různé staré výkonnostní brzdy. Z těch je asi nejpodstatnější velmi omezená možnost v tradičním OpenGL používat vícejádrové procesory. Vulkan už je ale založen na moderních principech a tak umožňuje, aby bylo GPU konečně úkolováno vícevláknovým kódem, používá totiž plně vícevláknové fronty příkazů. Kromě toho přináší i další novinky, například asynchronní shadery pro GPU Radeon.

Vulkan výrazně redukuje objem práce grafického ovladače
Vulkan výrazně redukuje objem práce grafického ovladače

 

Multiplatformní s výjimkou Applu

Vulkan není první ani jediné nízkoúrovňové API tohoto typu, ale jeho výhoda je, že je otevřenější a multiplatformní. Toto API tedy budou moci kromě Windows (10) použít také platformy Linux, Android a výhledově i další. Zklamání v tomto ohledu jsou bohužel operační systémy Applu, kde jsme původně také s Vulkanem počítali. Avšak ani na Mac OS X, ani na iOS zřejmě tato nová generace OpenGL běžet nebude. Apple se z vývoje Vulkanu po počátečním zapojení údajně stáhl a zřejmě s ním teď nic neplánuje (ostatně také podpora OpenGL ES zamrzla v iOSu na verzi 3.0). Důvodem je možná, že Apple chce prosazovat vlastní nízkoúrovňové API Metal a nechce pro něj mít na platformě konkurenci – která by ji navíc učinila kompatibilní se soupeřícím Androidem.

Významný detail včerejšího uvedení Vulkanu je, že jde o faktické vypuštění, žádný „paper launch“. Platforma je připravena k vývoji a vlastně i použití – dostupná jsou SDK, jakož i funkční a již validované implementace v ovladačích. To je podstatné i proto, že Vulkan má zpoždění za loni uvedeným DirectX 12, které bylo také ve vývoji mnohem delší dobu (za nezvykle rychlé vydání vděčí Khronos zdá se ve velké míře tomu, že měl jako výchozí bod Mantle).

Vulkan je multiplatformní, nakonec ale bude chybět podpora Apple
Vulkan je multiplatformní, nakonec ale bude chybět podpora Apple

 

Hardware feature sets

Vulkan bude mít pro jednotlivé platformy (operační systémy) definované skupiny podporovaných hardwarových funkcí, které bude možno využívat, což je změna proti tradičnímu OpenGL, které takové „feature sets“ nedefinovalo a indikovalo jen jednotlivé hardwarové funkce. Tyto definice budou fungovat tak, že dodavatel OS bude mít možnost si je definovat po svém (což hodlá udělat Google s Androidem), pokud však nebude mít o tuto možnost zájem, stanoví je přímo konsorcium Khronos – tuto alternativu si vybral Microsoft u Windows a zřejmě také bude použita u desktopového Linuxu. Feature sets budou definovány v budoucnosti na základě zpětné vazby od vývojářů, zatím se předběžně operuje s ekvivalentem funkcí, které zahrnuje OpenGL 4.5 pro desktop/PC a s funkcemi OpenGL ES 3.2 pro mobilní platformy.

Vulkan feature sets
Vulkan feature sets

 

Na čem dnes Vulkan funguje. Windows XP?

První ovladače přinášející podporu Vulkanu na PC jsou již od včerejška také k dispozici. Pro Android by měly být k dispozici ovladače od Nvidie a Qualcommu (přesněji řečeno pro Android 6.0), pro klasický Linux pak od Nvidie, Intelu, Imagination a později od ARMu. Na platformě Windows, která je pro herní grafiku asi nejrelevantnější, mají nyní ovladače k dispozici NvidiaAMD. V obou případech jde o speciální beta vydání.

U AMD se podpora týká GPU a APU, která mají architekturu GCN 1.0 a vyšší – tedy APU Kabini, Kaveri a pozdější a všechna 28nm GPU Radeon. Nvidia podporuje Vulkan na architekturách Kepler a Maxwell, tedy opět všech 28nm čipech. Ostrouhají tedy karty založené na Fermi, ačkoliv na nich Nvidia plánuje zprovoznit DirectX 12. Integrovaná GPU Intelu mají Vulkan podporovat minimálně od generace Skylake; u Broadwellu a Haswellu zatím podpora potvrzena není, vyloučena ale také ne.

Aktualizováno (17. 2. 2016):
Intel vydal otevřené ovladače podporující Vulkan pro Linux. Dostupné jsou pro integrovaná GPU procesorů Skylake a Broadwell, pro Haswell zřejmě nikoliv. Zda stejné hardwarové požadavky budou platit i pro ovladače na platformě Windows, ale není jisté.

 

Poměrně zajímavá je situace s podporou v operačním systému. Na rozdíl od DirectX 12 není Vulkan závislý na ovladačích založených na WDDM 2.0 a tím Windows 10. Dostupný má tedy být od Windows 7 výše, a teoreticky prý i na Windows XP. V praxi ovšem budete potřebovat také ovladač GPU s touto podporou, který pro již nepodporovaný OS nemusí být k dispozici. Například AMD proto uvádí podporu jen ve Windows 7, 8/8.1 a 10, totéž Nvidia.

Nvidia má jinak beta ovladače již i pro Linux, AMD je má teprve vydat. Vulkan bude podporovat ovladač amdgpu, který je dostupný pro GPU Tonga, Fiji a APU Carrizo (neoficiálně jej lze spustit i na GPU s GCN 1.1 jako Hawaii a Bonaire nebo APU Kabini/Kaveri).

Talos Principle od studia Croteam
Talos Principle od studia Croteam

 

První hra už existuje

Na světě by také již měla být první hra, v níž lze Vulkan otestovat – The Talos Principle od studia Croteam. Pro tu byla podpora vykreslování skrze nové API vydána také včera, ovšem podle vývojářů má hlavně demonstrační roli (ukázat, že Vulkan již funguje). Nejde o nějaký „velký titul“, který by ukazoval plné možnosti této technologie.

Pokud vás spíše než uživatelská stránka zajímá programování pro API Vulkan, pak je pro vás určené SDK LunarG (vytvořené mimo jiné s podporou Valve a volně dostupné). To bude poskytovat sadu nástrojů pro vývoj her, včetně těch potřebných pro validaci a ladění. LunarG bude zprvu fungovat pro platformy Windows a Linux, brzy má ale přibýt také Android.

SDK LunarG
SDK LunarG

Zdroje: Khronos Group, AMD (1, 2), Nvidia, AnandTech