Fórum Root.cz
Hlavní témata => Desktop => Téma založeno: linux_noob 17. 09. 2013, 10:41:35
-
Zdravim, na abclinuxu se mi odpovedi nedostalo tak to zkusim tady ::)
Nejako se mi nedari rozchodit HW akceleraci videa na linuxu. Mam HP ProBook 4540s, je v tom Intel® Core™ i5-3210M a pak prepinatelna grafika intel/ati. Pouzivam fedoru 19 a vlc. Vaapi by mi podle vainfo melo jet, ale kdyz zapnu ve vlc gpu akceleraci tak je to stejny jako bez ni - v horni casti obrazu beha cara.
Pouzivam opensource ovladace (rad bych na nich zustal, ale pokud bude nejhur tak klidne i proprietarni), s kernelem 3.10, protoze jsem doufal, ze bych mohl rozchodit akceleraci pres vdpau, ktera by v tom 3.10 kernelu pro radeon driver mela bejt, bohuzel vdpau nechodi vubec.
Kvuli uspore energie bych preferoval rozchodit tu akceleraci pres intelackou grafiku.
Mohl by me nekdo poradit jak tu akceleraci rozchodit? Diky.
Nejaky dalsi informace:
vainfo
libva info: VA-API version 0.33.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_33
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.33 (libva 1.1.1)
vainfo: Driver version: Intel i965 driver - 1.0.20
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointVLD
VAProfileH264Baseline : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
vdpauinfo
display: :0 screen: 0
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Error creating VDPAU device: 1
lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Thames [Radeon HD 7550M/7570M/7650M] (rev ff)
uname -r
3.10.11-200.fc19.x86_64
Nektere (snad relevantni) nainstalovane baliky:
mesa-dri-drivers.x86_64 9.2-1.20130902.fc19 @updates
mesa-filesystem.x86_64 9.2-1.20130902.fc19 @updates
mesa-libEGL.x86_64 9.2-1.20130902.fc19 @updates
mesa-libGL.x86_64 9.2-1.20130902.fc19 @updates
mesa-libGLU.x86_64 9.0.0-2.fc19 @fedora
mesa-libgbm.x86_64 9.2-1.20130902.fc19 @updates
mesa-libglapi.x86_64 9.2-1.20130902.fc19 @updates
mesa-libwayland-egl.x86_64 9.2-1.20130902.fc19 @updates
mesa-libxatracker.x86_64 9.2-1.20130902.fc19 @updates
mesa-vdpau-drivers.x86_64 9.2-1.20130902.fc19 @updates
libva-intel-driver.x86_64 1.0.20-1.fc19 @rpmfusion-free
xorg-x11-drv-intel.x86_64 2.21.12-2.fc19 @updates
libva.x86_64 1.1.1-2.fc19 @fedora
libva-intel-driver.x86_64 1.0.20-1.fc19 @rpmfusion-free
libva-utils.x86_64 1.1.1-2.fc19 @fedora
libva-vdpau-driver.x86_64 0.7.4-3.fc19 @fedora
libdrm.x86_64 2.4.46-1.fc19 @updates
xorg-x11-drv-ati.x86_64 7.1.0-5.20130408git6e74aacc5.fc19
libvdpau.x86_64 0.7-1.fc19 @updates
mesa-vdpau-drivers.x86_64 9.2-1.20130902.fc19 @updates
vdpauinfo.x86_64 0.0.6-6.fc19 @fedora
-
Zda funguje HW akcelerace, nepoznate podle behajici cary. Pokud si dobre pamatuju, tak VLC nepouziva vaapi k dekodovani+zobrazovani, ale jen k dekodovani, tzn. pokud tam mate tearing bez HW akcelerace, bude tam i s ni. Zkuste zmenit vystup z XV na OpenGL.
-
Diky za odpoved, mam pocit, ze by to mohlo bejt ono. Bohuzel jedinej vystup z vlc kterej funguje dostatecne dobre je SDL YUV, aby to nebylo tak jednoduchy a out-of-box, tak v tomhle modu nefunguje vlc menu, takze nejde pretacet video, atd :-\
Zkousel jsem este SMPlayer a povedlo se mi tam vybrat nejakej mod, kterej taky vypadal dobre, musel bych to sice dekodovat na cpu ale budiz. Vsechno bylo dobry, az do chvile kdy jsem chtel video vypnout, mel sem to ve fullscreenu, a nemohl jsem se dostat pryc, tak jsem zacal mackat klavesovy zkratky a skoncil s restartem ::)
BTW: Nejakej napad proc nechce fungovat ten vdpau? SMplayer podporuje dekodovani pres vdpau, tak bych to mohl pouzit pokud bych to rozchodil.
-
Diky za odpoved, mam pocit, ze by to mohlo bejt ono. Bohuzel jedinej vystup z vlc kterej funguje dostatecne dobre je SDL YUV, aby to nebylo tak jednoduchy a out-of-box, tak v tomhle modu nefunguje vlc menu, takze nejde pretacet video, atd :-\
Nemam s prepinatelnout grafikou Intel/Ati zadne zkusenosti. Standardne tedy jede Ati nebo Intel? Na Intelu by nemel byt zadny problem ani s XV ani s GL. Co vypise xvinfo?
BTW: Nejakej napad proc nechce fungovat ten vdpau? SMplayer podporuje dekodovani pres vdpau, tak bych to mohl pouzit pokud bych to rozchodil.
Protoze chybi vdpau driver pro vaapi backend. Bud nainstalujte https://github.com/i-rinat/libvdpau-va-gl nebo mplayer s podporou vaapi https://gitorious.org/vaapi/mplayer. Pripadne pouzijte pro testovani XBMC, ktere umi jak vaapi, tak vdpau.
-
Ted jsem zrovna na widlich, takze vypis z xvinfa poskytnu pozdeji. Standardne mam ati grafiku vypnutou pres vga_switcheroo a jedu na intelu, ono jinak to ani nejde, protoze kdyz prepnu na ati
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
a restartuju X server (rozumej odhlasim se). Tak mam akorat cernou obrazovku a nezbejva nez natvrdo restartovar :-X
Este k tomu vdpau, asi presne nechapes o co mi jde, v kernelu 3.10 mel bejt pro opensource ati driver nejakej patch co umoznuje pouzivat HW akceleraci dekodovani videa (UVD) prave pres vdpau.
viz phoronix (http://www.phoronix.com/scan.php?page=article&item=amd_opensource_uvd&num=1)
This open-source AMD UVD support will allow for accelerated playback of H.264, VC-1, and MPEG variants on the HD 4000 through HD 7000 series GPUs. Interestingly, and to much pleasure, the UVD support is being exposed over VDPAU.
-
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
a restartuju X server (rozumej odhlasim se). Tak mam akorat cernou obrazovku a nezbejva nez natvrdo restartovar :-X
A po restartu pocitace to tedy jede na Ati?
Este k tomu vdpau, asi presne nechapes o co mi jde, v kernelu 3.10 mel bejt pro opensource ati driver nejakej patch co umoznuje pouzivat HW akceleraci dekodovani videa (UVD) prave pres vdpau.
To jsem tomu spatne rozumnel. Kazdopadne to vdpau rozhrani by melo fungovat pouze pri prepnuti na Ati.
-
Ne po restartu to jede zase na intelu :-\
-
Ne po restartu to jede zase na intelu :-\
V tom pripade to ale nemuze fungovat :) Tu vdpau funkcionalitu poskytuje Ati driver, ktery ale nebezi. Osobne bych asi sel cestou vdpau driveru s Intelim vaapi backendem.
-
xvinfo:
X-Video Extension version 2.2
screen #0
Adaptor #0: "Intel(R) Textured Video"
number of ports: 16
port base: 72
operations supported: PutImage
supported visuals:
depth 24, visualID 0x20
number of attributes: 1
"XV_SYNC_TO_VBLANK" (range -1 to 1)
client settable attribute
client gettable attribute (current value is 1)
maximum XvImage size: 16384 x 16384
Number of image formats: 5
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x434d5658 (XVMC)
guid: 58564d43-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Adaptor #1: "Intel(R) Video Sprite"
number of ports: 1
port base: 88
operations supported: PutImage
supported visuals:
depth 24, visualID 0x20
number of attributes: 1
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 66046)
maximum XvImage size: 2048 x 2048
Number of image formats: 3
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x434d5658 (XVMC)
guid: 58564d43-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Jinak jsem zkompiloval ten vaapi backend pro vdpau a je to pecka, akorat to nefunguje v SMplayeru, ale v mplayeru to funguje ;D Koukam, ze proste nic neni na 100% :-\ Ale stejne diky za nej, je to asi nejlepsi reseni.
-
Co me ale furt nejde do hlavy je, pokud teda u vlc funguje to dekodovani pres vaapi, tak v cem je pak este problem? Nerikej mi, ze intelacka grafika nezvladne dekodovat a este vykreslit ten obraz? :-\
Jinak s tema frontendama pro mplayer je to taky bida, zkusil jsem este gnome-mplayer, vypada luxusne, ale vysledek stejnej jako u SMplayeru - tz pres vdpau nejede :'(
Este k tomu SMplayeru, nasel jsem ten mod ve kterym to jelo dobre("Intel(R) Video Sprite"), problem je, ze v tomhle modu ten obraz prekryje vsechno krome mysi. Tz musel jsem se po slepu prepnout do konzole a restartovat :-\
-
xvinfo:
X-Video Extension version 2.2
screen #0
Adaptor #0: "Intel(R) Textured Video"
number of ports: 16
port base: 72
operations supported: PutImage
supported visuals:
depth 24, visualID 0x20
number of attributes: 1
"XV_SYNC_TO_VBLANK" (range -1 to 1)
client settable attribute
client gettable attribute (current value is 1)
maximum XvImage size: 16384 x 16384
Number of image formats: 5
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x434d5658 (XVMC)
guid: 58564d43-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Adaptor #1: "Intel(R) Video Sprite"
number of ports: 1
port base: 88
operations supported: PutImage
supported visuals:
depth 24, visualID 0x20
number of attributes: 1
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 66046)
maximum XvImage size: 2048 x 2048
Number of image formats: 3
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x59565955 (UYVY)
guid: 55595659-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x434d5658 (XVMC)
guid: 58564d43-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
Ten vypis vypada zdrave. Co presne dela mplayer -vo xv ..., pripadne mplayer -vo xv:adaptor=0 ...? I tak bych spis ale doporucoval opengl (-vo gl).
Jinak jsem zkompiloval ten vaapi backend pro vdpau a je to pecka, akorat to nefunguje v SMplayeru, ale v mplayeru to funguje ;D Koukam, ze proste nic neni na 100% :-\ Ale stejne diky za nej, je to asi nejlepsi reseni.
SMplayer je jen gui rozhrani, ktere pousti mplayer. Takze pokud to jde v mplayeru, musi to jit v SMplayeru. Tipnu si, ze ve "vdpau properties" neni zaskrtnuta volba "Disable software video filters", ale vic prozradi log Options->View logs->Mplayer.
-
Co me ale furt nejde do hlavy je, pokud teda u vlc funguje to dekodovani pres vaapi, tak v cem je pak este problem? Nerikej mi, ze intelacka grafika nezvladne dekodovat a este vykreslit ten obraz? :-\
VLC opravdu pouziva GPU akceleraci nestandardnim zpusobem (https://wiki.videolan.org/VLC_GPU_Decoding/), takze je trochu pomalejsi nez jine programy, ale tady bude problem hlavne v tom video vystupu. Dokud nebude chodit spravne opengl (nebo xvideo) vystup, nebude VLC pouzitelne.
Dalsi moznost je zkompilovat vyvojovou verzi VLC, od verze 2.2 ma primou podporu vdpau (http://www.remlab.net/op/vlc-vdpau.shtml).
-
No tak mplayer najednou funguje s jakoukoliv z tech moznosti - xv, xv:adaptor=0, gl. Co se tyce SMplayer tak funguje taky, akorat nesmim zobrazit menu, jinak se zacne objevovat cara ::) + Po pretoceni videa chvilku trva nez se to rozjede plynule. Proste neni to uplne na 100%, ale da se s tim zit ;)
Akorat jsem zjistil, ze tak jako tak se to dekoduje na cpu, zatez tak 25% (vzdy jenom jedno jadro), i s volbou -vo vdpau. U procesu mi to pak ukazuje nejakejch 5-7%, coz hadam je prumer na vsechny jadra.
K VLC, pokud problem neni v dekodovani, tak nevidim duvod proc kompilovat vyvojovou verzi s podporou vdpau ::)
BTW: VLC s pouzitim vaapi ma zhruba 7% na jednom jadre a prumer u procesu 1-2%.
PS: V tomhle se nevyznam, tak se chci zeptat - v cem je teda zobrazeni jednoho (uz dekodovanyho) snimku z filmu narocnejsi nez vykresleni plochy? Jako laik bych si myslel, ze narocnost je dana poctem pixelu, kterej je danej rozlisenim monitoru a je teda stejnej.
-
Akorat jsem zjistil, ze tak jako tak se to dekoduje na cpu, zatez tak 25% (vzdy jenom jedno jadro), i s volbou -vo vdpau. U procesu mi to pak ukazuje nejakejch 5-7%, coz hadam je prumer na vsechny jadra.
A je to video H.264? libvdpau-va-gl pouziva vaapi jen na dekodovani H.264.
K VLC, pokud problem neni v dekodovani, tak nevidim duvod proc kompilovat vyvojovou verzi s podporou vdpau ::)
BTW: VLC s pouzitim vaapi ma zhruba 7% na jednom jadre a prumer u procesu 1-2%.
Protoze VLC 2.2 pouzije vdpau nejen k dekodovani, ale i k renderingu. U libvdpau-va-gl to bude fakticky OpenGL.
PS: V tomhle se nevyznam, tak se chci zeptat - v cem je teda zobrazeni jednoho (uz dekodovanyho) snimku z filmu narocnejsi nez vykresleni plochy? Jako laik bych si myslel, ze narocnost je dana poctem pixelu, kterej je danej rozlisenim monitoru a je teda stejnej.
To srovnani s plochou nechapu. Proc by nekdo chtel vykreslovat plochu 50x za sekundu? Nicmene, vysledkem dekodovani je frame napr. ve formatu YUY2. Pokud je to prokladane video, tak je frame slozeny ze 2 fieldu a je treba z nich udelat 2 plne (pripadne jen jeden) framy. A dobre deinterlacni algoritmy jsou dost narocne. Vysledny frame je treba pred vykreslenim prevest na RGB a zvetsit na pozadovanou velikost. Tu koverzi a zvetseni muze delat bud graficka karta (napr. xv, gl, vdpau, ...) nebo to musi udelat CPU (napr. x11).
-
Info o videu:
Kodek: H264 - MPEG-4 AVC (part 10) (avc1)
Rozlišení: 1280x720
Snímků za sekundu: 23.976215
Dekódovaný formát: Planar 4:2:0 YVU
K vlc: Pravda je takova, ze jsem uz zkousel kompilovat stabilni vlc ze zdrojaku, nicmene nepovedlo se, jsem holt noobik :-[
K vykreslovani: Jak jsem rikal, nevyznam se v tom, takze to ted chapu, tak, ze narozdil od plochy to video potrebuje este dodatecny zpracovani, ktery je narocny na vykon.
-
Akcelerovat video přes VDPAU je na hybridních grafikách Intel+AMD možné, ale nejde to úplně out-of-the-box. Nejprve je třeba povolit offloading přes xrandr (DIS musí být zapnutá), viz zde: https://wiki.archlinux.org/index.php/PRIME. Pak my mělo stačit spustit mplayer takto:
DRI_PRIME=1 mplayer -vo vdpau xxx.mp4
Některé kompozitory (např. KWin) zatím s PRIME nefungují dobře a vykreslí jen černou plochu. Funkční by měl být např. xcompmgr nebo Mutter v GNOME Shell.
Pokud vám toto řešení přijde zbytečně krkolomné, lze bez potíží použít mplayer-vaapi. Pro správné přehrávání SMPlayerem je nutné nastavit počet dekódovacích vláken pro H.264 na 1 a vypnout možnost ukládání screenshotů.
-
Co se týče grafiky a akcelerace ... lepší je ovladač od ATI. Na přehrávání použij mplayer-mt a a jako gui gnome-mplayer.
-
Sorry za pozdni odpoved, mel jsem ted malo pristup ke kompu.
Problem s PRIME je u me ten, ze nevidi moji ati kartu - aspon na fedore ne, na ubuntu ji vidi.
xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x46 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 0 name:Inte
mplayer-vaapi by se mi taky libilo, bohuzel neni pro fedoru balik a nepodarilo se mi ho ze zdrojaku zkompilovat :(
Ale diky za ten tip se zakazanim screenshotu, ted uz smplayer funguje v pohode ;-)
@rick: asi mas pravdu, vzhledem k tomu, ze nemam zadnou rozumnou moznost prepinani grafik s opensource ovladacema, tak mi asi nezbyde nez sahnout po proprietarnich. Zatim to zkousim tak, ze mam na ubuntu proprietarni a na fedore opensource.
-
Problem s PRIME je u me ten, ze nevidi moji ati kartu - aspon na fedore ne, na ubuntu ji vidi.
xrandr --listproviders
Providers: number : 1
Provider 0: id: 0x46 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 0 name:Inte
Karta musí být při startu Xek zapnutá (v /sys/kernel/debug/vgaswitcheroo/switch musí být u obou karet Pwr). Jsou zavedené jaderné ovladače (radeon v lsmod)? Nechybí ovladač radeonů pro X.org? Možná bych zkusil sestřelit Xka (ve Fedoře s GNOME by mělo jít "systemctl stop gdm.service"), kartu zapnout (případně vypnout a zapnout znovu) a gdm znovu spustit.
mplayer-vaapi by se mi taky libilo, bohuzel neni pro fedoru balik a nepodarilo se mi ho ze zdrojaku zkompilovat :(
Odhaduji, že bude chybět nějaký -devel balíček. Z logů by mělo být možné zjistit jaký.
-
Tak po dlouhy dobe jsem se k tomu zase dostal, zkompiloval jsem si vlc 2.1 a ruzne si hral s nastavenim, par modu fungovalo bez cary, ale zase meli jiny problemy. No a pak jsem chvili googlil a narazil jsem na tento prikaz, ktery vse vyresil:
echo CLUTTER_PAINT=disable-clipped-redraws:disable-culling >> /etc/environment
A voila, po restartu X serveru to funguje (zkouseno s vlc 2.1). Tak to sem davam, jenom kdyby se to nekomu hodilo.
Pripadne kdyby nekdo vedel a mohl mi vysvetlit co ten prikaz vlastne dela a proc to pomohlo ;)