Narzędzia i zaawansowane funkcje

Debugery

Debugowanie z użyciem warstwy walidacji

Interfejs Vulkan został zaprojektowany z myślą o wysokiej wydajności i niskim obciążeniu przetworników. Dlatego domyślnie obejmuje tylko bardzo ograniczone funkcje sprawdzania błędów i debugowania. Jeśli zrobisz coś nie tak, sterownik często się zawiesza, zamiast zwracać kod błędu, lub, co gorsza, będzie sprawiał wrażenie, że działa na Twojej karcie graficznej, ale na innych działa całkowicie.

Aby umożliwić obszerne testy podczas programowania, Vulkan udostępnia warstwy walidacyjne, czyli fragmenty kodu, które można wstawiać między interfejsem API i sterownikiem grafiki. Dzięki temu można na przykład przeprowadzać dodatkowe testy parametrów funkcji i śledzić problemy z zarządzaniem pamięcią. Możesz włączać warstwy weryfikacji podczas programowania i całkowicie je wyłączać podczas publikowania aplikacji.

Warstwy walidacji może napisać każdy, ale Khronos udostępnia jeden standardowy zestaw o nazwie VK_LAYER_KHRONOS_validation. Na stronie pakietu NDK Androida zapoznaj się z warstwami walidacji Vulkana na Androidzie, aby włączyć warstwę walidacji w swojej aplikacji.

Dokument renderowania

RenderDoc to kolejne zaawansowane narzędzie typu open source, które pozwala przechwycić klatkę do analizy i analizy. To zaawansowane narzędzie, z którego programiści korzystają do debugowania renderowanych scen. Obsługuje on interfejs Vulkan na Androidzie, ale aby aplikacja działała, musi być ustawiona jako możliwa do debugowania.

Informacje o tym, jak skonfigurować i używać funkcji RenderDoc w aplikacji na Androida, znajdziesz w artykule Jak używać narzędzia RenderDoc na Androidzie.

Biblioteki do przechwytywania i ponownego odtwarzania

Efekt GFXRekonstrukcja

GFXReconstruct to projekt typu open source, który udostępnia narzędzia do przechwytywania i odtwarzania wywołań interfejsu API grafiki wykonywanych przez aplikację. Zarejestrowany log czasu może zostać później ponownie odtworzony, aby zrekonstruować charakterystyczne dla grafiki zachowanie zarejestrowanej aplikacji. Jedną z głównych zalet GFXReconstruct jest to, że umożliwia korzystanie z niej w opublikowanej aplikacji (gdy wyłączysz atrybut android:debuggable).

Więcej informacji znajdziesz w repozytorium projektu. Informacje o konfigurowaniu i korzystaniu z Vulkana na Androidzie znajdziesz w artykule GFXReconstruct API Capture and Replay na Androida.

Pamiętaj, że plików śledzenia nie można przenosić, co oznacza, że nie można przechwycić pliku na jednym urządzeniu i odtworzyć go ponownie na innym (z innymi wersjami systemu operacyjnego, chipsetami, a nawet wersją sterownika).

Programy profilujące

Android GPU Inspector (AGI)

Android GPU Inspector (AGI) to program do profilowania grafiki opracowany na potrzeby Androida, który obejmuje profil systemu i program do profilowania ramek. Zapewnia ono ogólne informacje o profilowaniu, które pozwalają zrozumieć profil wydajności gry i zidentyfikować wąskie gardła.

Aby pobrać interfejs AGI i dowiedzieć się, jak z niego korzystać, odwiedź stronę Android GPU Inspector.

Program profilujący w Android Studio

Program profilujący w Android Studio to przydatne narzędzie do profilowania wydajności aplikacji. Nie jest ona jednak przystosowana do profilowania grafiki. Składa się z jednego z tych programów: CPU Profiler, Memory Profiler, Network Profiler, Energy Profiler, PowerProfiler i Monitor zdarzeń.

Więcej informacji o konfigurowaniu i używaniu Android Studio Profiler znajdziesz w sekcji Profilowanie wydajności aplikacji.

Programy profilujące OEM

Narzędzia w tej sekcji są przeznaczone dla OEM i mogą nie działać na urządzeniach z innymi układami scalonymi.

ARM Performance Studio na komórki

Arm Performance Studio na komórki to nowa nazwa Arm Mobile Studio. Jest to zestaw narzędzi zawierający Analizator grafiki i Frame Advisor, które ułatwiają identyfikowanie i rozwiązywanie problemów z wydajnością procesorów graficznych ARM.

Więcej informacji znajdziesz w witrynie Arm Performance Studio for Mobile.

ARM PerfDoc dla GPU w Mali

PerfDoc to warstwa Vulkan opracowana w celu weryfikacji aplikacji pod kątem sprawdzonych metod ARM dotyczących GPU w Mali. Od tego czasu został scalony z VK_LAYER_KHRONOS_validation i jest zasadniczo częścią standardowych warstw walidacji Vulkana.

Informacje o tym, jak z niego korzystać, znajdziesz w sekcji Debugowanie z warstwą weryfikacji.

Program profilujący Qualcomm Snapdragon

Qualcomm Snapdragon Profiler to oprogramowanie do profilowania opracowane przez Qualcomm dla programistów aplikacji. Umożliwia ono analizę wydajności procesora, GPU, DSP, pamięci, mocy, cieplnej i sieci w celu identyfikacji wąskich gardła układów chipsetów.

