Mindenhova eljuttatja a Vulkan API-t a legújabb Android

Nagyjából másfél éve számoltunk be arról, hogy jön a Vulkan 1.1 az Android P-be, és most elértünk oda, hogy a Google bejelentette a kötelező támogatást, ugyanis az Android Q-ről Android 10-re átnevezett operációs rendszer alapértelmezetten előírja a Vulkan 1.1-es implementációt a 64 bites eszközöknél.

Hirdetés

Az Android 10 persze számos más újítást is kínál, jön például a régóta várt sötét téma, az iOS megoldásához hasonló, gesztusokkal történő navigáció, az új adatvédelmi szolgáltatásokról nem is beszélve, továbbá a hajlítható kijelzőkre vonatkozóan is jobb lesz a támogatás. Ezeknél persze fontosabb a Mainline projekt, amely lehetővé teszi a gyártóknak, hogy az adott eszköznek az egyes moduljait a felhasználók tudta nélkül is frissíteni tudják, méghozzá anélkül, hogy teljes szoftvercsomagot adnának ki. Ennek a haszna elsődlegesen a felfedezett biztonsági rések gyorsabb és hatékonyabb javítása lesz.

A legnagyobb változást azonban vitathatatlanul a Vulkan 1.1 jelenti. Ennek lényegesen nagyobb jelentősége van, mint azt sokan gondolnák, ugyanis az való igaz, hogy Androidra nem érkezik igazán sok olyan játék, amely használná a Khronos Group explicit API-ját, és ez nagyrészt annak köszönhető, hogy nem túl kellemes erre fejleszteni, mivel a gyártói implementációk közel sem optimálisak. Egy régóta húzódó problémát azonban megold a Google, ugyanis a Vulkan API-n keresztül bevetik az ANGLE projektet. Ez most még kísérleti fázisban van, de az új operációs rendszer tényleges megjelenéséig elkészül.

A keresőóriás problémája egyébként az, hogy az OpenGL ES rendkívül erős fragmentációt okoz Androidon belül, amit eddig nem tudtak kezelni. A gondok gyökere ott keletkezik, hogy a gyártók specifikus meghajtókat szállítanak, és ezek egyszerűen nem ugyanúgy kezelik a kódokat, annak ellenére sem, hogy az OpenGL ES API különböző verziói szabványnak tekinthetők. A gyártók oldaláról erre biztos nem lesz megoldás, mivel eddig sem mutatkozott hajlandóság a probléma felszámolására, így a Google úgy döntött, hogy saját kézbe veszik a dolgokat. Az Android 10-be beépítettek egy olyan OpenGL ES implementációt, amely a Vulkan API-n fut, így a fejlesztők eldönthetik, hogy az alkalmazás az eszközhöz szállított, gyártóspecifikus OpenGL ES meghajtót használja, vagy a Google Vulkan API-n futó ANGLE rétegét, amely képes futtatni az OpenGL ES API-ra írt szabványos kódokat. Utóbbinak az előnye, hogy minden Android 10 rendszer egységes lesz, vagyis ha az egyiken fut az OpenGL ES API-ra írt program, akkor garantált, hogy mindegyiken fog.

Fontos kiemelni, hogy a felhasználó sosem dönthet majd arról, hogy melyik OpenGL ES implementáción futhat az adott alkalmazás, erről vagy a program tartalmaz egy bejegyzést, ami alapján külön kéri az egyik opciót, vagy az adott eszköz gyártója dönthet erről egy szoftverfrissítésben. Utóbbi nem lesz jellemző, a Google csupán azért építette be ezt a lehetőséget a rendszerbe, hogy ha egy alkalmazással valami gond van, de a fejlesztők nem hajlandók, vagy nem tudják javítani, akkor a gyártók képesek legyen valamit tenni a működés érdekében.

Mindez pokolian nagy előrelépés, mivel az Android máig rendkívül rosszul van felépítve és menedzselve, ha a játékokról van szó, és rengeteg egyedi kódút, illetve trükk kell a fejlesztők részéről, hogy egy alkalmazás egyáltalán elinduljon egy adott eszközön. Ez természetesen nem túl kellemes tényező, hiszen gyakorlatilag az erőforrások egy része a hibák felderítésére, majd azok korrigálására, vagy rosszabb esetben megkerülésére megy el, holott lehetne a programot optimalizálni is. Emiatt nehezen érthetők az egyes gyártók törekvései a gamer telefonok szempontjából, hiszen maga a platform nem igazán alkalmas erre, legalábbis messze nem működik annyira optimálisan, amennyire az Apple saját ökoszisztémája.

Az Android 10-zel viszont ez mind megváltozik. A Google végre talált egy utat arra, hogy megszabaduljon a specifikációk eltérő értelmezéséből eredő, egymással helyenként nem kompatibilis OpenGL ES implementációktól, és a Vulkan 1.1-gyel kialakíthatnak egy közös alapot. Innentől kezdve a keresőóriásnak az a feladata, hogy segítse a partnerek munkáját, méghozzá annak érdekében, hogy minél jobb Vulkan implementációk készüljenek. Ez valószínűleg realitás is, mivel a gyártók elsődlegesen azért nem figyelnek még a Vulkan meghajtók optimalizálására, mert rendkívül kevés programban van haszna, míg az OpenGL ES meghajtók esetében rengeteg problémát kell orvosolni. A humán- és anyagi erőforrások átcsoportosításával a Vulkan implementációk minősége is elkezd majd javulni.

Az Android 10-et egyelőre a Google Pixel 3 és Pixel 3 XL, Pixel 3a és Pixel 3a XL, Pixel 2 és Pixel 2 XL, Pixel és Pixel XL, illetve az Essential Phone kapta meg. A gyártópartnerek természetesen készítik a saját frissítésüket, amely a módosítások függvényében elég sok időt is igénybe vehet. Az ezekre vonatkozó információkról az érintettek külön fognak beszámolni.