工具和進階功能

偵錯工具

使用驗證層進行偵錯

Vulkan 專為高效能且降低驅動程式負擔而設計,為達成此目標,根據預設,它僅包含極少數的錯誤檢查和偵錯功能。萬一發生任何問題,驅動程式通常會當機,不會傳回錯誤代碼,更糟的是,它看起來可以在圖形卡上正常運作,但在其他情況下會完全失敗。

為了在開發期間啟用廣泛檢查,Vulkan 提供驗證層,這是可在 API 和圖形驅動程式之間插入的程式碼片段,可執行對函式參數執行額外檢查,以及追蹤記憶體管理問題等操作。您可以在開發期間啟用驗證層,並在發布應用程式時完全停用這些層,造成負擔為零。

驗證層可由任何人編寫,但 Khronos 提供名為 VK_LAYER_KHRONOS_validation 的單一標準組合。請前往 Android NDK 頁面查看 Android 上的 Vulkan 驗證層,在應用程式中啟用驗證層。

RenderDoc

RenderDoc 是另一項功能強大的開放原始碼工具,可讓您擷取影格以進行檢查和分析。圖形程式設計人員運用這項強大的工具,對轉譯場景進行偵錯。雖然您的應用程式必須設為可偵錯,Android 才能正常運作,但支援 Vulkan。

如要瞭解如何在 Android 應用程式中設定及使用 RenderDoc,請參閱「如何在 Android 上使用 RenderDoc」。

擷取 / 重播程式庫

GFX 重建

GFXRebuild 是一項開放原始碼專案,可提供工具,用於擷取及重播應用程式執行的圖形 API 呼叫。系統之後可以重播錄製的追蹤記錄,以重建已擷取應用程式的圖形專屬行為。GFXRestruct 的主要優點之一,就是可讓您在已發布的應用程式中使用此工具 (若已關閉 android:debuggable)。

詳情請造訪專案存放區。如要在 Android 上設定和使用 Vulkan,請參閱 Android 適用的 GFXRebuild API Capture and Replay for Android

請注意,追蹤記錄檔案無法攜帶,這表示您無法在某部裝置上擷取檔案,並在另一部裝置上重播該檔案 (具有不同的 OS 版本、晶片,甚至驅動程式版本)。

分析器

Android GPU 檢查器 (AGI)

Android GPU 檢查器 (AGI) 是專為 Android 打造的圖形分析器,內含系統設定檔影格分析器。其中提供高階剖析資訊,讓您瞭解遊戲的效能設定檔,並找出瓶頸。

如要下載 AGI 並瞭解其使用方式,請造訪 Android GPU 檢查器網站。

Android Studio 分析器

Android Studio Profiler 是分析應用程式效能的實用工具。不過,它並非專為圖像剖析設計。當中包含 CPU 分析器、記憶體分析器、網路分析器、能源分析器、電源分析器和事件監控器。

如要進一步瞭解如何設定及使用 Android Studio Profiler,請參閱「分析應用程式效能」一節。

原始設備製造商 (OEM) 分析器

本節中的工具僅適用於原始設備製造商 (OEM),可能不適用於在其他晶片上執行的裝置。

適用於行動裝置的 ARM Performance Studio

Arm Performance Studio for Mobile 是 Arm Mobile Studio 的新名稱。這套工具包含圖形分析工具Frame Advisor,可協助您找出並修正 ARM GPU 的效能問題。

詳情請參閱 Arm Performance Studio for Mobile 網站。

Mali GPU 適用的 ARM PerfDoc

PerfDoc 是開發的 Vulkan 層,可依據 ARM 的 Mali GPU 最佳做法驗證應用程式。此後,其已合併為 VK_LAYER_KHRONOS_validation,基本上是標準 Vulkan 驗證層的一部分。

如要瞭解如何使用這項功能,請參閱「使用驗證層偵錯」一節。

Qualcomm Snapdragon 分析器

Qualcomm Snapdragon Profiler 是由 Qualcomm 開發的剖析軟體,可讓應用程式開發人員分析 CPU、GPU、DSP、記憶體、電源、熱能和網路效能,找出晶片組上的瓶頸。

