A ReactOS megtette az első lépéseket a WDDM modell felé

A ReactOS története messzebbre nyúlik vissza, mint sok mai fejlesztő átlag életkora. Ennek megfelelően szárnyra is kapott egy vicc, miszerint három örök dolog létezik: Az univerzum, a winrar próbaverziója, és a ReactOS fejlesztése. Félretéve a viccet, a projekt számos lelkes közreműködőt magához vonzott, akik különböző célokkal igyekeztek formálni a Windows-kompatibilis, nyílt forráskódú operációs rendszert. Az utóbbi években egyre inkább előtérbe került a korszerű hardverek támogatása, ami természetes lépés egy olyan rendszer számára, amely a Vista-korszak és az azt követő technológiák világába kíván belépni.

A Windows Vista ugyanis alapjaiban változtatta meg a hardveres meghajtók működését, különösen a grafikus alrendszerét, bevezetve a WDDM-et, azaz a Windows Display Driver Modelt. Ez a modell lényegében leválasztotta a GPU menedzselését a Win32k komponensről, és nagyobb felelősséget adott a meghajtógyártóknak, ami korszerűbb, rugalmasabb vezérlést tett lehetővé.

A ReactOS  megtette az első lépéseket a WDDM modell felé

Az XDDM árnyékában

A korábbi XDDM modell Windows 7-ig tovább élt, és bár a Windows 8-tól kezdve már kizárólag WDDM-alapú meghajtók használhatók, a régi architektúra maradványai továbbra is megtalálhatók a ReactOS rendszerben. A windows-szerű operációs rendszer fejlesztői ennek örökségét vizsgálva igyekeznek feltérképezni, hogyan képes a rendszer a Vista és későbbi Windows-verziókhoz hasonló módon kezelni az OpenGL és Vulkan ICD-ket, valamint a kijelzőmeghajtókat.

A CDD.dll kulcsszerepet játszik ebben az átmenetben, mivel hidat képez az XDDM és WDDM rétegek között. Ezen keresztül történik a kommunikáció a DirectX grafikus kernel (Dxgkrnl) és a Win32k között. Fontos, hogy bár a CDD egy XDDM-alapú meghajtó, működése során már a WDDM logikáját követi, ami nagy terhet ró a ReactOS Win32k alrendszerére. A ReactOS tehát csak akkor lehet teljesen kompatibilis a WDDM-mel, ha az XDDM implementációja hibátlan. Ez a feltétel nem csak a kijelzőmeghajtók, hanem a Desktop Window Manager jövőbeli működéséhez is elengedhetetlen.

Az első működő WDDM-meghajtók ReactOS alatt

A fejlesztők a WDK-ból ismert displib.lib könyvtár segítségével kezdtek kísérletezni, hogy a ReactOS képes legyen WDDM-meghajtókat fordítani és betölteni. A WDDM meghajtók nem kapcsolódnak közvetlenül a Dxgkrnl modulhoz, hanem API-hívásokon keresztül kommunikálnak vele, amely visszahívásokat ad a miniport meghajtónak. Ezzel a ReactOS egy alternatív megoldást hozott létre, amely lehetővé teszi a Windows-kompatibilis WDDM-meghajtók importálását és futtatását. Az első tesztek a BasicDisplay.sys mintameghajtóval kezdődtek, ami bizonyította, hogy a rendszer képes kapcsolatot létesíteni egy WDDM driverrel. Ezután a fejlesztés kiterjedt az NVIDIA Windows 7-es GPU-meghajtókra is, amelyek ugyan csak 2D megjelenítést biztosítottak, de képesek voltak a modern monitorok natív felbontásait és frissítési frekvenciáit kihasználni.

A jövőbeli irányok és a közösség szerepe

A ReactOS fejlesztői hangsúlyozzák, hogy a WDDM támogatás nem az XDDM leváltását, hanem annak tökéletesítését kívánja előkészíteni. Az új kijelzőarchitektúra megvalósítása csak akkor lehetséges, ha az előző generáció stabil és megbízható kódalapot biztosít. A jelenlegi kutatások azt mutatják, hogy a ReactOS képes a modern grafikus technológiák alapjait befogadni, és bár a teljes 3D gyorsítás még nem valósult meg, az alapvető kijelzőfunkciók már működnek. A projekt célja, hogy a jövőben a DWM és a DirectX rétegek is integrálhatók legyenek, ezzel új korszakot nyitva az operációs rendszer történetében. A fejlesztők további támogatást kérnek a közösségtől, hogy a ReactOS hardveres kompatibilitása tovább fejlődhessen, és igéretük szerint a következő beszámolókban részletesebben is bemutatják majd a WDDM implementáció további lépéseit.

További információk a ReactOS weboldalán található bejegyzésben.

Gábor a Pingvinbázis alapítója és főszerkesztője, több mint 20 éves tapasztalattal rendelkezik a Linux rendszerek és az Open Source szoftverek területén. Jártas a Python, és a PHP nyelvben, valamint a BASH scriptelésben is.