Więcej informacji znajdziesz w artykule Snapdragon Profiler w Qualcomm Developer Network.

Zegarek GPU Samsung

GPUWatch firmy Samsung to narzędzie do obserwowania aktywności GPU na urządzeniach Samsung. W przeciwieństwie do innych narzędzi możesz używać tego narzędzia bezpośrednio z urządzenia mobilnego, dzięki czemu bardzo łatwo jest od razu sprawdzić wydajność aplikacji, nawet jeśli nie masz dostępu do innego komputera hostującego.

Więcej informacji na temat włączania tej funkcji znajdziesz w przewodniku użytkownika.

Nagrywarka

PVRTune firmy Imagination Technologies umożliwia programistom profilowanie aplikacji na sprzęcie PowerVR w czasie rzeczywistym za pomocą szerokiej gamy liczników i wskaźników. Umożliwia też zapisywanie sesji na potrzeby dalszej analizy niskopoziomowej i wykrywania wąskich gardła wydajności.

Więcej informacji o korzystaniu z PVRTune znajdziesz w instrukcji obsługi.

Narzędzia do migracji

Konwertuję cieniowanie z GLSL na SPIR-V

Interfejs Vulkan API wymaga, aby programy do cieniowania były udostępniane w formacie binarnym SPIR-V. Konwencja ta różni się od OpenGL ES, gdzie można przesyłać kod źródłowy napisany w języku cieniowania w OpenGL (GLSL) w postaci ciągów tekstowych.

NDK r12 i nowsze zawierają bibliotekę środowiska wykonawczego do kompilowania cieniowania GLSL do SPIR-V, z którego może korzystać Vulkan. Kompilator shaderc może służyć do kompilowania programów do cieniowania zapisanych w GLSL do SPIR-V. Jeśli Twoja gra korzysta z HLSL, DirectXShaderCompiler obsługuje wyjście SPIR-V.

Zwykle w ramach procesu tworzenia zasobów gry musisz skompilować programy do cieniowania w trybie offline i dodać moduły SPIR-V do zasobów środowiska wykonawczego.

Więcej informacji na temat procesu kompilacji programu Vulkan dla aplikacji Vulkan znajdziesz w sekcji poświęconej kompilacjom aplikacji Vulkan na Androidzie w sekcji NDK.

Funkcje zaawansowane

Zintegruj Android Frame Pacing z mechanizmem renderowania Vulkan

Biblioteka Android Frame Tempo (określana również jako Replacepy) pomaga grom z serii Vulkan płynnie renderować reklamy i utrzymywać odpowiednie tempo, by zapewnić synchronizację pętli renderowania gry z podsystemem wyświetlacza systemu operacyjnego i bazowym sprzętem wyświetlacza.

Prawidłowe tempo eliminuje artefakty widoczne jako rozdarcie, optymalizuje zużycie energii przez synchronizację między odświeżeniami ekranu i wyświetlaniem klatek, a także eliminuje zacięcia dzięki stabilizacji liczby klatek. Więcej informacji o znaczeniu tempa klatek znajdziesz w sekcji Biblioteka tempa klatek w AGDK.

Więcej informacji o integrowaniu tempa klatek z grą znajdziesz w artykule o integrowaniu funkcji Android Frame Pacing z mechanizmem renderowania Vulkan.

Obsługa orientacji urządzenia przy użyciu wstępnego obracania interfejsu Vulkan

Obsługa rotacji powierzchni poza aplikacją może być bezpłatna. Nawet w niektórych urządzeniach wyższej klasy z oddzielnym procesorem Display (DPU) Twoja aplikacja wciąż będzie musiała zapłacić wymierną utratę wydajności, a jej wpływ będzie zależał od tego, czy Twoja aplikacja będzie kierowana na procesor, czy na GPU.

Interfejs Vulkan umożliwia programistom określenie na urządzeniach znacznie większej ilości informacji o stanie renderowania w porównaniu do trybu OpenGL. Jedną z takich informacji jest orientacja urządzenia i jej związek z renderowaniem orientacji powierzchni. Ta funkcja pozwala na wdrożenie rotacji wstępnej, aby jak najlepiej wykorzystać możliwości interfejsu Vulkan na Androidzie.

Więcej informacji na temat efektywnej obsługi rotacji urządzeń w aplikacji Vulkan znajdziesz w tym artykule i w odpowiedniej aplikacji demonstracyjnej.

Optymalizuj z mniejszą precyzją

Format numeryczny danych graficznych i obliczeń programu do cieniowania może mieć duży wpływ na wydajność gry. Większość obliczeń i danych we nowoczesnej grafice 3D wykorzystuje liczby zmiennoprzecinkowe. Interfejs Vulkan na Androidzie używa liczb zmiennoprzecinkowych o rozmiarze 32 lub 16 bitów. 32-bitowa liczba zmiennoprzecinkowa jest często nazywana pojedynczą precyzją lub pełną precyzją. Chociaż w interfejsie Vulkan definiowany jest 64-bitowy typ zmiennoprzecinkowy, zwykle nie jest on obsługiwany i nie zalecamy jego stosowania.

Zajrzyj do artykułu Optymalizacja z mniejszą precyzją, aby dowiedzieć się, jak zoptymalizować aplikację Vulkan pod kątem maksymalnej wydajności w arytmecie.