Skyrim, Civilization 5 či Starcraft 2 na Linuxu? Proč ne, je tu D3D9 podpora pro knihovnu Gallium3D
Gallium3D je poměrně zajímavá knihovna. U jejího zrodu stála firma Tungsten Graphics a knihovna sama slouží k podpoře pro 3D grafiku, či obecně třeba běh grafického prostředí, zkrátka zajišťuje to, že příkazy daného systému poběží na daném hardwaru. Tedy například, že OpenGL program poběží na v systému instalované grafické kartě s podporou OpenGL (což jsou dnes všechny). Ale není to jen OpenGL, skrze Gallium3D funguje i OpenGL ES, OpenVG či OpenCL. A stejně dobře tak skrze něj může běžet Direct 3D, obecně všude tam, kde ovladače pro grafické karty Gallium3D podporují - což jsou například i otevřené ovladače pro Radeony a GeForce (nouveau).
Před pár lety taková implementace skutečně vznikala, a sice pro Direct3D 10/11, ale nezájem ze strany Wine jí učinil tak nějak nevyužitelnou. Později byla tato podpora tedy odstraněna. Na první pohled poněkud méně ambicióznější projekt se ale zrodil v hlavě jednoho z vývojářů nouveau, Christopha Bumillera. Direct3D 9 state tracker dle něj osud 10/11 verze nestihne, protože situace je jiná. Kód není napsán v C++, ale C a Christoph jej aktivně udržuje. Navíc Gallium3D je v tuto chvíli navrženo a postaveno tak, že se staršími Direct3D 9 si rozumí celkem dobře, zatímco moderní rozhraní Direct3D 10 a 11 s veškerými novinkami již činily problémy při implementaci (to byl jeden z důvodů konce onoho state trackeru). A do třetice: zatímco her schopných skutečně využít Direct3D 10/11 je ještě stále relativně málo, těch s podporou maximálně Direct3D 9 - hlavně díky zaostalosti současné generace herních konzolí - je obrovská hromada. A jako třešnička na dortu pak působí fakt, že tento nový state tracker je v provozuschopném stavu a lze s nimi dané Direct3D 9 hry provozovat.
Christoph musel pochopitelně do jisté míry modifikovat Wine, aby místo obvyklé cesty „překladu“ z D3D9 do OpenGL využívalo jeho state tracker, ale to je právě ta cesta, proč je jeho řešení rychlejší než Wine: skrze Direct3D 9 state tracker putují příkazy herního enginu přímo na hardware s jeho Gallium3D ovladačem, namísto toho, aby se musely převádět z D3D do OpenGL, jako je tomu u Wine.
Ze zajímavých herních titulů prý v tuto chvíli běží například Skyrim, Civilization 5, Anno 1404 a StarCraft 2. Testovalo se na ovladači nouveau (NVC0/Fermi) a R600g (Radeony). Výkon je poměrně dobrý, zhruba dvakrát vyšší oproti Wine.
Tolik tedy výhled na možnou budoucnost. Christoph zatím má celý kód v externím repozitáři projektu Mesa (neoficiální implementace OpenGL, vytvořená též v Tungsten Graphics), ale nebrání se mergingu do hlavní větve, pokud zde bude zájem. V tuto chvíli jsou otevřené obě varianty: jak změna přístupu od „Wine D3D→OGL cesty“ k této, tak zaniknutí Christophova projektu pro nezájem a nedostatek vývojářů. To je asi největší riziko: zatím je to celé „one man show“.