Alkalmazások hardveres gyorsításának bekapcsolása környezeti változóval

kimarite képe

A videó kártyáknak és a hozzájuk tartozó illesztőprogramoknak (driver, firmware) létezik szoftveres vagy hardveres gyorsítási képességük. A hardveres gyorsítás jellemzően sokkal jobb teljesítmény nyújt a szoftveres megoldáshoz képest. A hardveres gyorsítás bekapcsolásának fogalma és igénye megjelenik például a böngészőkben és a videólejátszó alkalmazásokban, melyek legtöbbször saját megoldást nyújtanak a hardveres gyorsítás ki- és bekapcsolására az alkalmazások beállításaiban.

Illesztőprogramok

Itt bő lére lehetne ereszteni a mondanivalót, azonban elegendő annyit tudni, hogy vannak nyílt- és zárt forráskódú illesztőprogramok és más grafikus szoftverek a videók helyes megjelenítésére. Nyílt forráskódú a Direct Rendering Infrastructure (DRI1, DRI2, DRI3), a Mesa, az OpenGL (Open Graphics Library), az Intel és az AMD illesztőprogramok, illetőleg, az Nvidia eszközök nouveau illesztőprogramja, a Video Acceleration API (VA-API)  és a Video Decode and Presentation API for Unix (VDPAU). Zárt forráskódú jelenleg az Nvidia eszközök nvidia illesztőprogramja.

A hardveres gyorsítás támogatása

A támogatás a parancssor futtatásával tesztelhető (terminálban):

grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log

A kimenetben látható a VA-API,

[     7.280] (II) modeset(0): [DRI2]   DRI driver: i965

illetve a VDPAU támogatás.

[     7.280] (II) modeset(0): [DRI2]   VDPAU driver: va_gl

... a fenti kimenetek Intel eszközre jellemzők.

Az eszköz tulajdonságai:

inxi -Gzxxx
Graphics:
  Device-1: Intel 3rd Gen Core processor Graphics vendor: Hewlett-Packard
  driver: i915 v: kernel bus ID: 00:02.0 chip ID: 8086:0166 class ID: 0300
  Device-2: Chicony HP HD Webcam [Fixed] type: USB driver: N/A
  bus ID: 1-1.3:4 chip ID: 04f2:b2ef class ID: 0e02 serial: <filter>
  Display: x11 server: X.Org 1.20.11 driver: loaded: modesetting
  unloaded: fbdev,vesa resolution: 1280x1024~60Hz s-dpi: 96
  OpenGL: renderer: Mesa DRI Intel HD Graphics 4000 (IVB GT2)
  v: 4.2 Mesa 20.3.5 compat-v: 3.0 direct render: Yes

A hardveres gyorsításról itt olvashatsz részletesebben:
https://wiki.archlinux.org/title/Hardware_video_acceleration
https://wiki.debian.org/HardwareVideoAcceleration

Környezeti változó

A környezeti változó használatával felülbírálható a rendszer alapértelmezett beállítása.

VA-API

A VA-API támogatás a vainfo csomag telepítése után

sudo apt-get install vainfo

így tesztelhető részletesebb kimenettel:

vainfo

A VA-API környezeti változó neve:

LIBVA_DRIVER_NAME=ide helyettesítsd be a használt illesztőprogram nevét.

Példa Intel eszköznél:

grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log
[ 7.280] (II) modeset(0): [DRI2] DRI driver: i965

Eszközök és illesztőprogramok

  • Intel:
    • i915
    • i965
    • iHD
  • NVIDIA:
    • nouveau -> nouveau
    • VDPAU -> vdpau
    • NVDECODE -> nvidia
  • AMD:
    • AMDGPU -> radeonsi.

VDPAU

A VDPAU támogatás a vdpauinfo csomag telepítése után,

sudo apt-get install vdpauinfo

így tesztelhető részletesebb kimenettel:

vdpauinfo

A VDPAU környezeti változó neve:

VDPAU_DRIVER=ide helyettesítsd be a használt illesztőprogram nevét.

Példa Intel eszköznél:

grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log
[     7.280] (II) modeset(0): [DRI2]   VDPAU driver: va_gl

Eszközök és illesztőprogramok

  • Intel:
    • va_gl
  • NVIDIA:
    • nouveau
    • nvidia
  • AMD:
    • radeon
    • amdgpu

Hibrid beállítások (Nvidia és AMD)

A PRIME környezeti változó neve:

DRI_PRIME=ide helyettesítsd be a használt eszköz jelzőszámát a xrandr --listproviders parancssor kimenetéből.

Bővebben:
https://wiki.archlinux.org/title/PRIME

Gyakorlat

A környezeti változót össze kell házasítani az alkalmazással.

Példa

Videólejátszó indítása VA_API beállítással [*]

LIBVA_DRIVER_NAME=i915 kaffeine %U

Videólejátszó indítása VDPAU beállítással

VDPAU_DRIVER=va_gl kaffeine %U

A parancssorokat először terminálban teszteld. Ha az eredmény jó, cseréld ki az alkalmazás indítójának parancssorát a mindennapos használathoz. Pontosabban, az alkalmazásindítóban használd az env kifejezést is:

env LIBVA_DRIVER_NAME=i915 kaffeine %U

