Debugger
Fehlerbehebung mit Validierungsschicht
Vulkan ist auf hohe Leistung und wenig Treiber ausgelegt. Zu diesem Zweck enthält sie standardmäßig nur sehr begrenzte Funktionen zur Fehlerprüfung und Fehlerbehebung. Wenn Sie einen Fehler machen, stürzt der Treiber häufig ab, anstatt einen Fehlercode zurückzugeben. Noch schlimmer: Es scheint, dass er auf Ihrer Grafikkarte funktioniert, auf anderen aber komplett ausfällt.
Vulkan bietet Validierungsschichten, um umfangreiche Prüfungen während der Entwicklung zu ermöglichen. Das sind Code-Snippets, die zwischen der API und dem Grafiktreiber eingefügt werden können, um z. B. zusätzliche Prüfungen von Funktionsparametern durchzuführen oder Probleme bei der Speicherverwaltung zu verfolgen. Sie können Validierungsebenen während der Entwicklung aktivieren und sie vollständig deaktivieren, wenn Sie Ihre Anwendung ohne Aufwand veröffentlichen.
Validierungsebenen können von jedem geschrieben werden, aber Khronos bietet einen einzigen Standardsatz namens VK_LAYER_KHRONOS_validation
. Sehen Sie sich auf der NDK-Seite für Android die Vulkan-Validierungsebenen unter Android an, um die Validierungsschicht in Ihrer App zu aktivieren.
RenderDoc
RenderDoc ist ein weiteres leistungsstarkes Open-Source-Tool, mit dem Sie einen Frame zur Prüfung und Analyse erfassen können. Es ist ein sehr leistungsstarkes Tool, das von Grafikprogrammierern verwendet wurde, um Fehler in gerenderten Szenen zu beheben. Vulkan wird unter Android gut unterstützt. Ihre App muss jedoch als Debug-fähig festgelegt sein, damit sie funktioniert.
Informationen zur Einrichtung und Verwendung in deiner Android-App findest du unter Wie verwende ich RenderDoc unter Android?.
Bibliotheken aufnehmen / noch einmal abspielen
GFXRekonstrukt
GFXReconstruct ist ein Open-Source-Projekt, das Tools zum Erfassen und Wiedergeben von Grafik-API-Aufrufen bereitstellt, die von einer Anwendung ausgeführt werden. Der aufgezeichnete Trace kann später erneut wiedergegeben werden, um das grafikspezifische Verhalten der erfassten Anwendung zu rekonstruieren. Einer der Hauptvorteile von GFXReconstruct besteht darin, dass Sie es in Ihrer veröffentlichten Anwendung verwenden können, wenn Sie android:debuggable deaktiviert haben.
Weitere Informationen finden Sie im Projekt-Repository. Informationen zur Einrichtung und Nutzung von Vulkan unter Android finden Sie unter GFXReconstruct API Capture and Replay für Android.
Beachten Sie, dass die Trace-Dateien nicht portierbar sind. Das bedeutet, dass Sie die Datei nicht auf einem Gerät erfassen und auf einem anderen Gerät mit anderen Betriebssystemversionen, Chipsätzen oder sogar Treiberversion noch einmal wiedergeben können.
Profiler
Android GPU Inspector (AGI)
Android GPU Inspector (AGI) ist ein für Android entwickelter Grafikprofilr, der ein Systemprofil und einen Frame Profiler enthält. Sie bietet allgemeine Profilinformationen, mit denen Sie das Leistungsprofil Ihres Spiels verstehen und Engpässe identifizieren können.
Auf der Website Android GPU Inspector können Sie AGI herunterladen und erfahren, wie Sie es verwenden.
Android Studio-Profiler
Android Studio Profiler ist ein nützliches Tool, mit dem Sie die Leistung Ihrer App erstellen können. Sie ist jedoch nicht speziell für die Erstellung von Grafikprofilen gedacht. Es besteht aus CPU Profiler, Speicher Profiler, Network Profiler, Energy Profiler, Power Profiler und Event Monitor.
Weitere Informationen zum Einrichten und Verwenden von Android Studio Profiler finden Sie im Abschnitt Profil der App-Leistung erstellen.
OEM-Profiler
Die Tools in diesem Abschnitt sind OEM-spezifisch und funktionieren möglicherweise nicht auf Geräten mit anderen Chips.
ARM Performance Studio für Mobilgeräte
Arm Performance Studio for Mobile ist der neue Name für Arm Mobile Studio. Zu dieser Suite von Tools gehören Graphics Analyzer und Frame Advisor, mit denen Sie Leistungsprobleme von ARM-GPUs erkennen und beheben können.
Weitere Informationen finden Sie auf der Website Arm Performance Studio for Mobile.
ARM PerfDoc für Mali GPUs
PerfDoc ist eine Vulkan-Ebene, die entwickelt wurde, um Anwendungen anhand der Mali-GPU-Best Practices von ARM zu validieren. Es wurde inzwischen mit VK_LAYER_KHRONOS_validation zusammengeführt und ist im Wesentlichen Teil der standardmäßigen Vulkan-Validierungsebenen.
Weitere Informationen zur Verwendung finden Sie im Abschnitt Fehlerbehebung mit der Validierungsschicht.
Qualcomm Snapdragon-Profiler
Qualcomm Snapdragon Profiler ist eine Profilerstellungssoftware, die von Qualcomm für Anwendungsentwickler entwickelt wurde, um CPU-, GPU-, DSP-, Arbeitsspeicher-, Energie-, Wärme- und Netzwerkleistung zu analysieren und Engpässe in den Chipsätzen zu erkennen.
Weitere Informationen finden Sie unter Snapdragon Profiler im Qualcomm Developer Network.
Samsung GPUWatch
Die GPUWatch von Samsung ist ein Tool zur Beobachtung der GPU-Aktivität auf Samsung-Geräten. Im Gegensatz zu den anderen Tools können Sie dieses Tool direkt über Ihr Mobilgerät verwenden. Daher ist es sehr praktisch, die Leistung Ihrer Anwendung sofort zu überprüfen, auch wenn Sie keinen Zugriff auf einen anderen Hostcomputer haben.
Weitere Informationen zur Aktivierung finden Sie im Nutzerhandbuch.
PwRTune
Mit dem PVRTune von Imagination Technologies können Entwickler Anwendungen auf PowerVR-Hardware in Echtzeit mit einer Vielzahl von Zählern und Messwerten erstellen. Außerdem kann die Sitzung gespeichert werden, um weitere detaillierte Analysen durchzuführen und Leistungsengpässe zu erkennen.
Weitere Informationen zur Verwendung von PVRTune finden Sie im Handbuch.
Migrationstools
Shader von GLSL in SPIR-V konvertieren
Die Vulkan API erwartet, dass Shader-Programme im binären SPIR-V-Format bereitgestellt werden. Diese Konvention unterscheidet sich von OpenGL ES, bei dem Sie Quellcode, der in der OpenGL Shading Language (GLSL) geschrieben wurde, als Textstrings senden können.
NDK r12 und höher enthält eine Laufzeitbibliothek zum Kompilieren von GLSL-Shadern in SPIR-V, die von Vulkan verwendet werden kann. Mit dem Compiler shaderc können in GLSL geschriebene Shader-Programme in SPIR-V kompiliert werden. Wenn Ihr Spiel HLSL verwendet, unterstützt der DirectXShaderCompiler die SPIR-V-Ausgabe.
Normalerweise müssen Sie Shader-Programme offline als Teil des Asset-Build-Prozesses für Ihr Spiel kompilieren und die SPIR-V-Module als Teil Ihrer Laufzeit-Assets einbinden.
Weitere Informationen zum Kompilierungsprozess von Shader für Ihre Vulkan-Anwendung finden Sie unter Vulkan-Shader-Compiler unter Android im Android-NDK-Abschnitt.
Erweiterte Funktionen
Android Frame Pacing in den Vulkan-Renderer integrieren
Die Android Frame Pacing-Bibliothek (auch als Swappy bezeichnet) hilft Vulkan-Spielen, ein reibungsloses Rendering und korrektes Tempo zu erreichen, um die Renderingschleife des Spiels mit dem Anzeigesubsystem des Betriebssystems und der zugrunde liegenden Display-Hardware synchron zu halten.
Durch die korrekte Taktung werden visuelle Artefakte, die als „Tearing“ bezeichnet werden, beseitigt. Sie optimieren den Stromverbrauch durch Synchronisierung zwischen Anzeigeaktualisierungen und der Frame-Präsentation und vermeiden Verzögerungen durch Stabilisierung der Framerate. Weitere Informationen zur Bedeutung der Frame-Taktung finden Sie im Abschnitt Frame Pacing Library der AGDK.
Weitere Informationen zur Integration des Frame-Pacing in Ihr Spiel finden Sie unter Android Frame Pacing in den Vulkan-Renderer integrieren.
Geräteausrichtung mit Vulkan-Vorrotation behandeln
Die Oberflächenrotation außerhalb der App ist möglicherweise nicht kostenlos. Selbst auf einigen High-End-Geräten mit einer dedizierten Display Processing Unit (DPU) kann es zu einer messbaren Leistungseinbußen kommen. Die Auswirkungen hängen davon ab, ob Ihre Anwendung CPU- oder GPU-gebunden ist.
Vulkan bietet Entwicklern die Möglichkeit, Geräten viel mehr Informationen zum Renderingstatus als OpenGL anzugeben. Eine dieser Informationen sind die Geräteausrichtung und ihre Beziehung zur Rendering-Oberflächenausrichtung. Mit dieser Funktion kannst du eine Vorrotation implementieren, um Vulkan auf Android-Geräten optimal zu nutzen.
Weitere Informationen dazu, wie Sie die Geräterotation in Ihrer Vulkan-Anwendung effizient handhaben, finden Sie unter Geräteausrichtung mit Vulkan-Vorrotation und in der zugehörigen Demo-App.
Mit geringerer Präzision optimieren
Das numerische Format von Grafikdaten und Shader-Berechnungen kann einen erheblichen Einfluss auf die Leistung Ihres Spiels haben. Für die meisten Berechnungen und Daten in modernen 3D-Grafiken werden Gleitkommazahlen verwendet. Vulkan verwendet unter Android Gleitkommazahlen mit 32 oder 16 Bit. Eine 32-Bit-Gleitkommazahl wird im Allgemeinen als einfache oder vollständige Genauigkeit bezeichnet. Obwohl der 64-Bit-Gleitkommatyp in Vulkan definiert ist, wird er normalerweise nicht unterstützt und seine Verwendung wird nicht empfohlen.
Unter Mit verringerter Genauigkeit optimieren erfahren Sie, wie Sie Ihre Vulkan-Anwendung für eine optimale Leistung bei Ihren Rechenaufgaben optimieren können.