- WDDM premješta upravljanje GPU-om na Dxgkrnl i miniportove, dalje od Win32k.
- ReactOS sada počinje vozači WDDM prikazuje i pregovara o načinima rada putem VidPn-a i CDD-a.
- Čvrst XDDM paket ostaje neophodan za napredak u WDDM-u i DWM-u.
- ReactOS 0.4.15 poboljšava drajvere, LiveUSB, performanse i prelazi na amd64.

ReactOS je u razvoju toliko dugo da mnogi od njegovih trenutnih saradnika nisu bili ni rođeni kada je počeo, ali njegov cilj ostaje nepromijenjen: ponuditi ABI iskustvo kompatibilno sa Windowsom , sposobno za pokretanje softvera i drajvera dizajniranih za Microsoftov operativni sistem. Posljednjih godina, jedan od najambicioznijih frontova projekta bio je sustizanje hardverske podrške.
Ovaj proces je doveo do ključnog cilja: usklađivanja sa modernom arhitekturom grafičkih drajvera za Windows. Govorimo o WDDM-u, modelu koji je zamijenio XDDM u eri Viste. Unutar ReactOS ekosistema, istraživanje WDDM-a znači razumijevanje kako se promijenilo upravljanje GPU-om , koje su sistemske komponente restrukturirane i zašto jednostavno "aktiviranje" drajvera nije dovoljno da bi sve radilo kao u Windowsu.
Šta je WDDM i zašto pravi razliku
WDDM, Windows Display Driver Model, uveo je temeljnu reviziju grafičkog steka: premjestio je kontrolu GPU-a s komponenti poput Win32k na specijalizirano jezgro (Dxgkrnl.sys) koje komunicira s miniportovima proizvođača. Svaka revizija (1.0, 1.1, 1.2 i sljedeće verzije) definira koje interfejse sistem nudi i kako su implementirani, koncept koji se razlikuje od nivoa funkcija Direct3D viđenih u DxDiag-u.
Ova modularnija i zahtjevnija arhitektura ide dalje od onoga što je XDDM nudio. U WDDM-u, Dxgkrnl djeluje kao orkestrator , a drajver dobavljača pruža jasne ulazne tačke i ugovore. Ovo odvajanje omogućava poboljšanja kao što su virtualizovana video memorija, GPU planer i, generalno, veća stabilnost premeštanjem dela logike u korisnički režim.
Godinama je praktična dokumentacija za dublje proučavanje video drajvera bila oskudna za obje arhitekture, što je ometalo napredak. Sa zrelošću drajvera otvorenog koda za GPU, zajednica je stekla reference iz stvarnog svijeta za razumijevanje ponašanja OpenGL ICD-ova, podrške za Vulkan i prelaza između modela.
Šta se dogodilo sa XDDM-om? Kompatibilnost, ostaci i tačka preloma
Od Windowsa 8, sistem zahtijeva da GPU drajver bude WDDM; međutim, XDDM nije u potpunosti nestao . Windows Vista i 7 su omogućavali učitavanje XDDM drajvera bez problema, a neki stariji mehanizmi i dalje koegzistiraju sa WDDM-om. Modul koji učitava OpenGL ICD-ove, na primjer, se jedva promijenio između verzija.
Komunikacija u WDDM-u sa miniportom je direktnija. Win32k zadržava skok sistemskog poziva koji Dxgkrnl popunjava odgovarajućim interfejsom , smanjujući uključenost starog podsistema u GPU logiku. U stvari, kada se sistem pokrene, poštuju se specifične rutine za povezivanje WDDM-a sa starim Win32k svijetom bez miješanja arhitektura.
Postoje dva drajvera za ekran koje vrijedi detaljno razumjeti: TSDDD.dll i CDD.dll. Prvi, TSDDD, se ručno učitava u sesiji 0 i vrlo je osnovni XDDM drajver koji jedva da zapisuje u praznu memoriju. U porodici NT5.x (kao što je baza ReactOS-a), neuspješna inicijalizacija videa obično rezultira provjerom grešaka za video kvar; u Visti i kasnijim verzijama, ova "stvarna" situacija se više ne događa zahvaljujući drugoj komponenti.
CDD.dll je zanimljiv. Dok djeluje kao XDDM drajver, on također izdaje IOCTL-ove za komunikaciju sa WDDM-om. Ovo je jedini način na koji Dxgkrnl i Win32k mogu smisleno komunicirati tokom modernih grafičkih operacija. Tokom inicijalizacije, Win32k šalje upite adapterima, ali odgovor prepisuje cddll, osiguravajući most prema WDDM-u. Kritična tačka: kada je WDDM aktivan, nije moguće paralelno pokretati XDDM drajver.
OpenGL ICD, Vulkan i odnos sa sistemom
OpenGL ICD-ovi se učitavaju putem tradicionalnog modula, a njihov protok se ne razlikuje značajno između Viste, 7, 8 i novijih verzija, što je olakšalo unakrsno testiranje korištenjem ICD-ova iz različitih generacija. Vulkan se ponaša slično: sistem delegira interakciju GPU-a ovim slojevima, ali u WDDM-u, miniport i Dxgkrnl uspostavljaju stvarni hardverski "ugovor".
Ova hibridna struktura objašnjava zašto još uvijek vidimo ostatke XDDM-a kako koegzistiraju sa WDDM-om u sistemskim komponentama. Most CDD.dll omogućava Win32k-u da nastavi ispunjavati svoju klasičnu ulogu bez blokiranja modernog puta, dok Dxgkrnl i miniport obavljaju ključni zadatak upravljanja GPU-om.
Kompajliranje WDDM drajvera za testiranje na ReactOS-u
Za pokretanje WDDM drajvera, potreban je pomoćni dio: WDK-ova displib.lib, koja otkriva ulaznu tačku za inicijalizaciju drajvera i "buđenje" Dxgkrnl-a bez vezivanja za njega. Tok je specifičan: poziva se API za inicijalizaciju, strukture podataka se prosljeđuju Dxgkrnl-u, a zatim Dxgkrnl vraća kontrolu pozivanjem povratnog poziva za pokretanje miniporta proizvođača .
Ovaj povratni poziv pruža interfejse za ostatak komunikacije sa Dxgkrnl-om. U ovom trenutku, Win32k nema ulogu u početnim fazama miniporta, što je fundamentalna razlika u poređenju sa XDDM svijetom. Ovu adaptaciju je bilo lako implementirati u ReactOS-u, otvarajući vrata za uvoz i kompajliranje WDDM drajvera koji također nastavljaju raditi na Windowsu.
WDDM u ReactOS-u: Fokus na ekranu
D3DKMT API-ji se koriste za DirectX i OpenGL ubrzanje, tako da je za prvi eksperiment na ReactOS-u fokus bio na osnovama: postizanju video izlaza . Tu do izražaja dolazi VidPn (Video Presentation Network) univerzum i njegova pridružena hardverska podrška unutar Dxgkrnl-a.
Od Windowsa 8, postoje KMDOD-ovi, varijanta WDDM miniportova koji eliminišu 3D ubrzanje . Lakše ih je razumjeti i početi koristiti: omogućavaju vam upravljanje video režimima, monitorima i putanjama bez oslanjanja na planer i druge složene Dxgkrnl podsisteme.
Za ReactOS, eksperiment je uključivao izgradnju minimalnog Dxgkrnl-a koji je ispitivao dostupne modove putem VidPn-a, prosljeđivao ih CDD-u i aktivirao CDD kada je Dxgkrnl bio spreman. Rezultat: sistem je počeo komunicirati sa svojim prvim WDDM drajverom i prikazivati sliku u stvarnim uslovima.
Prvi uspjesi: BasicDisplay.sys i upravljački programi proizvođača
Učitavanje BasicDisplay.sys na ReactOS-u dalo je neočekivano pozitivne rezultate: WDDM se pokazao popustljivijim nego što se očekivalo . Čak je bilo moguće pokrenuti drajvere proizvođača isključivo za komponentu ekrana, bez zahtjeva za 3D ubrzanjem.
U kasnijim testovima, pojavili su se video izlazi s više drajvera, uključujući Nvidia drajver iz ere Windowsa 7 , koji je omogućavao ReactOS-u da pokreće moderne monitore u njihovoj izvornoj rezoluciji i brzini osvježavanja . Usko grlo nije bio Win32k, već još uvijek rastuća kompatibilnost sa stvarnim hardverom.
Zašto je XDDM i dalje ključan na putu ka WDDM-u
Iako je krajnji cilj WDDM, ReactOS-u je potrebno da njegov XDDM stek bude u odličnom stanju. To je zato što se komponente poput CDD.dll i samog DWM-a oslanjaju na dobar rad starog sistema kako bi premostile jaz prema novom. U stvari, DWM uvodi zahtjeve koje trenutna implementacija Win32k u ReactOS-u još uvijek ne može u potpunosti ispuniti, iako se napredak postiže.
Podrška za AMD GPU-ove pod XDDM-om je također ubrzana, što je važan korak u stabilizaciji okruženja prije otvaranja vrata složenijim WDDM drajverima . Odabrani pristup je inkrementalni: prvo prikaz i modovi, a zatim više dijelova slagalice.
Ključne razlike između XDDM i WDDM
Jedna od najznačajnijih promjena pri prelasku sa XDDM-a na WDDM je upravljanje greškama. Sa WDDM-om, veliki dio logike drajvera se prebacuje u korisnički režim, što znači da pad drajvera ne mora nužno srušiti cijeli sistem. Nadalje, GPU planer i virtualizovana memorija omogućavaju finiju alokaciju resursa.
U XDDM-u, Win32k je nosio mnogo veću težinu, a komunikacija s hardverom je bila rigoroznija. U WDDM-u, Dxgkrnl nameće jasan ugovor na miniportove , a Win32k djeluje kao most za podsistem za prozore. Ovo omogućava nove mogućnosti kao što su DWM, kompoziting i pouzdanije prezentacije.
- Planiranje i izolacija rada GPU-a u odnosu na monolitni pristup XDDM-a.
- Virtualna video memorija i bolje upravljanje zajedničkim resursima.
- Povećana stabilnost prilikom migracije logike drajvera u korisnički režim.
- Integracija sa DWM-om i moderne puteve prezentacije.
Trenutna ograničenja i rad u toku
Iako je pokretanje WDDM drajvera za ekran u ReactOS-u već stvarnost u testiranju, kompatibilnost hardvera i dalje predstavlja veliku prepreku. Uređaji iz stvarnog svijeta zahtijevaju vrlo specifičnu podršku , a svaki korak naprijed zahtijeva proširenje podsistema: od "plug and play" do upravljanja memorijom i watchdog tajmera.
Prilikom pokretanja, također se opaža komunikacija između watchdoga, Win32k i Dxgkrnl-a kako bi se pripremilo slanje D3DKMT API-ja unutar Dxgkrnl-a; ovo je specifičan trenutak inicijalizacije, ali dodaje zahtjeve kada je u pitanju vjerna reprodukcija ponašanja Windowsa.
Status projekta, zajednica i poziv za saradnju
Nedavni prelazak na WDDM pratila je povećana aktivnost vezana za hardver. Postoje tehnički članci koji detaljno opisuju proces i pozivaju na doprinose putem donacija, GitHub-a ili aktivnosti informisanja . To je veliki i dugoročni projekat: svaki mini-port i svaki put izdanja dodaju nijanse.
Vrijedi se, usput rečeno, sjetiti prirode projekta: ReactOS nije ni Linux ni Unix . Za komparativnu analizu , napisan je od nule da bude binarno kompatibilan s Windowsom, što mu omogućava izvorno pokretanje Windows softvera i drajvera, bez pribjegavanja slojevima kompatibilnosti poput Wine/Proton, iako projekat također surađuje s tim FOSS ekosistemom kako bi poboljšao performanse.
Praktične novosti: ReactOS 0.4.15 i poboljšanja sistema
Pored WDDM-a, verzija 0.4.15 donijela je i dobar broj promjena: nove drajvere za pohranu podataka koji poboljšavaju stabilnost i kompatibilnost s USB diskovima , kao i ažurirane mrežne drajvere. Fontovi, ljuska radne površine, Windows API-ji, teme i dijaloški okviri također su prilagođeni.
Poboljšanja su napravljena u keširanju i upravljanju memorijom, što je rezultiralo poboljšanim performansama. Pored toga, podrška za LiveUSB je dodana nakon značajnih izmjena Plug and Play menadžera kernela, otvarajući vrata većem broju drajvera trećih strana. Grafički interfejs je dobio manje izmjene kako bi bio lakši za korištenje u poređenju sa tekstualnim USETUP instalerom.
Što se tiče zvuka, sada je moguće započeti sa Windows zvučnim paketom, iako su neke nedostatke i dalje prisutne . Također vrijedi napomenuti da je verzija 0.4.15 prva verzija s podrškom za 64-bitnu arhitekturu (amd64) sve do desktopa, iako još uvijek nema službene 64-bitne slike jer se još uvijek radi na WOW64.
Ispravke grešaka su bile opsežne: riješene su nepravilno dodijeljene ikone na radnoj površini , promijenjena je veličina ikona na traci zadataka i dodana je izvorna podrška za ZIP datoteke. Sve ovo ima za cilj poboljšanje osnovnog korisničkog iskustva uz istovremeno rješavanje problema kompatibilnosti hardvera.
Preuzimanje, instalacija i minimalni zahtjevi
Slike ReactOS-a 0.4.15 dostupne su na SourceForgeu. Možete ga isprobati u virtualnoj mašini (preporučuje se početnicima) ili ga instalirati na fizički hardver pomoću USB diska kreiranog pomoću uslužnih programa poput Rufusa, baš kao što biste to učinili sa standardnom Windows instalacijom.
Zahtjevi su skromni: x86 CPU (Pentium ili noviji), 64 MB RAM memorije, najmanje 450 MB prostora na disku particioniranog kao FAT16/FAT32 i dodatnih 2 GB ako planirate instalirati softver ili igre. Sa ovim minimalnim zahtjevima, računari iz posljednje decenije ili čak i raniji mogu pokrenuti sistem u testnim scenarijima.
Preporuke za upotrebu i realna očekivanja
Trenutno je ReactOS eksperimentalni projekat. Ne preporučuje se kao primarni operativni sistem ako su vam potrebne moderne funkcije i puna kompatibilnost s novijim aplikacijama. Za pokretanje novijeg softvera, Wine/Proton na Linuxu ostaje vrlo stabilna opcija s velikim ekosistemom podrške.
Uprkos tome, jedinstvena priroda ReactOS-a čini ga jedinim otvorenim sistemom koji pokreće Windows binarne datoteke bez međuslojeva u stilu emulatora. Ovaj pristup ga čini zanimljivim za laboratorije, unatrag kompatibilne, analize i kontrolirana okruženja gdje je potrebno proučavati ponašanje aplikacija i drajvera.
Kontekst zajednice i uobičajene poruke
Na forumima i društvenim mrežama uobičajeno je vidjeti podsjetnike poput: ReactOS je PC operativni sistem koji može pokretati Windows programe i drajvere . Ponekad se prikazuju i brojači članova i online korisnika - jednostavni pokazatelji aktivnosti zajednice koji, iako nemaju tehničku vrijednost, ukazuju na rastući interes za projekat.
Nedavni medijski narativi su čak ukazali na vremensku podudarnost između prestanka podrške za neke verzije Windowsa i napretka ReactOS-a prema WDDM-u . Više od ironije, ovo je znak da zajednica usklađuje prioritete kako bi ostala relevantna sa trenutnim hardverom i drajverima.
U konačnici, sav ovaj napor se svodi na jednu tačku: izgradnju čvrste osnove gdje WDDM može da se ukorijeni bez napuštanja XDDM naslijeđa koje i dalje služi kao vezivno tkivo između svjetova. Sa CDD.dll kao mostom, Dxgkrnl kao mozgom i miniportovima koji se bolje razumiju zahvaljujući drajverima otvorenog koda, put je utvrđen, iako još uvijek ima prostora za napredak.
Uzimajući u obzir sve navedeno, podrška za WDDM u ReactOS-u prelazi okvire nejasnog obećanja i postaje skup opipljivih prekretnica: drajveri za ekran koji se pokreću, načini rada koji dobro pregovaraju i monitori koji rade u punoj rezoluciji . Još uvijek ima posla kako bi se skalirala kompatibilnost hardvera, dovršile komponente poput WOW64 i dalje poboljšale Win32k i DWM, ali smjer je jasan i zajednica već radi u tom smjeru.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje kroz pisanje, a to je ono što ću raditi na ovom blogu, pokazivati vam sve najzanimljivije stvari o gadžetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se krećete u digitalnom svijetu na jednostavan i zabavan način.