Zatímco v operačním systému Windows je norma, že ovladače GPU poskytují výrobci ve formě klasického uzavřeného balíku softwaru, Linux na to není navržený a preferuje ovladače s open-source modelem. Teď se stalo něco, co asi nikdo moc nečekal – open source ovladač GPU pro grafiky Radeon z Linuxu je firmou Collabora portován na platformu Windows. Nicméně moc nejásejte, tento projekt je silně experimentální a jeho dosah bude asi jen malý.
Firma Valve už delší dobu sponzoruje a vyvíjí vlastní linuxový ovladač pro grafické karty Radeon poskytující akceleraci pojmenovaný RADV. Je použitý i v systému SteamOS na zařízení Steam Deck. Tento ovladač postupně nahradil předtím používaný ovladač AMDVLK, který vznikl přímo v AMD. A teď se právě ovladač RADV pod sponzorským krytím firmy Valve má dostat i na Windows. Firma sponzoruje vývojáře Collabory pracující na jeho přepsání pro Windows a integraci s modelem ovladačů WDDM2.
Zde je ale třeba upozornit, že RADV není ekvivalentem kompletních ovladačů grafik Radeon. Na Linuxu je GPU „stack“ rozdělen na několik částí – ovladač v jádru systému, který slouží k obsluze hardwaru a tvoří jakýsi backend, a části ovladače běžící v uživatelském systému, které nad ním implementují samotnou 3D akceleraci her a softwaru. RADV je součást druhého typu a specificky slouží k tomu, že poskytuje akceleraci API Vulkan. To na Linuxu nahrazuje OpenGL jako univerzální API, ale ve Windows ho používají jen některé vybrané hry, byla by tedy potřeba navíc ještě nějaké vrstvy přidávající podporu různých generací API DirectX.
Hlavně ale tento ovladač nemá onu jadernou část, se kterou spolupracuje, takže port RADV pro Windows od Collabory není kompletní funkční celek. Projekt proto pracuje na tom, aby se RADV naučil pracovat s oficiálním jaderným ovladačem Radeonů, který pro Windows distribuuje AMD. To znamená, že RADV pro Windows alespoň teď nenahrazuje celé ovladače AMD, ale je pro ně jenom doplňkem, který poskytuje alternativní implementaci Vulkanu.
Jak moc je něco takového třeba, toť otázka. Uvidíme, zda se třeba podaří z něj dostat lepší výkon než z dnešní podpory Vulkanu od AMD. Podle Collabory by výhoda byla v tom, že by Linux i Windows pokrýval jeden kód, takže by bylo víc sil k jeho vylepšování a ladění a mohlo by být snazší v něm opravovat problémy a podobně. To by ale platilo jen za předpokladu, že by přímo AMD chtělo tímto ovladačem nahradit svou vlastní implementaci Vulkanu používanou ve Windows. Ale že o to má zájem, to zatím nikde není řečeno, takže bychom s tím zatím nepočítali.
Prozatím ovladač RADV musí používat nedokumentovaná rozhraní, která mezi sebou používají komponenty oficiálního ovladače od AMD na základě reverzního inženýrství, což bude komplikované a může vést k neoptimálnímu fungování. Tato rozhraní se také mohou měnit mezi jednotlivými verzemi, protože nejsou míněná tomu, aby je využívali vývojáři externího softwaru. Toto řešení tak asi dlouho nebude dvakrát stabilní a spolehlivé.
Collabora už má nicméně i nějaké výsledky – firma se pochlubila tím, že se jí s ovladačem RADV už podařilo ve Windows 11 spustit hru Counter-Strike 2 na Radeonu RX 7900 XT. Nicméně firma dodává, že ovladač ještě neprojde konformačními testy, takže není s Vulkanem ještě plně kompatibilní, mimo další nedodělané věci. Blogpost, který historii a stav tohoto portu popisuje, dává celkem jasně najevo, že vyvíjet akceleraci tímto způsobem klade mnohé překážky a komplikace, takže z pohledu investované energie a času nejspíš nemůže jít o optimální cestu, jak akceleraci Vulkanu pro Windows vylepšovat.

