Az Apple a WWDC keynote közepén mutatta be a Metalt, ami nem sok említést kapott. Mindössze egy játékot láttunk, ami gyönyörűen futott egy iPaden.
A helyzet ennél sokkal “drámaibb”. Az Apple egy olyan lehetőséget adott a fejlesztők kezébe, amivel remekül kihasználhatják az A7 és újabb processzorokat és a hozzájuk tartozó GPU-kat. A7-es van egyébként az iPhone 5s-ben, az iPad mini második generációjában, illetve az iPad Air-ben, A8 az iPhone 6-ban és 6 Plus-ban, A8X pedig az iPad Air 2-ben. Lényegében az iPhone 5s-től kezdve az összes iPhone-tulajdonos ki tudja majd használni a Metal adta lehetőségeket.
Az egyik kedvenc portálom, az anandtech.com a GFXBench nevű alkalmazással tesztelte a jelenlegi eszközökön a Metalt, és összehasonlította a jelenlegi OpenGL-es megoldással. Ekkora sebességnövekedést anno a 64bites átállásnál láttunk: Dupla szóhossz, dupla sebesség – mire képes a 64 bites Apple A7?
A Metal API segítségével a fejlesztő könnyedén és közvetlenül hozzáfér a GPU-hoz, és ez rengeteget számít. Jelenleg ha az OpenGL-t használjuk, és ki akarunk számíttatni valamit a GPU-val, akkor ahhoz a CPU-n keresztül tudunk hozzáférni. Tehát ha például egy almát akarunk lerajzoltatni, akkor a CPU-nak megmondjuk, hogy mit csináljon a GPU-val. Ez két okból sem előnyös: egyrészt ha mindennek keresztül kell mennie a CPU-n is, az sokkal lassabb, mintha közvetlenül a grafikus processzornak küldenénk az adatokat. A másik probléma az, hogy ha mindkét processzor folyamatosan dolgozik rajzolás közben, akkor fölöslegesen terheljük a CPU-t, ahelyett, hogy csak a GPU-t használnánk.
A Metal API-val többé nem kell a CPU-t használni, hanem elég csak a GPU-t meghívnunk egy számítás erejéig. Ez egyébként önmagában nem lenne lehetséges, nem véletlen frissítette az Apple a saját processzorait, lásd A7, A8, A8X. Ezekben van egy speciális rész, ami a processzor és a grafikus egység közötti kommunikációt hivatott megkönnyíteni.
A népszerű többplatformos grafikus API-k (például OpenGL, DirectX, stb.) használatakor a processzor az idő egy jelentős részét a GPU fölé írt absztrakciós kódban tölti. Az Apple-nek azonban nincs szüksége ilyen absztrakciós rétegekre, hiszen kezükben tartják a hardvergyártást, és olyan, saját tervezésű CPU-kat (és adott esetben GPU-kat) tehetnek a Mac, iPhone és iPad készülékekbe, amilyet csak szeretnének.
Röviden ennyi a lényeg, nézzük ezt meg számokban:
Azt hiszem jól látszik a különbség: ha rengeteg (több ezer) egyszerű objektumot rajzoltatunk ki, akkor a Metal használata legalább háromszoros sebességnövekedéshez vezet (azaz a leglassab, Metalt használó kód is háromszor gyorsabb, mint a leggyorsabb OpenGL-es). Ha ráadásul ugyanazon a készüléken futó kódnak a sebességnövekedését figyeljük, akkor láthatjuk, hogy például az iPad Air 2 esetében több, mint négyszeres gyorsulást ért el a Metal.
Azt is meg kell említeni viszont, hogy amennyiben nem kifejezetten a nagyon gyakori renderelésre megyünk rá, akkor a Metal nem eredményez drasztikus gyorsulást (bár pár százalékot így is javít az eredményeken):
7 Comments
Kemény.
Nagyon várom
Nagyon durva! Mikor lesz a szifon.com flat dessing?
Mármint az app?
Igen! 🙂
Soha.??
Miben más ez, mint a tavaly bemutatott Metal? A7 felett már eddig is hasznalhattak Metal-t a programok. Nem értem…