1. Wine CSMT aneb zapojíme do překladu další jádro
Co je potřeba: vícejádrový procesor?
Jak toho docílit: Nejjednodušší je využít frontend pro Wine – PlayOnLinux, pomocí kterého nainstalujete Wine ve verzi označené CSMT. Ještě je potřeba v systémovém registru do klíče HKEY_CURRENT_USER\Software\Wine\Direct3D
přidat parametr CSMT
s řetězcovou hodnotou enabled
. Všechny aplikace využívající Direct3D by měly z tohoto profitovat.
Tento postup funguje na jakékoliv kombinaci hardwaru a ovladačů. Lze jej dokonce užít i na systémech fungujících na llvmpipe (tzn. bez funkční 3D akcelerace na GPU). Princip je jednoduchý a spočívá v tom, že překlad volání Direct3D na OpenGL probíhá v dalším vlákně.
A ačkoliv to na první pohled nevypadá na nějaké zázračné zrychlení, tak v některých aplikacích dosáhnete až o 100 % lepších FPS. Smysl to má samozřejmě jen na vícejádrových procesorech. Vývojáři Wine plánují toto vylepšení zařadit do hlavní větve až po dokončení podpory pro Direct3D 10.
Příklad verze Wine s podporou CSMT
2. Direct3D State Tracker – aneb nativní podpora Direct3D 9
Co je potřeba: grafická karta s ovladačem na bázi Gallium3D
Jak toho docílit: Přidáním repozitářů ppa:oibaf/graphics-drivers
a ppa:commendsarnex/ppa
. Je potřeba také dávat pozor na postupný přechod na DRI3. Jakmile k tomu dojde, tak bude potřeba repozitář obsahující Wine odebrat a přidat místo něj tento: ppa:commendsarnex/winedri3
. Postupy pro další distribuce naleznete tady.
Tato možnost se objevila teprve nedávno. Použití je omezeno jen na svobodné ovladače grafik AMD/ATI a NVIDIA. Intel je bohužel mimo hru – ačkoliv je k dispozici i ovladač Intel ILO, který je postaven na architektuře Gallium3D, tak State Tracker plně nepodporuje a výkonnostně je oproti oficiálně podporovanému Intel Classic horší, takže by ve výsledku k žádnému zrychlení dojít nemuselo.
A v čem to celé spočívá? Jednoduše v přidání podpory pro nativní zpracovávání Direct3D 9 kódu na grafické kartě – odpadá tedy problém, který řeší CSMT (překlad na OpenGL) a pokud máte podporovaný hardware, tak jsou zrychlení ještě vyšší. Kdysi byla dostupná i podpora pro zpracování Direct3D 10/11 na grafické kartě, ale kvůli malé využitelnosti byla odstraněna.
Wine prozatím spolehlivě podporuje jen Direct3D 9 a další verze jsou spíše hudbou budoucnosti. Není však vyloučeno, že časem bude podpora znovu přidána. Zařazení do hlavní větve Mesy je pravděpodobné, stanovisko vývojářů Wine ale zatím známo není.
+1 Hardcore way – virtuální PC s přímým přístupem ke GPU
Co je potřeba: vícejádrový procesor s podporou pokročilé virtualizace, dvě grafické karty (ne notebookové), dva monitory (resp. jeden s podporou dvou vstupů).
Jak toho docílit: Tento postup je velice náročný na přípravu – je potřeba zkompilovat kernel a QEMU. Funguje tak, že pro hostující OS vyhradíte jednu grafickou kartu, zatímco další grafika bude plně dostupná virtualizovanému systému – Windows.
Návod, jak toto zprovoznit, zde vypisovat nebudu neb by to bylo na samostatný článek. Postup jsem zde uvedl spíše pro zajímavost, a pokud se rozhodnete toto řešení vyzkoušet, tak doporučuji zavítat na blog Rafała Cieślaka. Postup je tam popsán spíše pro zkušenější uživatele.
Takto spustíte „v Linuxu“ i hry, které Wine nepodporuje (MrAronnax, CC-BY-SA)
Pokračování příště
V prvním díle jsem popsal teoretické principy jednotlivých možností a také návod na jejich zprovoznění. Další díl článku se bude týkat samotného porovnání výkonu Wine, Wine CSMT a Wine + Gallium Nine.
Poslední zmiňovanou možnost s využitím QEMU vynechám, kvůli chybějícímu hardwaru. V komentářích se můžete podělit o návrhy, které benchmarky mám pro porovnání využít. Testování bude probíhat na grafické kartě AMD Radeon HD 7770.