Programiści z firmy Collabora prowadzą eksperymentalne prace nad przeniesieniem sterownika Mesa Vulkan stworzonego z myślą o kartach graficznych AMD na system Windows. To właśnie ta implementacja sterownika typu open source jest wykorzystywana przez graczy korzystających z systemu Linux i w znacznym stopniu przyczyniła się do sukcesu konsoli Steam Deck, działającej przecież na podzespołach firmy AMD, a obecnie także Steam Machine. Znane wszystkim Valve Corporation od dłuższego czasu finansuje pracę wielu inżynierów zajmujących się nie tylko wspomnianym sterownikiem, ale także innymi elementami stosu graficznego systemu Linux. Obecnie właściciele platformy Steam wspierają również programistów z firmy Collabora, którzy swoimi postępami podzieli się ostatnio w opublikowanym na ich blogu wpisie.
Czym tak właściwie jest sterownik Mesa Vulkan i dlaczego powinno nam na nim zależeć?
RADV to sterownik Mesa Vulkan typu open source przeznaczony dla procesorów graficznych AMD. Z biegiem lat stał się on fundamentem stosu graficznego systemu Linux. Obecnie jest on de facto standardowym sterownikiem Vulkan dla sprzętu AMD w systemie Linux. Firma AMD zaprzestała nawet rozwoju swojej alternatywnej biblioteki opartej na PAL (Platform Abstraction Library) na rzecz RADV, skupiając swoje działania w zakresie oprogramowania open source wokół projektu Mesa.
Louis-Francis Ratté-Boulianne, Collabora
Pomimo dużego wsparcia i ciągłej rozbudowy projektu w zakresie wsparcia środowiska Linux, RADV nie dotarł jeszcze do użytkowników systemu Windows. Ci wciąż mają do dyspozycji tylko zamknięte w swojej naturze, autorskie sterowniki wprost od firmy AMD. Misją zespołu z Collabory jest zmienienie tego stanu rzeczy i stworzenie portu całego projektu przeznaczonego dla zupełnie nowego systemu operacyjnego. Co najważniejsze – nie jest to tak zwana sztuka dla samej sztuki. Stoi za tym wiele przesłanek wymienionych wprost przez autorów wpisu.
Sterownik Vulkan typu open source w systemie Windows otwiera szereg możliwości: wspólną bazę kodu dla różnych platform, łatwiejsze debugowanie i eksperymentowanie, szybsze wprowadzanie poprawek oraz możliwość zgłaszania problemów przez społeczność (np. twórców gier) lub wnoszenia ulepszeń, z których skorzystają wszyscy, niezależnie od systemu operacyjnego.
Louis-Francis Ratté-Boulianne, Collabora
Pierwsze kroki (skoki?) mają już za sobą
Praca programistów opiera się na wcześniejszych ustaleniach Faith Ekstrand, która jako pierwsza zbadała możliwość uruchomienia RADV w systemie Windows i przedstawiła swoje wnioski podczas konferencji XDC 2024. Faith stworzyła narzędzie wddm2-pdd-re, które rejestruje wywołania WDDM2 – interfejsu definiującego jasny model interakcji sterownika użytkownika z systemem operacyjnym oraz sterownikiem jądra – oraz zawartość danych prywatnych dla niektórych aplikacji korzystających z D3D12. Dzięki temu podejściu udało jej się przeprowadzić inżynierię odwrotną wystarczającej części prywatnego interfejsu tj. pobieranie informacji o karcie graficznej, alokowanie buforów, tworzenie kolejek i wysyłanie poleceń, aby skłonić RADV do przekazywania zadań do zastrzeżonego sterownika jądra.
Załoga Collabory, widząc jego potencjał, podjęła się dalszych prac nad projektem. Udoskonaleń doczekała się obsługa strumienia poleceń i synchronizacja, a dodana została obsługa m. in. rzadkich powiązań, teselacji i shaderów zadań, a także dynamicznego odpytywania właściwości GPU. Wielkim zwieńczeniem dotychczasowych wysiłków stała się zdolność do uruchomienia pierwszej gry z wykorzystaniem RADV dla systemu Windows – mowa tu oczywiście o Counter-Strike 2.


źródło: wpis autorów na blogu Collabora, https://www.collabora.com/news-and-blog/news-and-events/cracking-windows-open-porting-radv-to-win32.html
Przed nimi jeszcze długa droga
Prace nadal trwają, ale największą przeszkodą na drodze do wdrożenia tego rozwiązania w środowisku produkcyjnym pozostaje interfejs do zastrzeżonego sterownika jądra. Programiści zmuszeni są do komunikowania się z zamkniętym sterownikiem AMD, co odbywa się obecnie tylko dzięki wiedzy uzyskanej na podstawie przeprowadzonej wcześniej inżynierii odwrotnej. Jest to z tego powodu rozwiązanie niestabilne, narażone na zmiany między kolejnymi wersjami oprogramowania i narażone na stanie się przestarzałym. Louis-Francis Ratté-Boulianne jasno wskazuje w artykule na obecnie najważniejsze potrzeby zespołu.
Aby RADV stał się naprawdę stabilny i łatwy w utrzymaniu na systemie Windows, potrzebujemy jednego z następujących rozwiązań: stabilnego, udokumentowanego interfejsu do zastrzeżonego sterownika jądra (KMD) lub biblioteki pośredniczącej, która obsługuje komunikację ze sterownikiem KMD za pośrednictwem prywatnego kanału danych, zapewniając nam stabilną platformę do tworzenia oprogramowania, nawet w wypadku ewolucji bazowych plików binarnych.
Louis-Francis Ratté-Boulianne, Collabora
Prezentując swoje dotychczasowe dokonania programiści z Collabory liczą na zwrócenie uwagi AMD i Microsoftu na monumentalność, a także znaczenie całego projektu. Wszyscy zainteresowani mogą już w tej chwili zapoznać się z jego treścią i trzymać kciuki za pomyślny rozwój sytuacji.











0 komentarzy