詳情請參閱 Qualcomm Developer Network 上的 Snapdragon Profiler

Samsung GPUWatch

Samsung 的 GPUWatch 是用來觀察 Samsung 裝置的 GPU 活動的工具。與其他工具不同的是,您可以直接在行動裝置上使用這項工具,因此即使無法存取其他主機電腦,還是能立即檢查應用程式效能,非常便利。

如要進一步瞭解如何啟用這項功能,請參閱使用手冊

PVRTune

Imagination Technologies 的 PVRTune 讓開發人員即時剖析 PowerVR 硬體上的應用程式,並運用多種計數器和指標。這個 API 也能儲存工作階段,以供進一步進行低階分析及偵測效能瓶頸。

如要進一步瞭解如何使用 PVRTune,請參閱使用手冊

遷移工具

將著色器從 GLSL 轉換為 SPIR-V

Vulkan API 要求著色器程式以 SPIR-V 二進位中繼格式提供。此慣例與 OpenGL ES 不同,在 OpenGL ES 中,您可以將使用 OpenGL 著色語言 (GLSL) 編寫的原始碼做為文字字串提交。

NDK r12 以上版本包含執行階段程式庫,可將 GLSL 著色器編譯為 SPIR-V,供 Vulkan 使用。以 GLSL 編寫的著色器程式可透過 shaderc 編譯器編譯為 SPIR-V。如果您的遊戲使用 HLSL,DirectXShaderCompiler 可支援 SPIR-V 輸出內容。

一般來說,您需要在遊戲的資產建構程序中,以離線方式編譯著色器程式,並將 SPIR-V 模組納入執行階段資產中。

如要進一步瞭解 Vulkan 應用程式的著色器編譯程序,請參閱 Android NDK 章節中的「Android 上的 Vulkan 著色器編譯器」。

進階功能

將 Android Frame Pacing 整合至 Vulkan 轉譯器

Android Frame Pacing 程式庫 (又稱為 Swappy) 可協助 Vulkan 遊戲流暢地呈現內容,並正確調整間隔,讓遊戲算繪迴圈能與 OS 螢幕子系統和基礎顯示硬體保持同步。

正確的使用速度可以消除畫面重新整理的視覺構件、盡可能減少螢幕重新整理和影格顯示之間的同步耗電量,並藉由維持影格速率穩定來避免卡頓。如要進一步瞭解影格同步的重要性,請參閱 AGDK 的「Frame Pacing Library」一節。

如要進一步瞭解如何將影格同步整合至遊戲,請參閱「將 Android Frame Pacing 整合至 Vulkan 轉譯器」。

使用 Vulkan 預旋轉功能處理裝置方向

應用程式外的途徑旋轉處理並非免費。即便是某些配備專屬螢幕處理器 (DPU) 的高階裝置,我們也可能會產生明顯的效能降低,而影響則取決於應用程式是受到 CPU 限製或 GPU 限制。

與 OpenGL 相比,Vulkan 可讓開發人員指定更多與裝置有關算繪狀態的資訊。這類資訊就是「裝置方向」,以及其與「算繪介面方向」的關係。這項功能可讓您實作預旋轉功能,充分運用 Android 上的 Vulkan。

如要進一步瞭解如何有效處理 Vulkan 應用程式中的裝置旋轉作業,請參閱「使用 Vulkan 預旋轉功能處理裝置方向」以及隨附的示範應用程式

降低精確度來最佳化效能

無論是圖像資料的數值格式,還是著色器的運算方式,都可能會對遊戲效能產生重大影響。新型 3D 圖像中的運算和資料多半都是採用浮點數。Android 上的 Vulkan 可使用大小為 32 或 16 位元的浮點數。32 位元浮點數通常稱為單精度或完整精確度。雖然 Vulkan 中定義了 64 位元浮點類型,但並不常見,因此不建議使用。

如要瞭解如何最佳化 Vulkan 應用程式,讓運算應用程式發揮最佳效能,請參閱「降低精確度來最佳化」。