Ten post na blogu, o którym wspomina John, jest całkiem dobrym początkiem (jeśli sam to powiem!), Ale jest trochę dodatkowych szczegółów, które mogą być pomocne.
W przypadku architektury PowerVR pośrednia struktura danych - inaczej nazywana pierwotną listą lub buforem parametrów (PB) - przechowująca dane dla poszczególnych płytek, po zakończeniu cieniowania wierzchołków i zakończenia procesu kafelkowania, jest w rzeczywistości generowana i zarządzana przez sprzęt, a nie sterownik.
Struktury w pamięci PB są fizycznie podzielone na dwie części. Po pierwsze, bloki transformowanych danych wierzchołków, w tym atrybuty wierzchołków. Bloki są skompresowane i, jak można sobie wyobrazić, są w większości spakowane i skompresowane dane zmiennoprzecinkowe. Drugą strukturą w pamięci są kafelki danych, które faktycznie stanowią listę list.
Lista najwyższego poziomu w tej strukturze danych jest nazywana regionem i może kodować zestaw kafelków zamiast pojedynczej kafelków jednocześnie, dla danego bloku pierwotnego. Region jest zatem zbiorem lokalizacji kafelków ekranu, stanów kafelków, a następnie listą skompresowanych bloków, które utrzymują geometrię w tym regionie. Regiony są tym, na czym działa rasterizer, i możesz sobie wyobrazić, że puste kafelki są po prostu automatycznie pomijane, chociaż w niektórych przypadkach istnieje dobry powód, aby rasteriser odwiedził puste regiony.
Pamięć wykorzystywana przez GPU dla PB jest dynamicznie przydzielana we wszystkich nowoczesnych implementacjach PowerVR. Wskaźnik do tej pamięci jest dostarczany przez sterownik, a sterownik, z pomocą GPU, dostosuje rozmiar do potrzeb. Mechanizm ten jest kompromisem między częstym ponownym przydzielaniem a minimalizacją ilości przydzielonej przestrzeni PB.
Współczesne procesory graficzne naprawdę bardzo starają się zminimalizować pośrednią pamięć, ale chodzenie po PB, aby nakarmić etap rasteryzacji, jest jednym z tych przypadków, w których jest to naprawdę trudne i nie ma innego wyboru. Na szczęście pogoń za wskaźnikiem owija duże bloki, które dobrze buforują i są przesyłane strumieniowo do rdzenia.
Inne architektury nie działają dokładnie tak samo jak PowerVR, ponieważ jednym z powodów, dla których PB jest taki, jak w naszej architekturze, jest pomoc w pełni wdrożonej koncepcji cieniowania pikseli, ale ogólna koncepcja dotyczy wszystkich innych kafli w przestrzeń mobilna, której jestem świadomy.