- Collabora разработва Windows порт на драйвера с отворен код RADV, спонсориран от Valve, за да осигури стабилна Vulkan алтернатива на собствените AMD драйвери.
- Проектът разчита на обратно инженерство на WDDM2 интерфейса и собствения драйвер на AMD в режим на ядро поради липса на официална документация.
- Ранните постижения включват успешното стартиране на Counter-Strike 2 и внедряването на разширени функции като шейдъри за задачи и интеграция с ACO компилатор.
- Усилията целят да обединят графичния стек в различните платформи, потенциално предлагайки по-добра производителност и по-лесно отстраняване на грешки за разработчици и геймъри.
В продължение на години гейминг сцената с Linux разчиташе предимно на RADV , драйвера с отворен код Mesa Vulkan, който на практика се превърна в златен стандарт за хардуер на AMD в Linux системи и поколения ядра . Докато потребителите на AMD в Windows бяха заседнали с патентовани драйвери, смел проект, спонсориран от Valve и изпълняван от хората в Collabora, се опитва да пренесе тази магия с отворен код в екосистемата на Windows. Това е амбициозен ход, който има за цел да унифицира кодовата база между платформите и да даде на потребителите по-голям контрол върху техния хардуер.
Пренасянето на драйвер не е просто преместване на код; става въпрос за обратно инженерство на начина, по който хардуерът комуникира с операционната система. От Windows 10 насам интерфейсът WDDM2 осигурява добра основа, но действителната комуникация между драйвера в потребителски режим (UMD) и драйвера в режим на ядрото (KMD) често е пълна с непрозрачни, специфични за производителя блобове . Това прави процеса малко като опит за решаване на пъзел, където половината от парчетата са невидими, изисквайки инструменти като wddm2-pdd-re за регистриране на повиквания и разбиране как да се изпрати работа към графичния процесор.
Техническото препятствие на портирането на Windows

Екипът започна, като надгради върху основите, положени от Фейт Екстранд , която доказа, че изпълнението на RADV на Windows е действително възможно. Основният проблем е, че UMD и KMD са тясно свързани , което означава, че са проектирани да работят само като съвпадаща двойка. За да преодолеят това, Collabora разработи пълен WDDM2 слой за регистриране , за да анализира как официалният драйвер на AMD взаимодейства с ядрото, което им позволява да извличат командни потоци и шейдърен код, за да възпроизведат поведението в RADV.
Въпреки напредъка, по време на разработката се появиха няколко „проблема“. Например, преминаването от графични процесори от 10-то поколение към хардуер от 11-то поколение (като RX 7900 XT) причини неочаквани замръзвания поради архитектурни промени. Освен това, компилаторите на MSVC не винаги работеха добре с кодовата база на Mesa, особено по отношение на начина, по който се обработват изброяванията (enums) в сравнение с GCC или Clang. Най-разочароващата част остават извикванията на D3DKMTEscape , които по същество са черни кутии за специфични за производителя куки, с които екипът трябваше да се ориентира внимателно.
Текущ напредък и етапи в играта

Не е всичко теоретично – те всъщност успяха да накарат Counter-Strike 2 да работи, използвайки RADV на Windows, използвайки аргумента -vulkan . Проектът е еволюирал от просто показване на въртящ се 3D модел до поддръжка на разширени функции като шейдъри за задачи, теселация и разредени обвързвания . Въпреки че все още не е напълно съвместим със спецификацията Vulkan, процентът на успех се увеличава бързо.
Въпреки това, за да бъде това готово за производство, е необходим стабилен, документиран интерфейс към собствения драйвер на ядрото. В момента проектът разчита на крехки структури, получени чрез обратно инженерство, които биха могли да се счупят при всяка официална актуализация на драйвера. Библиотека с shim-ове би могла потенциално да действа като медиатор, осигурявайки стабилна повърхност, върху която RADV да надгражда, дори когато основните AMD blobs-ове се променят.
Архитектурата на RADV: От Linux към Windows

За да разберем защо този порт е важен, трябва да разберем как работи RADV. Той действа като драйвер в потребителското пространство , който преобразува повикванията на Vulkan API в двоичен формат, разбираем за графичния процесор, известен като PM4 пакети . Докато драйверът в режим на ядрото (KMD) се занимава с управлението на захранването и видеопаметта, RADV е отговорен за тежката работа: компилиране на шейдъри и програмиране на регистри на графичния процесор.
Ключова част от този процес е ACO компилаторният бекенд , който преобразува SPIR-V шейдърите в GPU-специфичен ISA. Този ефикасен конвейер е причината RADV често да превъзхожда собствените опции в Linux. Чрез внедряването му в Windows, разработчиците биха могли да се възползват от по-лесно отстраняване на грешки и споделена кодова база, потенциално елиминирайки нестабилността, често свързана с официалната имплементация на Vulkan на AMD за Windows.
Казус: RADV на BC-250

Значението на RADV е кристално ясно, когато се разглежда хардуер като BC-250 (Cyan Skillfish) . Този специфичен графичен процесор, базиран на архитектурата GFX1013 (RDNA 1.5) , на практика няма официална поддръжка от Windows. За тези потребители RADV не е просто алтернатива – това е единственият начин да получат графично ускорение на Linux, стига да използват Mesa 25.1.0 или по-нова версия.
В BC-250, RADV обработва всичко - от Vulkan игри до OpenGL приложения, чрез слоя за превод Zink . Дори с хардуерни особености, като например неработеща опашка само за изчисления, която Mesa трябва да деактивира автоматично, RADV остава по-добрият избор. Той дори позволява LLM извод чрез Vulkan backend-ове, което позволява на потребителите да изпълняват големи езикови модели с изненадваща ефективност, въпреки някои ограничения на видимостта на VRAM , където Vulkan може да вижда само 10GB от наличните 12GB.
Пътят напред и целите за ефективност
Една от последните граници за портирането за Windows е производителността на презентациите . В момента RADV на Windows често разчита на по-бавен процесор. За да се конкурира наистина, екипът трябва да интегрира DXGI swapchains и да постигне zero-copy swaps . Това би изисквало огромен скок в производителността, потенциално до 3 пъти по-бърза за приложения, които не са обвързани с графичен процесор, но вероятно би изисквало директно сътрудничество от Microsoft и AMD.
Това експериментално пътешествие доказва, че драйверите с отворен код могат да оспорят статуквото на всяка платформа. Чрез използване на финансирането от Valve и експертния опит на Collabora, общността се движи към свят, в който операционната система не диктува качеството на графичния драйвер. Независимо дали става въпрос за съживяване на спрени от производство карти или за стабилизиране на съвременни, отделянето на UMD от KMD е ключът към по-гъвкаво бъдеще на игрите.
Усилията за внедряване на RADV в Windows представляват мост между отворения характер на Linux и широкото разпространение на Windows, обещавайки по-голяма стабилност и по-бързо отстраняване на проблеми за потребителите на AMD. Въпреки че в момента съществува като доказателство за концепция на високо ниво с конкретни успехи като Counter-Strike 2, планът за платформено-независим драйвер за Vulkan вече е готов и чака стабилен интерфейс на ядрото, за да го превърне в ежедневна реалност за геймърите.