Analizowanie wykorzystania przepustowości pamięci tekstur

Przepustowość pamięci danych tekstur może być potencjalnym wąskim gardłem wydajności procesora graficznego aplikacji. W profilu systemu AGI znajdują się liczniki, które mogą pomóc w diagnozowaniu problemów z przepustowością pamięci tekstur.

Liczniki Qualcomm Adreno

Na urządzeniach z procesorami graficznymi Qualcomm Adreno do ważnych liczników należą:

Kontroferta Opis
Przepustowość odczytu pamięci tekstur (bajty/sekundę) Przepustowość danych tekstur odczytywanych z pamięci zewnętrznej.
% Texture L1 Miss Brak w pamięci podręcznej L1 podczas pobierania tekstur.
% tekstur na poziomie innym niż podstawowy Odsetek pobrań tekstur, które są mapami mip.
% Filtrowanie anizotropowe Odsetek teksteli, które są filtrowane anizotropowo.

Liczniki ARM Mali

Na urządzeniach z procesorami GPU ARM Mali do ważnych liczników należą:

Kontroferta Opis
Odczytywanie tekstur z pamięci zewnętrznej Odczyty danych z pamięci zewnętrznej przez jednostkę tekstur, uśrednione w rdzeniach cieniowania.
Odczyt tekstury z pamięci podręcznej L2 Odczyty danych z pamięci podręcznej L2 przez jednostkę tekstur, uśrednione w rdzeniach cieniowania.
[Więcej]

Aby obliczyć ogólną przepustowość na podstawie średniej liczby odczytów, wartość licznika jest mnożona przez szerokość magistrali (zwykle 16 bajtów) i łączną liczbę rdzeni cieniowania.

Analiza kontr

Aby zmierzyć zachowanie tych liczników, zmierz średnią i szczytową przepustowość w ciągu jednej klatki GPU, a następnie wyznacz ciągły blok wykorzystania GPU.

Przepustowość odczytu pamięci tekstur dla pojedynczej klatki, ze średnią wartością 565 MB/s i wartością szczytową 2,30 GB/s
Rysunek 1. Przepustowość odczytu pamięci tekstur dla pojedynczej klatki, ze średnią wartością 565 MB/s i wartością szczytową 2,30 GB/s

Zalecamy średnią przepustowość odczytu pamięci tekstur nie większą niż 1 GB/s, a maksymalną przepustowość nie większą niż 3 GB/s. Odsetek nieudanych odczytów z pamięci podręcznej L1 tekstur nie powinien przekraczać 10%. Wyższe wartości przepustowości lub pamięci podręcznej poziomu 1 mogą wskazywać na poważniejsze problemy z teksturami, w tym:

  • Tekstury są za duże: duże tekstury zwiększają rozmiar pakietu, są droższe i mogą zmniejszać wydajność pamięci podręcznej.
  • Tekstury są nieskompresowane: wszystkie telefony z Androidem obsługują pewne typy kompresji tekstur, np. ETC1 lub ASTC. Tekstury powinny być skompresowane, aby zmniejszyć rozmiar pakietu i przepustowość tekstur.
  • Inne: należy wziąć pod uwagę różne inne kwestie związane z teksturami, w tym tekstury o rozmiarach będących potęgą liczby 2, mapowanie mip, filtrowanie anizotropowe i inne. Niektóre z nich można zaobserwować w profilu systemu (jak opisano poniżej), a inne mogą wymagać dokładniejszego zbadania.

W przypadku gier trójwymiarowych z dowolną kamerą komponenty tekstur powinny korzystać z mapowania mip, aby obiekty znajdujące się w dużej odległości od kamery miały mniejszą przepustowość pamięci, lepszą wydajność pamięci podręcznej tekstur i lepszą jakość obrazu. W przypadku urządzeń korzystających z procesorów graficznych Qualcomm Adreno liczniki % Non-Base Level Textures o średniej wartości poniżej 10% mogą wskazywać na nieodpowiednie mapowanie mip.

Tekstury na poziomie innym niż podstawowy dla pojedynczej klatki o średniej wartości 9, 2%
Rysunek 2. Tekstury na poziomie innym niż podstawowy dla pojedynczej klatki, ze średnią wartością 9,2%

Kolejnym aspektem jest filtrowanie anizotropowe, które jest opisywane przez licznik % filtrowania anizotropowego w przypadku procesorów graficznych Qualcomm Adreno. Określa on odsetek teksteli, które są filtrowane anizotropowo. Chociaż może to poprawić jakość obrazu w niektórych grach, może być też bardzo kosztowne, dlatego należy rozważyć, czy warto ponosić koszty związane z wydajnością procesora graficznego.

Odsetek filtrowania anizotropowego w przypadku pojedynczej klatki, ze średnią wartością 10,8%
Rysunek 3. Odsetek filtrowania anizotropowego dla pojedynczej klatki, ze średnią wartością 10,8%

Najlepszym sposobem na zdiagnozowanie bardziej szczegółowych problemów jest wykonanie śledzenia profilu klatki w celu przeanalizowania zasobów tekstur.