Tento projekt proto nejspíš má budoucnost jen za té podmínky, že by se AMD rozhodlo stejně jako na Linuxu opustit vlastní implementaci Vulkanu a přejít na RADV zcela oficiálně, takže by pak jeho inženýři spolu s Collaborou přímo pracovali na integraci s existujícím jaderným ovladačem Radeonů, místo aby se pracovalo reverzním inženýrstvím a stylem pokus-omyl. Přímá spolupráce s AMD je asi také jediná cesta, jak by ovladač mohl mít zcela optimální výkon, protože některé pokročilejší operace (jako zero-copy práce s daty snímků) nejspíš nebudou možné, dokud je ovladač „hackem“ naroubovaným na oficiální software AMD bez jeho spolupráce.
Potenciální užitečnost pro Arm Windows
Jedna z výhod, které by toto mohlo teoreticky mít, je přenositelnost otevřeného ovladače na platformy, které AMD nepodporuje, ale kde systém Windows běží. Nyní by to byly jen procesory Arm, které by se výhledově mohly dostat do desktopových počítačů, nebo je můžete mít už dnes prostřednictvím serverových a embedded desek. Nedávno se na takovém hardwaru otevřela možnost používat grafické karty GeForce od Nvidie, ale není jasné, zda plánuje ovladač pro samostatná GPU Radeon vydat AMD. Pokud by to firma odmítla udělat, mohl by open source ovladač její oficiální podporu zastoupit.
Ale to jen tehdy, pokud by měl zároveň jadernou část, která by řešila samotné řízení GPU a jeho interakci s operačním systémem, nejen akceleraci Vulkanu, a tu zatím projekt otevřeného ovladače neumí a zatím ani neavizuje, že by měl plány se v kompletní ovladač GPU přeměnit. Byla by to mnohem větší práce, takže je téměř jisté, že takový pokus by neměl perspektivu.
Zatím je tedy tento projekt spíš kuriozitou. Předpokládáme, že reálný přínos nebude mít, pokud se se k němu nerozhodne oficiálně připojit AMD a nahradit ovladačem RADV svůj vlastní kód pro akceleraci Vulkanu.
Jan Olšan, redaktor Cnews.cz
⠀







No, k čemu je potřeba Vulkan na Windows, když většina her běží na DirectX? U linuxu je situace jiná, DirectX tam nejsou a proto je Vulkan jako nejbližší konkurent nutností.
U Windows to fakt smysl nedává.
Z testov grafických kariet si spomínam, že napríklad Red Dead Redemption 2 bežal na GeForce pod Vulkanom svižnejšie ako pod DirectX. Pod týmto API (Dx12) mali zase trochu navrch Radeony. A tých vecí bude asi viac, keď sa na ne hodí očkom. Z tohto pohľadu mi to zmysel dáva. 🙂
Tak Vulkan dnes už často nahrazuje OpenGL (na kterém typicky běží valná část softwaru pro produkci grafiky), takže smysl na MSW rozhodně dává.
No jasný, OpenGL už je řádně zastaralé a Vulkan dává smysl. Nicméně mně šlo o hry, DirectX je přeci jen dál než Vulkan, takže tam je Vulkan nadbytečný, pokud je hra v DirectX pro Windows. A Vulkan přeci svou implementaci pro Windows od AMD má.
— „… mně šlo o hry, DirectX je přeci jen dál než Vulkan, takže tam je Vulkan nadbytečný, pokud je hra v DirectX pro Windows…“
A čo napríklad ten RDR2 na GeForce? 🙂
Situace se ale může změnit, MS může přijít s nějakou kontroverzní verzí Dx apod. Pak můžeme být za Vulkan rádi.