A Firefox 94 közelgő kiadásában a Linux felhasználóink nagy csoportja számára engedélyezik a fejlesztők EGL használatát. Ez növeli a WebGL teljesítményét, csökkenti az erőforrás-fogyasztást és megkönnyíti a jövőben a fejlesztők életét.
Mi is ez a fejlesztés?
Ahhoz, hogy a hardveres gyorsítású API-kat, mint az OpenGL, olyan ablakrendszerekkel használhassuk, mint az X11 vagy a Wayland, szükség van egy interfészre, amely összeköti őket. Az OpenGL-hez az X11-en a legtöbb program a GLX-et használja, míg utódját, az EGL-t a Wayland-en, az Android-on és a beágyazott környezetben használják. Bár az EGL-nek van néhány jelentős előnye a GLX-hez képest, és elméletileg ugyanúgy használható az X11-en is, az ottani elterjedése nagyon lassú volt.
Ez a következő okokra vezethető vissza:
- A játékok és hasonló alkalmazások alig profitálnak a váltásból.
- Azok az alkalmazások és eszközkészletek, amelyeknek előnyös lenne, gyakran eleve nem engedélyezik a hardveres gyorsított leképzést az X11-en. Valószínűleg – többek között – a korábbi rossz és bonyolult illesztőprogram helyzet miatt.
- A lassú átvétel miatt az X11 EGL implementációk hibásak és hiányosak maradtak.
Nem minden asztali grafikus kártya illesztőprogram támogatja teljes mértékben, és vannak hibái (például az átlátszó ablakok hibás megjelenítése). De ahogy a Wayland egyre nagyobb lendületet vesz, az EGL is egyre több figyelmet és javítást kap a Linux desktop-on. És hogy miért is akarják a fejlesztők az EGL-t? Mert ad nekik egy kiváló eszközt - az EGLImages-t (és az EGLFence-t). Az EGLImage egy olyan objektum, amely a GPU memóriájának egy darabján jön létre (ami lehet DMABUF, a DMABUF másolás nélküli puffermegosztást biztosít), megosztva különböző folyamatokkal, és amelyet framepufferként (a GL renderelés célpontja) vagy textúraként (a GL renderelés forrása) használnak.
Mi változott?
A Firefox egy olyan alkalmazás, amely számos területen nagy hasznát veszi a hardveres gyorsításnak. Azonban egészen a közelmúltig a szoftveres leképzés maradt az alapértelmezett. Csak idén végre a legtöbb Linux-felhasználó számára engedélyezték a Webrender, a Firefox új leképzőmotorját.
Nagyon hosszú a fejlesztések listája, amelyek megkönnyítették és így lehetővé tették ezt a lépést. Hogy csak néhányat említsünk:
- Az OpenGL illesztőprogramok jobbak lettek
- A Xorg DDX illesztőprogramok jobbak lettek (például: a „modesetting” illesztőprogram az Intel illesztőprogramban alapértelmezetté vált).
- A kompozitált asztalok elterjedtebbé váltak
- A Firefox-ból kikerült a bővítmény-támogatás (Flash Player).
- A Webrender sokkal kívánatosabbá tette a hardveres gyorsítást a régi OpenGL rétegkezelő alrendszerhez képest
- Új technológiák jelentek meg, mint például a Wayland és a DMABUF.
Az utolsó pont döntő volt a fejlesztés szempontjából. Amikor Martin Stránský implementálta a Wayland hardveres gyorsítás támogatását a Firefox-ban, nem tudta újra felhasználni a GLX kódot, hanem az Android EGL kódját használta. Innen egy érdekes történet vette kezdetét.
Az EGL alrendszer fejlesztése és a kód megosztása
Lépésről lépésre számos fejlesztés történt az EGL/Wayland backendben, amelyek más platformokra is hatással voltak:
- A WebGL teljesítményének javítása és a hatékony hardveres videódekódolás lehetővé tétele érdekében Martin a DMABUF-on keresztül megvalósította a GPU-pufferek nulla másolatot tartalmazó megosztását. Ez sokkal egyszerűbb az EGL-en, mint a GLX-en. És bár a Firefox-nak volt egy hasonló puffermegosztási implementációja X11-re (az Xrender segítségével), az sosem volt elég stabil ahhoz, hogy alapértelmezésben bekapcsolják.
- Továbbfejlesztették az EGL alrendszert, hogy ne csak az OpenGL ES-t, hanem az „asztali” OpenGL-t is támogassa, így biztosítva, hogy ne maradjon el tudásban a GLX alrendszer mögött.
- A fejlesztők lehetővé tettékaz EGL alrendszer használatát X11-en is.
- Majd ez kiterjesztve a DMABUF és VAAPI támogatást az X11-re is megjelent.
- Greg, egy független Wayland közreműködő, írt egy kezdeti implementációt az EGL-en történő részleges rajzoláshoz.
- Jamie Nicol kiterjesztette a részleges rajzolás támogatást, hogy megfelelően működjön Androidon - és így X11-en is.
- Greg gondoskodott arról, hogy a GPU-érzékelés (és a teszteket azokból az időkből, amikor a grafikus illesztőprogramok gyakran összeomlottak) úgy működjön Waylanden, hogy ne legyen szükség az Xwayland jelenlétére, így már a Firefox nem igényel GLX-et.
Ez csak egy nagyon kis kiragadott példa, ami jól mutatja, hogy egyre több megosztott kód lett a Wayland, az X11/EGL és az Android között. Ez javítja a kód minőségét, növeli a funkciókkal és hibákkal kapcsolatos rendelkezésre álló időt, csökkenti a karbantartási terheket. Ami azt jelenti, hogy az X11 kód megkapja a Wayland számára készített funkciókat (felfüggesztett leképzés a nem látszó ablakokhoz, jobb VSync-támogatás és még sok minden más is.
Az EGL alapértelmezetté tétele
Az elmúlt évben egyre több felhasználó szerzett tudomást arról, hogy az X11-en is lehet EGL-t használni – valószínűleg azért, mert ez a hardveres videódekódolás előfeltétele. Rengeteg hibát javítottak a Firefox-ban, de más komponensekben is. Most végre úgy érzik a fejlesztők, készen áll művük az általános bekapcsoláshoz:
- A Firefox 94-től kezdve a Mesa driver >= 21-et használó felhasználók alapértelmezés szerint megkapják.
- A saját fejlesztésű NVIDIA illesztőprogramot használóknak még egy kicsit várniuk kell, mivel a jelenleg kiadott illesztőprogramokból hiányzik egy fontos bővítmény. Az NVIDIA is dolgozik az EGL és DMABUF támogatáson a saját fejlesztésű meghajtóikban, így van remény az ilyen hardverek tulajdonosai számára.Valószínűleg azonban a 470-es szériától kezdve engedélyezni tudjuk majd az EGL-t. A DMABUF támogatás (és így a jobb WebGL teljesítmény) GBM támogatást igényel, és a 495-ös szériától felfelé korlátozódik.
Előnyök a felhasználók számára
Mire számíthat tehát pontosan, és miért? Elsősorban:
- Jobb WebGL teljesítmény. A DMABUF másolás nélküli puffermegosztásának köszönhetően a WebGL homokozóban és a rendszermemóriába történő másolása nélkül is elvégezhető. A WebGL-t nem csak olyan nyilvánvaló helyeken használják, mint a játékok, hanem finomabb módokon is, például a Google Maps-en.
- Csökkentett energiafogyasztás. A részleges károkozással már nem kell az egész ablakot újra rajzolnunk, ha a tartalomnak csak egy kis része változott. Gyakori példák erre a weboldalakon vagy a lapok betöltésekor megjelenő kis animációk.
- Kevesebb hiba. Az EGL modernebb, sokkal jobban megfelel az összetett hardverek számára asztali alkalmazásokhoz, és több platformon használják, mint a GLX-et.
- Az alapértelmezett hardveres videódekódolás (potenciális VA-API videó dekódolás) egy újabb döntő lépéssel közelebb került – valójában a legtöbb felhasználó számára ez már csak egy beállítást jelent (de vigyázat, még mindig van néhány hibája).
Ha más előny nem is látszik azonnal, de a halak nagyobb mennyiségben és nagyobb FPS-sel jelennek meg az akváriumban.
Külön köszönet
Hosszú azoknak a listája, akik hozzájárultak ehhez a lépéshez. Hogy csak néhányan kerüljenek megemlítésre: Martin Stránský, Andrew Osmond, Jamie Nicol, Grep V, Jan Ikenmeyer (Darkspirit), Michel Dänzer, a Firefox GFX-csapat, a Mesa projekt és a közreműködők, az Nvidia illesztőprogram csapata, a GTK csapat.
Végül: köszönjük szépen minden felhasználónak, aki hibákat jelentett be és segítette a fejlesztőket a javításukban!
Ha hibát talál
Amennyiben hibát talál, jelentse be!
Szükség esetén az EGL-t is letilthatja, és visszaválthat GLX-re.
Ezek a beállításokkal további testreszabási beállításokat végezhető el. A felület eléréséhez írja be a címsorba a következőt:
about:config
A megjelenő ablakban kattintson a „Kockázat elfogadás és továbblépés” gombra:
Az megjelenő felső keresőmezőben kereshető a beállítás neve részben vagy egészben.
Szükség esetén az EGL-t is letilthatja, és visszaválthat GLX-re.
Beállítás neve:
gfx.x11-egl.force-disabled
Eredeti érték: true;
Átállítás: false értékre.
EGL-lel a Firefox 94 előtt
Ennek mintájára a Firefox 94 előtti verzióban erőltetve engedélyezhetjük az X11-en futó Firefoxon az EGL használatát.
Beállítás neve:
gfx.x11-egl.force-enabled
Eredeti érték: false;
Átállítás: true értékre.
Források
- Switching the Linux graphics stack from GLX to EGL
- Firefox 94 comes with EGL on X11
- További információk a WebRenderről
- Magyar városról nevezték el az új Firefox-ot
- Firefox: nagyobb sebességű lett a JavaScript motor
- Firefox: WebRender és natív Apple chip támogatással
Hozzászólások
Huhh, terített asztal
Beküldte kimarite -
Értékelés:
Huhh, terített asztal folyamatosan a Mozilla háza tájáról! :)