Linux E X P R E S

Facebook

2+1 způsob, jak dosáhnout vyšší FPS ve Wine – část první

linvswin.png

Každý z vás určitě zná aplikační vrstvu Wine, která slouží ke spouštění softwaru určeného pro Windows v Linuxu, případně Mac OS X. Kromě spouštění aplikací se Wine dá použít i ke hraní her a to je také téma tohoto článku. Ve výchozím nastavení totiž použití Wine oproti hraní přímo na Windows znamená velké výkonnostní ztráty. Jak dostat FPS nad úroveň Windows?


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 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-driversppa: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) 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.

Diskuze (4) Nahoru