目前網上關于Mali Graphics Debugger的使用,都是基于Android的,關于linux的沒有,寫下使用方式,供大家參考,以便後期查詢。
閱讀《ARM® Mali™ Graphics Debugger User Guide》是了解MGD最全面的途徑,裡面包括了如何設定MGD和使用MGD。
由于MGD裡會直接出現大量OpenGL ES的API,是以也可按需查閱《 OpenGL ES 3.0 Programming Guide 2nd Edition》。
本文所有操作,均可在User Guide中找到。如下所示:
Mali Graphics Debugger v4.7.0下載下傳位址
ARM官網
環境準備
1、在電腦裝好MGD,主機為Window版本。
2、準備好使用Mali GPU的目标機,目标機安裝linux,本文以Ubuntu 18.04為例。
Mali Graphics Debugger的使用方式相當靈活,官方文檔會提供不同平台的使用方式。
linux版本的使用相比Android版的簡單很多。
操作如下:
1、關閉兩邊防火牆,linux下關閉方法如下(ubuntu18.04),window下自行搜尋。
//安裝防火牆程式
sudo apt-get install ufw
//檢視目前防火牆狀态
sudo ufw status
//啟動防火牆
sudo ufw enable
sudo ufw default deny
//關閉防火牆
sudo ufw disable
2、設定同一網段IP,使主機、目标機可正常通信,可ping通
//linux端設定IP的簡單方式,每次開機得重設
sudo ifconfig etho 192.168.0.120
3、push檔案(mgddaemon、libinterceptor.so)到目标機指定目錄,方法不限。這裡我用的是FileZilla,簡單好用。
選擇目标機對應的架構目錄,本文以arm64為例。
以下檔案push
4、給mgddaemon添加執行權限,并運作
chmod +x mgddaemon
./mgddaemon
5、MGD端點選裝置連結,確定連結正确
6、使用執行Mali給定的庫,打開要Debug的應用
//LD_PRELOAD=/path/to/intercept/libinterceptor.so ./your_app
//linux下可運作的OpenGL ES應用程式較少,為簡單示範,可以使用glmark2-es為例
//如下方式安裝glmark2-es後,即安裝在系統目錄,任意路徑下均可運作glmark2-es
sudo apt-get install glmark2-es -y
LD_PRELOAD=/path/to/intercept/libinterceptor.so glmark2-es
7、至此,連結完成。可以在MGD端抓取想要的資訊。
MGD界面介紹
如下圖示:
1、顯示每幀的運作時長,主要記錄如下三個狀态,glClear、Renderpass、glDrawArrays以及狀态對應執行時長
2、每幀的運作過程,儲存每一幀的執行過程。其中,前面帶相機的是儲存的快照部分,儲存完整資訊
3、繪制過程的API調用
4、目前幀運作資料,後續會繼續說明
5、記錄狀态資訊,後續還會繼續說明
如下圖示:
1、操作過程中常用按鍵,包括主機-目标機的連結方法、暫停、下一幀、快照、
2、配置選項,在這裡可配置想要擷取的狀态,分OpenCL、OpenGL ES、Vulkan三大類,每一類中又包含子項
3、點選下方的幀,對應上方的運作狀态,可友善檢視某幀時長、位置
4、該界面在上面顯示API調用順序,這裡顯示shader程式。
5、包含多項資訊:Statistics、Function Call 、Buffers、Vertices、Uniforms、Target State。在性能、功能調試中,中間資料均可擷取。
6、各标題依次為:Assets、Renderbuffer、Framebuffers、Render Pass Dependencies、Textures、Frame Overrides、Shaders、Automated、Trace
綜上,該軟體基本已擷取到圖形渲染過程中GPU能擷取到的應用的大部分資料,在渲染問題Debug、性能調優中起到很好的支撐作用。
本質,還在GPU廠商在使用者态驅動庫中的調試手段的界面化展示。