Portál AbcLinuxu, 26. dubna 2024 15:50

Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa

15. 4. 2014 | Luboš Doležel
Články - Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa  

ICC a 64bitové Wine. Podpora GNU/Hurd. Regrese při kombinaci Wine a Mesa. Překladové vrstvy mezi Direct3D a OpenGL. Dekódování videa na GPU.

Obsah

Od předchozího vydání Zpravodaje o Víně uběhla delší doba. Měl jsem problém shromáždit dostatek novinek, aby to vystačilo na celé číslo. Teď už je jich ale více než dost. Podíváme se na poslední vydanou vývojovou verzi Wine:

Wine 1.7.16 vyšlo 4. dubna s těmito změnami:

Od února začalo opět vycházet World Wine News (WWN), tedy původní zdroj pro překlad Zpravodaje o Víně. Nemá bohužel rozsah a kvalitu původního zpravodaje, proto bude česká verze nadále vycházet nezávisle na originálu.

ICC a 64bitové Wine

link

ICC je kompilátor od Intelu, který byl často vychvalován za vynikající výkon výsledných binárek (stejně tak jako byl podezírán, že úmyslně kazí výkon na procesorech od AMD). Jordan se zajímal o možnost kompilace Wine pomocí ICC:

Hraju si s ICC a zajímalo by mě, jestli je nějaký návod nebo patche pro kompilaci Wine s ICC? Používám poslední verzi; icc verze 14.0.1 (kompatibilita s gcc 4.8.0).

Zaregistroval jsem starší odkaz na winehq. Vypadá to, že dokázal zkompilovat wine32 na x86_64, ale v roce 2008 bylo zjevně příliš brzy na pokusy s wine64 / ICC...

Zatím se nedostanu přes configure;

checking for gcc... icc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether icc accepts -g... yes
checking for icc option to accept ISO C89... none needed
checking whether we are using the GNU C++ compiler... yes
checking whether icpc accepts -g... yes
checking for cpp... cpp
checking whether icc supports __builtin_ms_va_list... no
configure: error: You need gcc >= 4.4 to build Wine as 64-bit.

Austin English uvedl, že dokud nebude icc podporovat __builtin_ms_va_list nezbytné pro wine64, tak má Jordan zkrátka smůlu. Zatím toto rozšíření nenabízí ani Clang.

Dále debata pokračovala na téma předností ICC. Jordan říká, že dokázal „poslepu“ poznat rozdíl mezi Firefoxem zkompilovaným s GCC a ICC.

Podpora GNU/Hurd

link

Operační systém GNU Hurd, přesněji mikrojádro a sada s ním komunikujících serverů, se v současné může k uživatelům nejsnáze dostat asi díky projektu Debian GNU/Hurd. V rámci něj probíhají usilovné snahy o portování nejrůznějších populárních aplikací na Hurd v případě, že nefungují samy od sebe.

Jednou z nepochybně zajímavých „aplikací“ je pak Wine. Právě do Wine byly zaslány poměrně jednoduché patche přidávající podporu pro tento systém:

Zatím byly testovány (pomalu se spouštějící) aplikace cmd, hostname, clock, winemine, wineconsole, notepad, wordpad a explorer.

André Hentschel byl překvapen, že to funguje:

Docela jsem se divil, že jsem neměl problémy s právy přes sokety [socket credentials], ale může to pořád být problém na jiných distribucích Hurdu.

Následně vysvětlil, že jmenované aplikace přímo používají winelib, a proto nejsou dobrým indikátorem, že vše funguje. Potvrdil ale, že i opravdové aplikace pro Windows zdá se běží. Svante Signell následně doplnil, že Hurd už nezbytné SCM_RIGHTS u soketů podporuje, související chyba byla opravena, a tak nyní Debian GNU/Hurd nabízí fungující Wine.

Regrese při kombinaci Wine a Mesa

link

Jednou z nepříjemných situací, na které mohou vývojář i uživatel narazit, je zdánlivě bezvýchodná regrese. Právě taková situace se vyskytla u novějšího Wine ve spojení s Mesa na grafikách Intel i915. Ruslan Kabatsayev poslal přehled toho, jak mu GTA: Vice City funguje s různými verzemi Mesa a Wine:

Mesa | Wine1.3.211.5.171.5.24+
9.0OKOKpomalé
~9.1-OKpomalépomalé
~9.1+OKchyba GLchyba GL

Ruslan říká, že jde o kombinaci snahy Wine používat GLSL, co nejvíce to jde, a přístupu v Mesa, kde se snaží tvářit, že i čipy i915 podporují OpenGL 2 a novější, aniž by tomu tak bylo.