... amikor az inxi -Gzxxx parancssor kimenetében az i915-ös driver használata látható.
Legalábbis, nálam az i965 driver nem vált be (a videó helyett feketeség, a hang jó).
Az i915 DRI driver megtalálható a rendszeremen (listázom a könyvtár tartalmát):

ls -1 /usr/lib/x86_64-linux-gnu/dri/
i915_dri.so
i965_dri.so
i965_drv_video.so
iHD_drv_video.so
iris_dri.so
kms_swrast_dri.so
nouveau_dri.so
nouveau_drv_video.so
nouveau_vieux_dri.so
r200_dri.so
r300_dri.so
r600_dri.so
r600_drv_video.so
radeon_dri.so
radeonsi_dri.so
radeonsi_drv_video.so
swrast_dri.so
virtio_gpu_dri.so
vmwgfx_dri.so
zink_dri.so

Intel

Az i915-ös kernelillesztőnek két Mesa illesztőprogram felel meg: az i965-ös illesztőprogram, amely a Broadwater (azaz 965) óta támogatja a GPU-kat, és az i915-ös illesztőprogram, amely a régebbi, Grantsdale (azaz 915) óta támogatja a GPU-kat.
( https://unix.stackexchange.com/questions/618823/why-is-the-mesa-opengl-driver-for-intel-chips-called-i965/618831#618831 )

A Intel processzorok részét képező Intel grafikus chipek meglehetősen jól támogatottak a GNU/Linux rendszereken. Néhány chipnél a kernel és a felhasználói tér eszközeinek bizonyos kombinációinál véletlenszerű akadások és egyéb problémák lépnek fel. A kernel oldalt az i915 nevű meghajtó kezeli, amely - ellentétben azzal, amit a neve sugall - az összes modern Intel grafikus chipet kezeli. A felhasználói oldalt a Mesa. A Mesa két meghajtóval rendelkezik az OpenGL-hez. A régebbi és nagyon kiforrott i965-ös driver az alapértelmezett. Van egy újabb, egyelőre opcionális OpenGL driver is, az Iris. A Vulkan támogatást a Mesas ANV back-end biztosítja.
https://linuxreviews.org/Intel_graphics )

Jegyzet

A Mesa i965 driver használata a MESA_LOADER_DRIVER_OVERRIDE=i965 környezeti változóval kényszeríthető.
https://wiki.archlinux.org/title/Intel_graphics#Old_OpenGL_driver_(i965) )

További fogalmak a LinuxReviews weboldalon (search):
https://linuxreviews.org/LinuxReviews

A környezeti változó alkalmazását a DVB-C adás vételnél használtam, ugyanis, egy-egy tévé adó képe nem jelent meg, fekete maradt az alapértelmezett hardveres gyorsítás beállítással a VLC-ben, illetve, a Kaffeine-ben.

Enjoy :-)

Hozzászólások

kimarite képe

Hibajelentés

Értékelés: 

0
Még nincs értékelve

A Kaffeine és a VLC fejlesztőinek küldök egy-egy hibajelentést ez ügyben. Ha bárki tapasztal hibát tévé adások vételénél (DVB-*), írja ide, erre válaszul.

  • Van ez a dolog (Intel).
  • Továbbá, a VLC nem jeleníti meg helyesen a műsorújságot: este 8 órakor -egyes csatornáknál csak- például a hajnali 01:30-as műsortól kezdi mutatni a műsorokat. Az ISP, vagyis nálam kábel szolgáltató (DVB-C) közlése szerint a műsorújságot csak úgy kapják.
  • Egyes adások, például az AXN csatorna, apró négyzetekkel jelenik meg, „kockásodik”. Hogy a TV műsorokat változtatja-e kódolásban az ISP, az nem derült ki, elsiklottunk végül efelett. Sok mindent kérdeztem a telefonos ügyfélszolgálattól. :( :)
  • Van egy libdvbpsi probléma a VLC-nél, amikor a VA-API-t kiválasztom. Intel driver vagy libdvbpsi hiba: utóbbi frissítése nem segít (forgatás). Akkor, amikor helyesen mutatj hogy a Intel i965 driver for Intel(R) Ivybridge Mobile -t használom. Itt változtatás közben egy részlet:
gl info: Initialized libplacebo v2.72.0 (API v72)
main error: buffer deadlock prevented
gl info: Initialized libplacebo v2.72.0 (API v72)
gl info: Initialized libplacebo v2.72.0 (API v72)
gl info: Initialized libplacebo v2.72.0 (API v72)
main error: buffer deadlock prevented
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 13, expected 10) for PID 18
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 9, expected 7) for PID 18
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 2, expected 1) for PID 18
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 6, expected 4) for PID 18
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 6, expected 4) for PID 18
ts error: libdvbpsi error (PSI decoder): TS discontinuity (received 9, expected 7) for PID 18
main error: buffer deadlock prevented
gl info: Initialized libplacebo v2.72.0 (API v72)
avcodec info: Using Intel i965 driver for Intel(R) Ivybridge Mobile - 2.4.1 for hardware decoding
gl info: Initialized libplacebo v2.72.0 (API v72)
avcodec info: Using Intel i965 driver for Intel(R) Ivybridge Mobile - 2.4.1 for hardware decoding
main error: buffer deadlock prevented