- Spoločnosti Valve a Collabora pracujú na portovaní open-source ovládača RADV do systému Windows, aby ponúkli alternatívu k proprietárnym ovládačom.
- Projekt je založený na reverznom inžinierstve rozhrania WDDM2 pre komunikáciu s ovládačom režimu jadra od spoločnosti AMD.
- Dosiahli sa dôležité míľniky, ako napríklad spustenie hry Counter-Strike 2, hoci nedostatok oficiálnej dokumentácie od spoločnosti AMD je prekážkou.
- Cieľom tejto iniciatívy je zlepšiť stabilitu, ladenie a výkon grafických procesorov AMD v systéme Windows.
Pravdepodobne ste už počuli, že Linux je rajom pre milovníkov slobodného softvéru a v oblasti grafických kariet AMD kraľuje ovládač RADV. Tento ovládač Vulkan, integrovaný do Mesa, sa stal štandardom pre hráčov na Steam Decku alebo akejkoľvek distribúcii Linuxu a prekonal dokonca aj oficiálne možnosti spoločnosti. Čo keby sme však mohli mať rovnaký výkon a transparentnosť aj vo Windowse? Nuž, existuje skupina vysoko motivovaných ľudí, ktorí sa o to snažia.
Cieľom nie je zahodiť ovládače, ktoré už máme, ale ponúknuť alternatívu. Spoločnosť Valve, ktorá naďalej propaguje open source, poskytla finančné prostriedky expertom z Collabora, aby sa pokúsili portovať RADV do systému Microsoftu. Hoci sa to môže zdať ako nemožná misia, už sa im podarilo spustiť hry ako Counter-Strike 2 , čím dokázali, že táto cesta je síce náročná, ale s potrebnou trpezlivosťou je úplne uskutočniteľná.
Z čoho tento port technicky pozostáva?

Pre pochopenie problému je dôležité vedieť, že ovládač je rozdelený na dve časti: používateľský režim (UMD), kde sa nachádza RADV, a režim jadra (KMD), ktorý komunikuje priamo s hardvérom. V systéme Windows spoločnosť Microsoft používa rozhranie s názvom WDDM2. Kľúčový rozdiel spočíva v tom, že od verzie Windows 10 toto rozhranie umožňuje ovládačom tretích strán flexibilnejšie interagovať s jadrom ako predtým.
Problém je v tom, že AMD uchováva svoje tajomstvá pod zámkom. Aby RADV fungoval, musí posielať dáta do jadra AMD, ale tieto dáta pozostávajú z nepriehľadných „blobov“ a nie sú zdokumentované. Na vyriešenie tohto problému Faith Ekstrand vytvorila nástroj s názvom wddm2-pdd-re, ktorý umožňuje zaznamenávanie a analýzu systémových volaní . Vďaka tomuto reverznému inžinierstvu dokázali rozlúštiť, ako vyžadovať pamäť, vytvárať pracovné fronty a nakoniec kresliť veci na obrazovku.
Prekážky na ceste: hardvér a kompilátory

Nie všetko prebehlo hladko. Vývojári si uvedomili, že nie všetky grafické karty sú rovnaké; napríklad upgrade z RX 7800 XT na RX 7900 XT spôsoboval neustále pády systému. To ich prinútilo vylepšiť svoje ladiace nástroje a vytvoriť oveľa výkonnejšiu vrstvu protokolovania WDDM2, ktorá presne určuje, kde sa tok príkazov prerušuje.
Navyše, práca s kompilátormi je poriadna bolesť hlavy. Mesa je navrhnutá pre GCC a Clang, ale vo Windowse je dominantným kompilátorom MSVC. Ukazuje sa, že MSVC spracováva enumerátory odlišne , niekedy ich považuje za hodnoty so znamienkom, čo vedie k nevyzpytateľnému správaniu, ktoré môže priviesť do šialenstva každého programátora.
Úzke hrdlo: nepriehľadnosť AMD
Ak chceme, aby si to mohol nainštalovať a používať každý používateľ bez toho, aby sa mu počítač zrútil, potrebujeme stabilitu. V súčasnosti je RADV vo Windowse krehký, pretože sa spolieha na súkromné dátové štruktúry, ktoré môže AMD zmeniť v akejkoľvek oficiálnej aktualizácii ovládača bez toho, aby o tom kohokoľvek upozornila. Je to ako snažiť sa poskladať dielik skladačky, ktorý každý týždeň mení tvar.
Aby sa toto úzke miesto prekonalo, spoločnosť Collabora naliehavo požiadala spoločnosti AMD alebo Microsoft o poskytnutie zdokumentovaného rozhrania alebo knižnice „shim“, ktorá by slúžila ako most. Bez nej bude údržba nočnou morou. Ďalším kritickým problémom je prezentácia obrazu; v súčasnosti používajú pomalú trasu založenú na CPU a potrebujú implementovať DXGI swapchains, aby dosiahli skutočne konkurencieschopný výkon a vyhli sa úzkym miestam.
Prečo by nás mal tento projekt zaujímať?
Používanie RADV vo Windowse nie je len rozmarom programátora. Proprietárne ovládače spoločnosti AMD vo Windowse sú niekedy známe svojou nestabilitou alebo spôsobovaním grafických chýb vo Windowse 11 či problémov v určitých hrách. RADV, ktorý je open source, umožňuje komunite oveľa rýchlejšie hlásiť chyby a inštalovať záplaty . Okrem toho by to uľahčilo život vývojárom hier, ktorí by mohli testovať svoj kód na jednej implementácii Vulkanu pre oba operačné systémy.
Toto by mohlo vdýchnuť druhý život starším grafickým kartám, ktoré už AMD ukončilo. Ako komunitný projekt kompatibilita so starším hardvérom často trvá oveľa dlhšie ako oficiálna podpora. Ak bude Valve v tomto pokračovať, mohli by sme dosiahnuť bod, kedy sa inštalácia RADV na Windows stane preferovanou možnosťou na získanie stability alebo dokonca o niekoľko FPS navyše.
Úsilie spoločností Valve a Collabora premenilo šialený nápad na funkčný prototyp, ktorý už vykresľuje polygóny v reálnych hrách. Napriek technickým prekážkam s kompilátormi a nedostatku oficiálnych manuálov od spoločnosti AMD bol položený základ. Budúcnosť tejto iniciatívy teraz závisí od toho, či existuje ochota otvoriť jadro, aby open source mohol žiariť aj na desktopoch miliónov používateľov Windowsu.