Stefan Dösinger se právě tohoto chytil a chtěl upřesnění:

Znamená „pomalé“, že Wine naráží na softwarovou emulaci a Mesa tedy provádí vertex shadery na CPU? Nesnášel jsem, když OS X nabízelo funkce, které karta neměla, a myslím si, že je špatné, aby to samé dělali v Mesa.

Je ale nade vší pochybnost, že hlášené chyby OpenGL je nutné řešit. Po troše úprav se potvrdilo, že Mesa přechází na softwarovou emulaci – stačí drobná změna a vše zase funguje s odpovídajícím výkonem. Stefanovi se nelíbil s tím související patch pojmenovaný i915: Vždy povolit podporu GL 2.0:

Nevím, v jakém rozsahu tato karta podporuje pixel shadery. Možná existuje způsob, jak může ovladač nebo Wine fungovat bez přechodu na softwarovou emulaci. Obecně ale nesouhlasím s postojem, který se za tímto patchem skrývá. Dodávat ovladač < GL 2.0 u hardwaru, který GL 2.0 zkrátka nepodporuje, má smysl. Určitě nemá smysl chtít po aplikaci, aby nějak zázračně věděla, jestli je GL 2.0 nabízené ovladačem opravdu 2.0, nebo cosi plné nástrah vedoucích k emulaci.

Stefan na závěr doporučil založit bug, aby se na něj vývojáři Mesa podívali.

Překladové vrstvy mezi Direct3D a OpenGL

link

Spolu s blížícím se nástupem SteamOS se objevují různé drobné projekty překládající mezi Direct3D a OpenGL, uvolněné jako vedlejší produkt portování některých herních titulů na Linux. Jednou takovou knihovnou je ToGL od Valve. Jsou ale tyto projekty nějakým přínosem pro Wine, nebo ne? Stefan Dösinger popisuje stav ToGL a pravděpodobně i dalších projektů stejného ražení:

Ne, není [to použitelné pro Wine]. Je to *velmi* omezené. Nemá to ani deklaraci rozhraní stavových bloků a implementace povrchů [surfaces] je v podstatě nijaká. Neřeší to ani různé krajní případy, díky kterým je Direct3D zajímavé.

Nejde o rozsáhlou revizi tohoto kódu. Říkám jen první dvě věci, na které jsem během 2 minut narazil.

Tato omezení při návrhu dávají smysl pro účely Valve, ale kvůli nim je toto obalení na nic vyjma jednoduché abstrakce pro překlad mezi d3d a gl při kompilaci. Přesto může uvolnění tohoto kódu být užitečné pro ty, kteří chtějí portovat nějakou hru na Linux.

Dekódování videa na GPU

link

Možnost hardwarově dekódovat video na GPU je s námi na Linuxu už řadu let. Nabyla na významu zejména s příchodem H.264, které dokáže být dosti náročné i na některé dnešní procesory. Na Linuxu se používají různá API pro hardwarovou akceleraci, v současnosti především VDPAU (NVIDIA), XvBA (AMD) a VAAPI (open source ovladače a wrappery pro předchozí jmenovaná API).

Aplikace pro Windows neměly pod Wine doposud možnost hardwarovou akceleraci využívat. FDS-Team ale usiluje o to, aby se stav změnil. A proč, ptáte se? Jedním z jejich cílů je rozchodit pod linuxovými webovými prohlížeči pluginy z Windows (tedy hlavně Silverlight od Microsoftu), a to včetně zmiňované akcelerace. Michael Müller:

Ahoj, je to sice asi pořád trochu předčasné, ale i tak bych rád představil funkci, na které právě pracuji, a ukázal vám první výsledky. Někteří z vás už možná zaznamenali, že jsem nedávno zaslal jednoduché pahýly doplňující dxva2 dll. Původním cílem bylo rozchodit plugin v prohlížeči, k čemuž je tato knihovna potřeba, jinak se nespustí. Knihovna exportuje některé funkce používané vybranými aplikacemi (jako VLC, Flash, Silverlight, ...) pro dekódování na GPU. Začal jsem na těchto funkcích pracovat a rád bych vám ukázal první výsledek viditelný zde.

Jde o VLC pro Windows přehrávající film v MPEG2 za pomoci GPU akcelerace přes DXVA2. Moje implementace dxva2 používá VAAPI na Linuxu pro samotné dekódování na GPU a měla by podporovat karty AMD, Intelu a NVIDIA.

