A GCN4 furcsa fejlesztése
Az AMD egy alternatív területen is meglepően furcsa fejlesztéssel állt elő. A GCN4 másik nagy újítása ugyanis az úgynevezett primitive discard accelerator. Ez az egység a setup motor része, így minden primitív, azaz háromszög átfut rajta a primitív feldolgozás fázisában, vagyis a vertex shader lépcső után, azaz bőven a raszterizálás előtt.
Bár a grafika számításánál számos algoritmus törekszik arra, hogy a nem látható részletek még a feldolgozás előtt ki legyenek vágva, teljes megoldás erre nincs igazán, így valamennyi, alapvetően haszontalan primitív átcsusszan a szűrőn, és ezekről sajnos csak akkor derül ki, hogy nem látszanak, ha a számítások jó része már el lett végezve rajtuk. Ekkor persze ki lesznek vágva, de az erőforrások egy jelentős részét már elvitték. A jelenet komplexitásának növekedésével sajnos növekszik a végeredmény szempontjából haszontalan számítások mennyisége is, ami egyáltalán nem szerencsés a fejlesztők nézőpontjából, de ezzel a problémával együtt kellett élni.
A primitive discard accelerator célja eldönteni azt, hogy a megkapott, korábban lefuttatott kivágási rendszerek által meghagyott primitív látszik-e a végső képen vagy nem. Ezt a célhardver egy nagyon bonyolult ellenőrzési folyamattal teszteli, és sajnos az AMD nem árulta el, hogy miképp döntik el a primitívekről a vertex shader lépcső után, hogy melyek fontosak és melyek dobhatók el. A titkolózás természetesen érthető, mivel maga a problémakör régóta komoly kutatási területe a hardvergyártóknak, és gyakorlatban is működő rendszerrel eddig még senki sem állt elő.
Nyilván a primitive discard accelerator legnagyobb előnye, hogy amint megmondja egy primitívről, hogy nem fog látszani, onnantól kezdve a hardvernek nem kell törődnie tovább vele, ami lényeges előny lehet, hiszen az aktuális API-kban a vertex shader fázis után van még tesszellálás, geometry shader, raszterizálás, illetve pixel shader is, ahol komoly erőforrásokat lehet elkölteni az amúgy sem látszó elemekre.
Az AMD szerint a primitive discard accelerator változó hatékonysággal működik, mivel számít az is, hogy mennyi amúgy haszontalan primitív csusszant át a korábbi szűrőkön. Ha kevés kivágható háromszög van a jelenetben, akkor az előny százalékos léptékekben mérhető csak. Általánosan elmondható, hogy minél kisebbek a jelenetben használt háromszögek, és ezen belül is minél komplexebb a megjelenítendő jelenet, annál nagyobb előnyhöz lehet jutni a korai hardveres kivágásból.
A legnagyobb előnyt a mikropoligonokkal lehet nyerni magas MSAA mintavételezéssel. Az AMD négyszeres MSAA melletti tesszellálásnál kimérte a primitive discard accelerator által biztosított relatív gyorsulást, különböző komplexitású jelenetek mellett. Ebből az látható, hogy az új célhardver a felvázolt, elég extrémnek mondható körülmények mellett minimum kétszeres, maximum három és félszeres extra teljesítményt nyújt.
Fontos kiemelni, hogy a primitive discard accelerator sem vágja ki az összes, végső képkockán nem látható háromszöget, ugyanis a rendszer úgy van kalibrálva, hogy ha nem biztos benne, hogy az adott háromszög látszik-e vagy sem, akkor inkább átengedi. Ugyanakkor a hatékonyság így is elég nagy, és mindenképpen előrelépés ahhoz képest, mintha minden fals pozitív háromszöggel tovább kellene számolni.
A cikk még nem ért véget, kérlek, lapozz!