Co oznacza Statystyka wykorzystania kafelków w iPhonie OpenGL ES?

Próbowałem wykonać kilka optymalizacji wydajności OpenGL ES w celu zwiększenia liczby trójkątów na sekundę, które jestem w stanie renderować w mojej aplikacji na iPhone ' a, ale trafiłem w ceglaną ścianę. Próbowałem przekonwertować typy danych OpenGL ES ze stałych na zmiennoprzecinkowe( zgodnie z zaleceniem Apple ), przeplatać moje obiekty bufora wierzchołków i minimalizować zmiany w stanie rysunku, ale żadna z tych zmian nie zmieniła szybkości renderowania. Bez względu na wszystko. nie mogę wcisnąć mojej aplikacji powyżej 320,000 trójkątów / s na iPhone 3G z systemem operacyjnym 3.0. Według tego benchmarka, powinienem być w stanie osiągnąć 687,000 trójkątów/s na tym sprzęcie z gładkim cieniowaniem, którego używam.

W moich testach, kiedy uruchamiam narzędzie wydajności OpenGL ES w Instruments przeciwko działającemu urządzeniu, widzę statystykę" wykorzystanie kafelków "sięgającą prawie 100% podczas renderowania mojego benchmarka, ale "wykorzystanie renderera" dociera tylko do około 30%. Może to być podpowiedź, co jest wąskim gardłem w procesie wyświetlania, ale nie wiem, co te wartości oznaczają, i nie znalazłem żadnej dokumentacji na ich temat. Czy ktoś ma dobry opis co to i inne statystyki w iPhonie OpenGL ES oznaczają? Wiem, że PowerVR MBX Lite W iPhone 3G jest rendererem bazującym na kafelkach, ale nie jestem pewien jaka byłaby różnica między rendererem a Tilerem w tym Architektura.

Jeśli to w jakikolwiek sposób pomoże, kod źródłowy (licencjonowany przez BSD) do tej aplikacji jest dostępny jeśli chcesz pobrać i przetestować go samodzielnie. W obecnej konfiguracji, rozpoczyna się mały benchmark za każdym razem, gdy ładujesz nową strukturę molekularną i wyprowadza Trójkąty / s do konsoli.

Author: Brad Larson, 2009-08-17

2 answers

Wartości procentowe wykorzystania kafelków i renderera mierzą cykl pracy odpowiednio sprzętu do przetwarzania wierzchołków i fragmentów. W przypadku MBX wykorzystanie kafelków zazwyczaj skaluje się wraz z ilością danych wierzchołków wysyłanych do GPU (zarówno pod względem liczby wierzchołków, jak i rozmiaru atrybutów wysyłanych na wierzchołek), a wykorzystanie fragmentów zwykle wzrasta wraz z nadmiernym rysowaniem i próbkowaniem tekstur.

W Twoim przypadku najlepiej byłoby zmniejszyć rozmiar każdego wierzchołek, który wysyłasz. Na początek, spróbowałbym połączyć Twoje atomy i wiązania według koloru i wysłać każdy z tych pojemników za pomocą stałego koloru zamiast tablicy. Sugerowałbym również zbadanie, czy spodenki są odpowiednie dla Twoich pozycji i normalnych, biorąc pod uwagę odpowiednie skalowanie. W tym przypadku może być również konieczne bin według pozycji, jeśli szorty przeskalowane w celu zapewnienia wystarczającej precyzji nie pokrywają potrzebnego zakresu. Tego rodzaju techniki mogą wymagać dodatkowych wywołań rysowania, ale podejrzewam, że poprawa przepustowości wierzchołków przewyższy dodatkowy narzut procesora na wywołanie losowania.

Zauważ, że ogólnie korzystne (na MBX i w innych miejscach) jest upewnienie się, że każdy atrybut wierzchołka zaczyna się na granicy 32-bitowej, co oznacza, że powinieneś umieścić swoje pozycje i normal na 4 komponenty, jeśli przełączysz je na krótkie. Osobliwości platformy MBX sprawiają również, że chcesz rzeczywiście włączyć komponent w pozycji w wywołaniu do glVertexPointer w tym case.

Możesz również rozważyć zastosowanie alternatywnych metod oświetlenia, takich jak DOT3 dla danych wielokątów, szczególnie sfer, ale wymaga to szczególnej ostrożności, aby upewnić się, że nie tworzysz fragmentu renderowania lub nieumyślnie wysyłasz więcej danych wierzchołków niż wcześniej.

 26
Author: Pivot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-22 17:15:03

Świetna odpowiedź, @ Pivot! Dla odniesienia, ten dokument Apple definiuje te terminy:

  • Wykorzystanie Renderera % . Procent czasu, jaki procesor graficzny spędził na przetwarzaniu fragmentów.
  • Wykorzystanie Tilera % . Procent czasu, jaki procesor graficzny spędził na przetwarzaniu wierzchołków i układaniu płytek.
  • Wykorzystanie Urządzenia % . Procent czasu, jaki procesor graficzny spędził na tworzeniu kafelków lub renderowaniu.
 6
Author: Rose Perrone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-11 05:00:57