Zatím je podporováno jen dekódování MPEG2, jelikož jde o jeden ze snazších kodeků a ty ostatní jako H264 vyžadují mnohem více bufferů, které se musejí převádět mezi formátem DXVA a VAAPI. Druhým nejsnazším kodekem k implementaci by bylo mpeg4, ale jelikož žádná z mých karet mpeg4 neumí, tak budu nejspíše pokračovat s VC-1. Každopádně musím své patche trochu pročistit, jelikož přidávají asi 3000 řádek kódu, a pak je také ozkoušet s jinými kartami, než je poskytnu, jsou tam ale i další problémy, hlavně okolo d3d9, kvůli kterým bych se chtěl s vámi poradit.

Michael dále rozebírá zmiňované problémy s buffery. Pro H.264 je zapotřebí 16 bufferů na snímky ve VAAPI a 16 povrchů (surface) Direct3D s kopiemi těchto snímků. Do toho se objevují problémy s vynucovanou konverzí mezi YUV na RGB, která je dosti na překážku.

V krátké diskuzi, která následovala, si vývojáři vyměnili rady ohledně dalšího postupu. Opět se tedy blížíme k dalšímu milníku v kvalitě běhu aplikací pro Windows na Linuxu.

Seriál Zpravodaj o Víně (dílů: 42)

První díl: Zpravodaj o Víně - 339, poslední díl: Zpravodaj o Víně – 25. 6. 2014.
Předchozí díl: Zpravodaj o Víně – 16. 11. 2013: Dopad ondemand na výkon her
Následující díl: Zpravodaj o Víně – 12. 5. 2014: Konec podpory 16bitových aplikací?

Další články z této rubriky

Týden na ITBiz: Fotonické čipy ze stolní tiskárny
Týden na ScienceMag.cz: Model Lambda CDM celkem sedí, ale kosmologická konstanta se může měnit
Týden na ITBiz: Vysokoteplotní supravodivá dioda
Týden na ScienceMag.cz: V kvantovém materiálu objevili částici podobnou gravitonu
Týden na ITBiz: Efektivní podnikání se bez edge computingu neobejde

Diskuse k tomuto článku

15.4.2014 02:25 vinař
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Odpovědět | Sbalit | Link | Blokovat | Admin
Abc přišlo s křížkem po funuse. Mezitím začal vycházet kvalitní seriál o Wine tady .
Luboš Doležel (Doli) avatar 15.4.2014 09:14 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Kvalitní? To je jako shrnutí z rychlíku.
Max avatar 15.4.2014 10:26 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Ani bych neřekl, je to o Wine, ale na jiné úrovni (nemyslím nic zlého, jen zaměření cílové skupiny je trochu jiné).
Zdar Max
Měl jsem sen ... :(
15.4.2014 15:55 citanus
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
+1
Heron avatar 15.4.2014 16:36 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Hlavně by mě zajímalo, jak mohlo přijít s "s křížkem po funuse" když se seriálem začalo přibližně o 6 let dřív, než zmíněný LE. :-D
D.A.Tiger avatar 15.4.2014 21:01 D.A.Tiger | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
+1
Radost z toho, že někdo objeví něco nového, je omyl starý 6000 let... (Jean Paul) | anthill inside
egg avatar 15.4.2014 16:21 egg | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Odpovědět | Sbalit | Link | Blokovat | Admin
Nainstalovat si Hurd, abych si pod ním mohl pustit Wine a aplikace pro Windows, to chce vážně zvláštní náturu. :-)
Proč led klouže? --Aldebaran bulletin
Luboš Doležel (Doli) avatar 15.4.2014 22:30 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Hurd jako takový je technicky velice zajímavý projekt. Jak už to ale bývá, tak právě takové projekty mají problém sehnat dostatek vývojářů, jelikož laťka je vysoká. To má pak bohužel za výsledek stav, v jakém Hurd je :-(
20.4.2014 08:36 Petr Ježek | skóre: 10
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Aneb pro složitý svět složité nástroje?
Archlinux for your comps, faster running guaranted!
xkucf03 avatar 20.4.2014 18:20 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa

Tady vidím trochu potenciál ve virtualizaci – tam není potřeba se patlat s ovladači pro všemožný HW, stačí podporovat pár hypervizorů a jimi emulovaného HW – tam může být docela prostor si užívat ty zajímavé vlastnosti GNU/Hurdu.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
20.4.2014 08:38 Petr Ježek | skóre: 10
Rozbalit Rozbalit vše Re: Zpravodaj o Víně – 13. 4. 2014: Hardwarové dekódování videa
Odpovědět | Sbalit | Link | Blokovat | Admin
Mesa je opravdu tvárná. Povrzuji na vlastním Archu. Člověk si to brblání ani neužije :)
Archlinux for your comps, faster running guaranted!

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.