Miért probléma a shader fordítás PC-n?

A hagyományos és az explicit grafikus API-kkal sem volt jó a helyzet, holott konzolokon vajsima a kapott élmény.

Mi lenne az ideális alternatíva?

Az előző oldalak után azért felvázolunk egy olyan optimális megoldást, ami PC-n is működhetne, és közel azt az élményt adná, amit konzolon kap a felhasználó, ráadásul mindenféle technikai és jogi akadály nélkül.

Valószínűleg kevesen tudják, de egy grafikus API már megoldotta a shader fordítást PC-n. Ugyan az AMD már nem engedi az előző évtizedben bemutatott Mantle használatát, arra azért emlékezhetnek a felhasználók, hogy ezek a gondok az említett gyártóspecifikus explicit API-val nem voltak ennyire markánsak. Ennek az oka, hogy a Mantle-höz használt shaderek fordítása a magas szintű HLSL Ext. (módosított HLSL specifikáció) kódokból valósult meg, és a fordító közvetlenül úgynevezett AMDIL kódokat generált, ami az AMD által tervezett grafikus vezérlők virtuális utasításarchitektúrája. Eredetileg a Mantle még megkövetelte a magas szintű kódok szállítását, és az egyes pályaszakaszok betöltésekor történt meg maga a fordítás, de később már maga az AMDIL kód is mellékelhető volt az alkalmazások mellé, így a megnövekedett töltési időket is sikerült redukálni. Az eredmény pedig shader fordítások okozta akadásoktól mentes játékélmény volt.

A kérdés az, hogy lehetne-e a Mantle shader fordításra vonatkozó működéséből egy szabványos irányzat? Technikailag igen, mert minden grafikus vezérlőnél alkalmaznak a gyártók egy olyan virtuális utasításarchitektúrát, amit a különböző kódokkal lehet célozni, és az erre generált assembly jellegű kódból már elég könnyű és olcsó a valós utasításarchitektúra által emészthető kódot generálni. Ráadásul ezt nem véletlenül csinálja így minden érintett, ugyanis még egy adott cégen belül is elmondható, hogy generációnként változik az utasításarchitektúra, vagyis nem lenne célszerű ezeket egyenként kezelni, sokkal hasznosabb, ha van az összes támogatott hardver fölé húzva egy virtuális réteg, amiből aztán majd etethető az adott rendszer.

PC-s szinten tehát már most elmondható, hogy az AMD-nek, az Intelnek és az NVIDIA-nak is van saját virtuális utasításarchitektúrája, amelyek egyébként folyamatosan fejlődnek, de a szoftverek felé a kompatibilitást megtartják, míg a ténylegesen kiadott hardverek a gyártói virtuális utasításarchitektúra felé maradnak kompatibilisek. Ebből ugye megvan az a híd, ami miatt egy szabványosan megírt program fut a meglévő, illetve futni fog a jövőben érkező grafikus vezérlőkön.

Lehetne ugyanakkor ezt sokkal jobban is csinálni. Az biztos, hogy a hardverek tényleges utasításarchitektúráját tekintve sosem lesz kompatibilitás a gyártók között, ezt ugye a cégek generációról generációra sem tudják garantálni házon belül, tehát irreális elvárás lenne azt kérni, hogy alkalmazkodjanak egymáshoz. De a virtuális utasításarchitektúra egészen más téma, ebből a szempontból lehetne megegyezés. Mi több, van is erre iparági példa, hiszen a HSAIL még az előző évtizedben megszületett, és azóta is van gyártói oldalon támogatottsága, elvégre bizonyos cégek részben leváltották erre saját virtuális utasításarchitektúrájukat. PC-n belül az AMD az egyes API-khoz AMDIL-t, másokhoz pedig HSAIL-t használ, míg Androidon a MediaTek, a Qualcomm, a Samsung, az ARM és az Imagination is alkalmazza utóbbit, főleg a gépi tanulással kapcsolatos feladatokhoz.

A teljes iparágon belül tehát van némi akarat arra, hogy értékelhetően működjenek ezek a dolgok, csak nem mindenki szeretne közösködni, és a PC szempontjából különösen hátrányos, hogy az Intel és az NVIDIA nem akar egységes virtuális utasításarchitektúrát. Pedig utóbbiból nem származna hátrányuk, hiszen láthatóan hat cég képes használni ugyanazt HSAIL-t, és ebből nincs egyik érintettnek sem teljesítményproblémája. Ráadásul a megegyezés szempontjából elég szabadon lehet gondolkodni, ha esetleg a HSAIL nem felel meg, akkor lehet csinálni egy ugyanilyen alternatívát, ami pont ugyanúgy működik, pont ugyanazokat a célokat szolgálja, csak ez időbe kerül, míg a HSAIL már kész van és a gyakorlatban is működik.

Valószínűleg nem azzal van a gond, hogy ne látná az iparág ezt a megoldást, inkább ott kerül homokszem a gépezetbe, hogy bizonyos cégek elvből nem akarnak közös virtuális utasításarchitektúrát. Ilyen szempontból mindegy, hogy létezik a HSAIL, akár készülhetne tucatnyi hasonló alternatíva is, pusztán az akarat hiányzik a támogatáshoz, és ennek hiányában maradnak a PC-s problémák a shader fordítással kapcsolatban. Márpedig amíg egyetlen egy, PC-piacot kiszolgáló cég is azt gondolja, hogy ezt a gondot nem kell megoldani, vagyis jó az, ha egy játékos hazaviszi a közel egymillió forintért vásárolt csúcs-VGA-ját, amely egy nagyon várt játékban akár jó ideig durván akadozó élményt ad a shader fordítások miatt, addig igazából a változás halvány szikrája sem fog felcsillanni. De ezt a gondolatmenetet akár meg is fordíthatjuk úgy, hogy amíg egy játékos hajlandó közel egymillió forintért csúcs-VGA-t vásárolni, hogy aztán egy nagyon várt címben csak akadásokat kapjon egy jó darabig, akkor nincs itt semmi gond, az érintettek felé az az üzenet megy, hogy ők mindent jól csinálnak, hiszen az eladások megtörténnek. Persze a PC-s fórumokra befutnak majd az üzenetek, hogy milyen rosszul van összerakva a PC-s port, mert konzolon nincsenek meg ugyanazok a teljesítményproblémák, csak éppen ez nem ilyen egyszerű, valójában a PC-re nem is lehet úgy összerakni a működést, mint konzolra. Pontosabban elméletben megoldható lenne, ha a gyártók csapatjátékosok lennének, de egyelőre nem azok.

Abu85

Azóta történt

Előzmények

Hirdetés